Просмотр исходного кода

Merge remote-tracking branch 'upstream/MK3' into MK3_Dutch

Merge upstream/MK3
Fix conflicts
update Dutch translation
3d-gussner 3 лет назад
Родитель
Сommit
4d3aa1b59a
85 измененных файлов с 24173 добавлено и 19798 удалено
  1. 4 0
      .editorconfig
  2. 1 0
      .gitattributes
  3. 3 0
      .github/ISSUE_TEMPLATE/bug_report.md
  4. 2 2
      .gitignore
  5. 3 3
      Firmware/Configuration.h
  6. 2 2
      Firmware/ConfigurationStore.cpp
  7. 27 35
      Firmware/Configuration_adv.h
  8. 310 46
      Firmware/Dcodes.cpp
  9. 18 4
      Firmware/Dcodes.h
  10. 25 25
      Firmware/Marlin.h
  11. 2295 1255
      Firmware/Marlin_main.cpp
  12. 4 4
      Firmware/bootapp.c
  13. 27 20
      Firmware/cardreader.cpp
  14. 3 1
      Firmware/cardreader.h
  15. 7 4
      Firmware/config.h
  16. 367 10
      Firmware/eeprom.h
  17. 1 1
      Firmware/fastio.h
  18. 336 241
      Firmware/fsensor.cpp
  19. 40 11
      Firmware/fsensor.h
  20. 184 180
      Firmware/heatbed_pwm.cpp
  21. 91 0
      Firmware/la10compat.cpp
  22. 46 0
      Firmware/la10compat.h
  23. 3 1
      Firmware/language.h
  24. 3 2
      Firmware/menu.cpp
  25. 2 1
      Firmware/menu.h
  26. 6 2
      Firmware/mesh_bed_calibration.cpp
  27. 29 20
      Firmware/messages.c
  28. 7 0
      Firmware/messages.h
  29. 26 24
      Firmware/mmu.cpp
  30. 21 11
      Firmware/optiboot_w25x20cl.cpp
  31. 1 1
      Firmware/optiboot_w25x20cl.h
  32. 9 14
      Firmware/pat9125.c
  33. 3 3
      Firmware/pat9125.h
  34. 196 69
      Firmware/planner.cpp
  35. 26 11
      Firmware/planner.h
  36. 147 0
      Firmware/speed_lookuptable.cpp
  37. 118 139
      Firmware/speed_lookuptable.h
  38. 350 403
      Firmware/stepper.cpp
  39. 5 18
      Firmware/stepper.h
  40. 5 4
      Firmware/system_timer.h
  41. 284 131
      Firmware/temperature.cpp
  42. 17 5
      Firmware/temperature.h
  43. 2 0
      Firmware/thermistortables.h
  44. 0 10
      Firmware/timer02.c
  45. 0 7
      Firmware/timer02.h
  46. 126 0
      Firmware/tone04.c
  47. 25 0
      Firmware/tone04.h
  48. 521 403
      Firmware/ultralcd.cpp
  49. 11 7
      Firmware/ultralcd.h
  50. 4 0
      Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h
  51. 3 0
      Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h
  52. 4 1
      Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h
  53. 4 1
      Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h
  54. 4 1
      Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h
  55. 4 1
      Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h
  56. 16 5
      Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h
  57. 19 6
      Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h
  58. 44 13
      PF-build.sh
  59. 221 198
      README.md
  60. 3 2
      build.sh
  61. 1 1
      lang/lang-add.sh
  62. 1 1
      lang/lang-check.sh
  63. 121 35
      lang/lang_en.txt
  64. 153 40
      lang/lang_en_cz.txt
  65. 153 40
      lang/lang_en_de.txt
  66. 165 52
      lang/lang_en_es.txt
  67. 171 55
      lang/lang_en_fr.txt
  68. 184 70
      lang/lang_en_it.txt
  69. 253 232
      lang/lang_en_nl.txt
  70. 159 45
      lang/lang_en_pl.txt
  71. 592 531
      lang/po/Firmware.pot
  72. 1842 1782
      lang/po/Firmware_cs.po
  73. 1842 1787
      lang/po/Firmware_de.po
  74. 1842 1782
      lang/po/Firmware_es.po
  75. 1842 1782
      lang/po/Firmware_fr.po
  76. 1842 1782
      lang/po/Firmware_it.po
  77. 631 576
      lang/po/Firmware_nl.po
  78. 1842 1786
      lang/po/Firmware_pl.po
  79. 629 564
      lang/po/new/cs.po
  80. 632 577
      lang/po/new/de.po
  81. 645 585
      lang/po/new/es.po
  82. 641 581
      lang/po/new/fr.po
  83. 658 598
      lang/po/new/it.po
  84. 631 576
      lang/po/new/nl.po
  85. 636 580
      lang/po/new/pl.po

+ 4 - 0
.editorconfig

@@ -12,3 +12,7 @@ indent_style                = space
 indent_size                 = 4
 tab_width                   = 4
 max_line_length             = 100
+
+[lang/po/*.po]
+end_of_line                 = crlf
+trim_trailing_whitespace    = false

+ 1 - 0
.gitattributes

@@ -0,0 +1 @@
+lang/po/*.po text eol=crlf

+ 3 - 0
.github/ISSUE_TEMPLATE/bug_report.md

@@ -15,6 +15,9 @@ Please, before you create a new bug report, please make sure you searched in ope
 **MMU Upgrade** - [e.g. MMU2S, MMU2, MMU1]
 **MMU upgrade firmware version [e.g. 1.0.6, 1.0.6-RC2, ...]
 
+**SD card or USB/Octoprint**
+  Please let us know if you print via SD card or USB/Octoprint
+
 **Describe the bug**
   A clear and concise description of what the bug is.
   

+ 2 - 2
.gitignore

@@ -40,8 +40,8 @@ Firmware/Doc
 /lang/*.dat
 /lang/*.tmp
 /lang/*.out
-/lang/not_tran.txt
-/lang/not_used.txt
+/lang/not_tran*.txt
+/lang/not_used*.txt
 /lang/progmem1.chr
 /lang/progmem1.lss
 /lang/progmem1.txt

+ 3 - 3
Firmware/Configuration.h

@@ -16,8 +16,8 @@ extern uint16_t nPrinterType;
 extern PGM_P sPrinterName;
 
 // Firmware version
-#define FW_VERSION "3.8.1"
-#define FW_COMMIT_NR   2869
+#define FW_VERSION "3.9.0"
+#define FW_COMMIT_NR 3421
 // FW_VERSION_UNKNOWN means this is an unofficial build.
 // The firmware should only be checked into github with this symbol.
 #define FW_DEV_VERSION FW_VERSION_UNKNOWN
@@ -424,7 +424,7 @@ your extruder heater takes 2 minutes to hit the target on heating.
 #define DEFAULT_XJERK                10       // (mm/sec)
 #define DEFAULT_YJERK                10       // (mm/sec)
 #define DEFAULT_ZJERK                 0.4     // (mm/sec)
-#define DEFAULT_EJERK                 2.5     // (mm/sec)
+#define DEFAULT_EJERK                 4.5     // (mm/sec)
 
 //===========================================================================
 //=============================Additional Features===========================

+ 2 - 2
Firmware/ConfigurationStore.cpp

@@ -165,8 +165,8 @@ void Config_PrintSettings(uint8_t level)
 #endif
 	if (level >= 10) {
 #ifdef LIN_ADVANCE
-		printf_P(PSTR("%SLinear advance settings:\n   M900 K%.2f   E/D = %.2f\n"),
-			echomagic, extruder_advance_k, advance_ed_ratio);
+		printf_P(PSTR("%SLinear advance settings:%S   M900 K%.2f\n"),
+                 echomagic, echomagic, extruder_advance_K);
 #endif //LIN_ADVANCE
 	}
 }

+ 27 - 35
Firmware/Configuration_adv.h

@@ -152,7 +152,6 @@
 #define Z_HOME_RETRACT_MM 2
 //#define QUICK_HOME  //if this is defined, if both x and y are to be homed, a diagonal move will be performed initially.
 
-#define AXIS_RELATIVE_MODES {0, 0, 0, 0}
 #define MAX_STEP_FREQUENCY 40000 // Max step frequency for Ultimaker (5000 pps / half step). Toshiba steppers are 4x slower, but Prusa3D does not use those.
 //By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
 #define INVERT_X_STEP_PIN 0
@@ -268,43 +267,32 @@
 #endif
 
 /**
-    * Implementation of linear pressure control
-    *
-    * Assumption: advance = k * (delta velocity)
-    * K=0 means advance disabled.
-    * See Marlin documentation for calibration instructions.
-    */
+ * Linear Pressure Control v1.5
+ *
+ * Assumption: advance [steps] = k * (delta velocity [steps/s])
+ * K=0 means advance disabled.
+ *
+ * NOTE: K values for LIN_ADVANCE 1.5 differs from earlier versions!
+ *
+ * Set K around 0.22 for 3mm PLA Direct Drive with ~6.5cm between the drive gear and heatbreak.
+ * Larger K values will be needed for flexible filament and greater distances.
+ * If this algorithm produces a higher speed offset than the extruder can handle (compared to E jerk)
+ * print acceleration will be reduced during the affected moves to keep within the limit.
+ *
+ * See http://marlinfw.org/docs/features/lin_advance.html for full instructions.
+ * Mention @Sebastianv650 on GitHub to alert the author of any issues.
+ */
 #define LIN_ADVANCE
 
 #ifdef LIN_ADVANCE
-  #define LIN_ADVANCE_K 0 //Try around 45 for PLA, around 25 for ABS.
-
- /**
-        * Some Slicers produce Gcode with randomly jumping extrusion widths occasionally.
-        * For example within a 0.4mm perimeter it may produce a single segment of 0.05mm width.
-        * While this is harmless for normal printing (the fluid nature of the filament will
-        * close this very, very tiny gap), it throws off the LIN_ADVANCE pressure adaption.
-        *
-        * For this case LIN_ADVANCE_E_D_RATIO can be used to set the extrusion:distance ratio
-        * to a fixed value. Note that using a fixed ratio will lead to wrong nozzle pressures
-        * if the slicer is using variable widths or layer heights within one print!
-        *
-        * This option sets the default E:D ratio at startup. Use `M900` to override this value.
-        *
-        * Example: `M900 W0.4 H0.2 D1.75`, where:
-        *   - W is the extrusion width in mm
-        *   - H is the layer height in mm
-        *   - D is the filament diameter in mm
-        *
-        * Example: `M900 R0.0458` to set the ratio directly.
-        *
-        * Set to 0 to auto-detect the ratio based on given Gcode G1 print moves.
-        *
-        * Slic3r (including Prusa Slic3r) produces Gcode compatible with the automatic mode.
-        * Cura (as of this writing) may produce Gcode incompatible with the automatic mode.
-        */
-#define LIN_ADVANCE_E_D_RATIO 0 // The calculated ratio (or 0) according to the formula W * H / ((D / 2) ^ 2 * PI)
-                                // Example: 0.4 * 0.2 / ((1.75 / 2) ^ 2 * PI) = 0.033260135
+  #define LA_K_DEF    0        // Default K factor (Unit: mm compression per 1mm/s extruder speed)
+  #define LA_K_MAX    10       // Maximum acceptable K factor (exclusive, see notes in planner.cpp:plan_buffer_line)
+  #define LA_LA10_MIN LA_K_MAX // Lin. Advance 1.0 threshold value (inclusive)
+  //#define LA_FLOWADJ         // Adjust LA along with flow/M221 for uniform width
+  //#define LA_NOCOMPAT        // Disable Linear Advance 1.0 compatibility
+  //#define LA_LIVE_K          // Allow adjusting K in the Tune menu
+  //#define LA_DEBUG           // If enabled, this will generate debug information output over USB.
+  //#define LA_DEBUG_LOGIC     // @wavexx: setup logic channels for isr debugging
 #endif
 
 // Arc interpretation settings:
@@ -449,6 +437,10 @@ const unsigned int dropsegments=5; //everything with less than this number of st
   #undef BED_MINTEMP
   #undef BED_MAXTEMP
 #endif
+#if TEMP_SENSOR_AMBIENT == 0
+  #undef AMBIENT_MINTEMP
+  #undef AMBIENT_MAXTEMP
+#endif
 
 
 #endif //__CONFIGURATION_ADV_H

+ 310 - 46
Firmware/Dcodes.cpp

@@ -1,5 +1,6 @@
 #include "Dcodes.h"
-//#include "Marlin.h"
+#include "Marlin.h"
+#include "Configuration.h"
 #include "language.h"
 #include "cmdqueue.h"
 #include <stdio.h>
@@ -97,8 +98,26 @@ void print_mem(uint32_t address, uint16_t count, uint8_t type, uint8_t countperl
 	}
 }
 
-#ifdef DEBUG_DCODE3
+#if defined DEBUG_DCODE3 || defined DEBUG_DCODES
 #define EEPROM_SIZE 0x1000
+    /*!
+    ### D3 - Read/Write EEPROM <a href="https://reprap.org/wiki/G-code#D3:_Read.2FWrite_EEPROM">D3: Read/Write EEPROM</a>
+    This command can be used without any additional parameters. It will read the entire eeprom.
+    #### Usage
+    
+        D3 [ A | C | X ]
+    
+    #### Parameters
+    - `A` - Address (x0000-x0fff)
+    - `C` - Count (1-4096)
+    - `X` - Data (hex)
+	
+	#### Notes
+	- The hex address needs to be lowercase without the 0 before the x
+	- Count is decimal 
+	- The hex data needs to be lowercase
+	
+    */
 void dcode_3()
 {
 	DBG(_N("D3 - Read/Write EEPROM\n"));
@@ -167,7 +186,6 @@ void dcode_3()
 #define BOOT_APP_FLG_COPY  0x02
 #define BOOT_APP_FLG_FLASH 0x04
 
-extern uint8_t fsensor_log;
 extern float current_temperature_pinda;
 extern float axis_steps_per_unit[NUM_AXIS];
 
@@ -176,6 +194,14 @@ extern float axis_steps_per_unit[NUM_AXIS];
 #endif //0
 #define LOG(args...)
 
+    /*!
+    *
+    ### D-1 - Endless Loop <a href="https://reprap.org/wiki/G-code#G28:_Move_to_Origin_.28Home.29">D-1: Endless Loop</a>
+      
+          D-1
+      
+    *
+    */
 void dcode__1()
 {
 	printf_P(PSTR("D-1 - Endless loop\n"));
@@ -185,15 +211,22 @@ void dcode__1()
 
 #ifdef DEBUG_DCODES
 
+    /*!
+    ### D0 - Reset <a href="https://reprap.org/wiki/G-code#D0:_Reset">D0: Reset</a>
+    #### Usage
+    
+        D0 [ B ]
+    
+    #### Parameters
+    - `B` - Bootloader
+    */
 void dcode_0()
 {
 	if (*(strchr_pointer + 1) == 0) return;
 	LOG("D0 - Reset\n");
 	if (code_seen('B')) //bootloader
 	{
-		cli();
-		wdt_enable(WDTO_15MS);
-		while(1);
+		softReset();
 	}
 	else //reset
 	{
@@ -203,16 +236,41 @@ void dcode_0()
 	}
 }
 
+    /*!
+    *
+    ### D1 - Clear EEPROM and RESET <a href="https://reprap.org/wiki/G-code#D1:_Clear_EEPROM_and_RESET">D1: Clear EEPROM and RESET</a>
+      
+          D1
+      
+    *
+    */
 void dcode_1()
 {
 	LOG("D1 - Clear EEPROM and RESET\n");
 	cli();
 	for (int i = 0; i < 8192; i++)
 		eeprom_write_byte((unsigned char*)i, (unsigned char)0xff);
-	wdt_enable(WDTO_15MS);
-	while(1);
+	softReset();
 }
 
+    /*!
+    ### D2 - Read/Write RAM <a href="https://reprap.org/wiki/G-code#D2:_Read.2FWrite_RAM">D3: Read/Write RAM</a>
+    This command can be used without any additional parameters. It will read the entire RAM.
+    #### Usage
+    
+        D2 [ A | C | X ]
+    
+    #### Parameters
+    - `A` - Address (x0000-x1fff)
+    - `C` - Count (1-8192)
+    - `X` - Data
+
+	#### Notes
+	- The hex address needs to be lowercase without the 0 before the x
+	- Count is decimal 
+	- The hex data needs to be lowercase
+	
+    */
 void dcode_2()
 {
 	LOG("D2 - Read/Write RAM\n");
@@ -256,6 +314,19 @@ void dcode_2()
 	}*/
 }
 
+    /*!
+    
+    ### D4 - Read/Write PIN <a href="https://reprap.org/wiki/G-code#D4:_Read.2FWrite_PIN">D4: Read/Write PIN</a>
+    To read the digital value of a pin you need only to define the pin number.
+    #### Usage
+    
+        D4 [ P | F | V ]
+    
+    #### Parameters
+    - `P` - Pin (0-255)
+    - `F` - Function in/out (0/1)
+    - `V` - Value (0/1)
+    */
 void dcode_4()
 {
 	LOG("D4 - Read/Write PIN\n");
@@ -286,8 +357,27 @@ void dcode_4()
 }
 #endif //DEBUG_DCODES
 
-#ifdef DEBUG_DCODE5
-
+#if defined DEBUG_DCODE5 || defined DEBUG_DCODES
+
+    /*!
+    ### D5 - Read/Write FLASH <a href="https://reprap.org/wiki/G-code#D5:_Read.2FWrite_FLASH">D5: Read/Write Flash</a>
+    This command can be used without any additional parameters. It will read the 1kb FLASH.
+    #### Usage
+    
+        D5 [ A | C | X | E ]
+    
+    #### Parameters
+    - `A` - Address (x00000-x3ffff)
+    - `C` - Count (1-8192)
+    - `X` - Data (hex)
+    - `E` - Erase
+ 	
+	#### Notes
+	- The hex address needs to be lowercase without the 0 before the x
+	- Count is decimal 
+	- The hex data needs to be lowercase
+	
+   */
 void dcode_5()
 {
 	printf_P(PSTR("D5 - Read/Write FLASH\n"));
@@ -327,8 +417,7 @@ void dcode_5()
 		boot_dst_addr = (uint32_t)address;
 		boot_src_addr = (uint32_t)(&data);
 		bootapp_print_vars();
-		wdt_enable(WDTO_15MS);
-		while(1);
+		softReset();
 	}
 	while (count)
 	{
@@ -351,11 +440,19 @@ void dcode_5()
 
 #ifdef DEBUG_DCODES
 
+    /*!
+    ### D6 - Read/Write external FLASH <a href="https://reprap.org/wiki/G-code#D6:_Read.2FWrite_external_FLASH">D6: Read/Write external Flash</a>
+    Reserved
+    */
 void dcode_6()
 {
 	LOG("D6 - Read/Write external FLASH\n");
 }
 
+    /*!
+    ### D7 - Read/Write Bootloader <a href="https://reprap.org/wiki/G-code#D7:_Read.2FWrite_Bootloader">D7: Read/Write Bootloader</a>
+    Reserved
+    */
 void dcode_7()
 {
 	LOG("D7 - Read/Write Bootloader\n");
@@ -366,11 +463,22 @@ void dcode_7()
 	boot_copy_size = (uint16_t)0xc00;
 	boot_src_addr = (uint32_t)0x0003e400;
 	boot_dst_addr = (uint32_t)0x0003f400;
-	wdt_enable(WDTO_15MS);
-	while(1);
+	softReset();
 */
 }
 
+    /*!
+    ### D8 - Read/Write PINDA <a href="https://reprap.org/wiki/G-code#D8:_Read.2FWrite_PINDA">D8: Read/Write PINDA</a>
+    #### Usage
+    
+        D8 [ ? | ! | P | Z ]
+    
+    #### Parameters
+    - `?` - Read PINDA temperature shift values
+    - `!` - Reset PINDA temperature shift values to default
+    - `P` - Pinda temperature [C]
+    - `Z` - Z Offset [mm]
+    */
 void dcode_8()
 {
 	printf_P(PSTR("D8 - Read/Write PINDA\n"));
@@ -412,6 +520,23 @@ void dcode_8()
 	printf_P(PSTR("temp_pinda=%d offset_z=%d.%03d\n"), (int)temp_pinda, (int)offset_z, ((int)(1000 * offset_z) % 1000));
 }
 
+    /*!
+    ### D9 - Read ADC <a href="https://reprap.org/wiki/G-code#D9:_Read.2FWrite_ADC">D9: Read ADC</a>
+    #### Usage
+    
+        D9 [ I | V ]
+    
+    #### Parameters
+    - `I` - ADC channel index 
+        - `0` - Heater 0 temperature
+        - `1` - Heater 1 temperature
+        - `2` - Bed temperature
+        - `3` - PINDA temperature
+        - `4` - PWR voltage
+        - `5` - Ambient temperature
+        - `6` - BED voltage
+    - `V` Value to be written as simulated
+    */
 const char* dcode_9_ADC_name(uint8_t i)
 {
 	switch (i)
@@ -485,55 +610,178 @@ void dcode_9()
 	}
 }
 
+    /*!
+    ### D10 - Set XYZ calibration = OK <a href="https://reprap.org/wiki/G-code#D10:_Set_XYZ_calibration_.3D_OK">D10: Set XYZ calibration = OK</a>
+    */
 void dcode_10()
 {//Tell the printer that XYZ calibration went OK
 	LOG("D10 - XYZ calibration = OK\n");
 	calibration_status_store(CALIBRATION_STATUS_LIVE_ADJUST); 
 }
 
+    /*!
+    ### D12 - Time <a href="https://reprap.org/wiki/G-code#D12:_Time">D12: Time</a>
+    Writes the current time in the log file.
+    */
+
 void dcode_12()
 {//Time
 	LOG("D12 - Time\n");
 
 }
 
+#ifdef HEATBED_ANALYSIS
+    /*!
+    ### D80 - Bed check <a href="https://reprap.org/wiki/G-code#D80:_Bed_check">D80: Bed check</a>
+    This command will log data to SD card file "mesh.txt".
+    #### Usage
+    
+        D80 [ E | F | G | H | I | J ]
+    
+    #### Parameters
+    - `E` - Dimension X (default 40)
+    - `F` - Dimention Y (default 40)
+    - `G` - Points X (default 40)
+    - `H` - Points Y (default 40)
+    - `I` - Offset X (default 74)
+    - `J` - Offset Y (default 34)
+  */
+void dcode_80()
+{
+	float dimension_x = 40;
+	float dimension_y = 40;
+	int points_x = 40;
+	int points_y = 40;
+	float offset_x = 74;
+	float offset_y = 33;
+
+	if (code_seen('E')) dimension_x = code_value();
+	if (code_seen('F')) dimension_y = code_value();
+	if (code_seen('G')) {points_x = code_value(); }
+	if (code_seen('H')) {points_y = code_value(); }
+	if (code_seen('I')) {offset_x = code_value(); }
+	if (code_seen('J')) {offset_y = code_value(); }
+	printf_P(PSTR("DIM X: %f\n"), dimension_x);
+	printf_P(PSTR("DIM Y: %f\n"), dimension_y);
+	printf_P(PSTR("POINTS X: %d\n"), points_x);
+	printf_P(PSTR("POINTS Y: %d\n"), points_y);
+	printf_P(PSTR("OFFSET X: %f\n"), offset_x);
+	printf_P(PSTR("OFFSET Y: %f\n"), offset_y);
+		bed_check(dimension_x,dimension_y,points_x,points_y,offset_x,offset_y);
+}
+
+
+    /*!
+    ### D81 - Bed analysis <a href="https://reprap.org/wiki/G-code#D81:_Bed_analysis">D80: Bed analysis</a>
+    This command will log data to SD card file "wldsd.txt".
+    #### Usage
+    
+        D81 [ E | F | G | H | I | J ]
+    
+    #### Parameters
+    - `E` - Dimension X (default 40)
+    - `F` - Dimention Y (default 40)
+    - `G` - Points X (default 40)
+    - `H` - Points Y (default 40)
+    - `I` - Offset X (default 74)
+    - `J` - Offset Y (default 34)
+  */
+void dcode_81()
+{
+	float dimension_x = 40;
+	float dimension_y = 40;
+	int points_x = 40;
+	int points_y = 40;
+	float offset_x = 74;
+	float offset_y = 33;
+
+	if (code_seen('E')) dimension_x = code_value();
+	if (code_seen('F')) dimension_y = code_value();
+	if (code_seen("G")) { strchr_pointer+=1; points_x = code_value(); }
+	if (code_seen("H")) { strchr_pointer+=1; points_y = code_value(); }
+	if (code_seen("I")) { strchr_pointer+=1; offset_x = code_value(); }
+	if (code_seen("J")) { strchr_pointer+=1; offset_y = code_value(); }
+	
+	bed_analysis(dimension_x,dimension_y,points_x,points_y,offset_x,offset_y);
+	
+}
+
+#endif //HEATBED_ANALYSIS
+
+    /*!
+    ### D106 - Print measured fan speed for different pwm values <a href="https://reprap.org/wiki/G-code#D106:_Print_measured_fan_speed_for_different_pwm_values">D106: Print measured fan speed for different pwm values</a>
+    */
+void dcode_106()
+{
+	for (int i = 255; i > 0; i = i - 5) {
+		fanSpeed = i;
+		//delay_keep_alive(2000);
+		for (int j = 0; j < 100; j++) {
+			delay_keep_alive(100);
+			}
+			printf_P(_N("%d: %d\n"), i, fan_speed[1]);
+	}
+}
 
 #ifdef TMC2130
 #include "planner.h"
 #include "tmc2130.h"
 extern void st_synchronize();
-/**
- * @brief D2130 Trinamic stepper controller
- * D2130<axis><command>[subcommand][value]
- *  * Axis
- *  * * 'X'
- *  * * 'Y'
- *  * * 'Z'
- *  * * 'E'
- *  * command
- *  * * '0' current off
- *  * * '1' current on
- *  * * '+' single step
- *  * * * value sereval steps
- *  * * '-' dtto oposite direction
- *  * * '?' read register
- *  * * * "mres"
- *  * * * "step"
- *  * * * "mscnt"
- *  * * * "mscuract"
- *  * * * "wave"
- *  * * '!' set register
- *  * * * "mres"
- *  * * * "step"
- *  * * * "wave"
- *  * * * *0, 180..250 meaning: off, 0.9..1.25, recommended value is 1.1
- *  * * '@' home calibrate axis
- *
- *  Example:
- *  D2130E?wave //print extruder microstep linearity compensation curve
- *  D2130E!wave0 //disable extruder linearity compensation curve, (sine curve is used)
- *  D2130E!wave220 // (sin(x))^1.1 extruder microstep compensation curve used
- */
+    /*!
+    ### D2130 - Trinamic stepper controller <a href="https://reprap.org/wiki/G-code#D2130:_Trinamic_stepper_controller">D2130: Trinamic stepper controller</a>
+    @todo Please review by owner of the code. RepRap Wiki Gcode needs to be updated after review of owner as well.
+    
+    #### Usage
+    
+        D2130 [ Axis | Command | Subcommand | Value ]
+    
+    #### Parameters
+    - Axis
+      - `X` - X stepper driver
+      - `Y` - Y stepper driver
+      - `Z` - Z stepper driver
+      - `E` - Extruder stepper driver
+    - Commands
+      - `0`   - Current off
+      - `1`   - Current on
+      - `+`   - Single step
+      - `-`   - Single step oposite direction
+      - `NNN` - Value sereval steps
+      - `?`   - Read register
+      - Subcommands for read register
+        - `mres`     - Micro step resolution. More information in datasheet '5.5.2 CHOPCONF – Chopper Configuration'
+        - `step`     - Step
+        - `mscnt`    - Microstep counter. More information in datasheet '5.5 Motor Driver Registers'
+        - `mscuract` - Actual microstep current for motor. More information in datasheet '5.5 Motor Driver Registers'
+        - `wave`     - Microstep linearity compensation curve
+      - `!`   - Set register
+      - Subcommands for set register
+        - `mres`     - Micro step resolution
+        - `step`     - Step
+        - `wave`     - Microstep linearity compensation curve
+        - Values for set register
+          - `0, 180 --> 250` - Off
+          - `0.9 --> 1.25`   - Valid values (recommended is 1.1)
+      - `@`   - Home calibrate axis
+    
+    Examples:
+      
+          D2130E?wave
+      
+      Print extruder microstep linearity compensation curve
+      
+          D2130E!wave0
+      
+      Disable extruder linearity compensation curve, (sine curve is used)
+      
+          D2130E!wave220
+      
+      (sin(x))^1.1 extruder microstep compensation curve used
+    
+    Notes:
+      For more information see https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC2130_datasheet.pdf
+    *
+	*/
 void dcode_2130()
 {
 	printf_P(PSTR("D2130 - TMC2130\n"));
@@ -636,6 +884,20 @@ void dcode_2130()
 #endif //TMC2130
 
 #ifdef PAT9125
+    /*!
+    ### D9125 - PAT9125 filament sensor <a href="https://reprap.org/wiki/G-code#D9:_Read.2FWrite_ADC">D9125: PAT9125 filament sensor</a>
+    #### Usage
+    
+        D9125 [ ? | ! | R | X | Y | L ]
+    
+    #### Parameters
+    - `?` - Print values
+    - `!` - Print values
+    - `R` - Resolution. Not active in code
+    - `X` - X values
+    - `Y` - Y values
+    - `L` - Activate filament sensor log
+    */
 void dcode_9125()
 {
 	LOG("D9125 - PAT9125\n");
@@ -668,11 +930,13 @@ void dcode_9125()
 		pat9125_y = (int)code_value();
 		LOG("pat9125_y=%d\n", pat9125_y);
 	}
+#ifdef DEBUG_FSENSOR_LOG
 	if (code_seen('L'))
 	{
 		fsensor_log = (int)code_value();
 		LOG("fsensor_log=%d\n", fsensor_log);
 	}
+#endif //DEBUG_FSENSOR_LOG
 }
 #endif //PAT9125
 

+ 18 - 4
Firmware/Dcodes.h

@@ -2,26 +2,40 @@
 #define DCODES_H
 
 extern void dcode__1(); //D-1 - Endless loop (to simulate deadlock)
-
 extern void dcode_0(); //D0 - Reset
 extern void dcode_1(); //D1 - Clear EEPROM
 extern void dcode_2(); //D2 - Read/Write RAM
+
+#if defined DEBUG_DCODE3 || defined DEBUG_DCODES
 extern void dcode_3(); //D3 - Read/Write EEPROM
+#endif //DEBUG_DCODE3
+
 extern void dcode_4(); //D4 - Read/Write PIN
+
+#if defined DEBUG_DCODE5 || defined DEBUG_DCODES
 extern void dcode_5(); //D5 - Read/Write FLASH
+#endif //DEBUG_DCODE5
+
 extern void dcode_6(); //D6 - Read/Write external FLASH
 extern void dcode_7(); //D7 - Read/Write Bootloader
 extern void dcode_8(); //D8 - Read/Write PINDA
 extern void dcode_9(); //D9 - Read/Write ADC (Write=enable simulated, Read=disable simulated)
-
 extern void dcode_10(); //D10 - XYZ calibration = OK
+extern void dcode_12(); //D12 - Log time. Writes the current time in the log file.
+
+#ifdef HEATBED_ANALYSIS
+extern void dcode_80(); //D80 - Bed check. This command will log data to SD card file "mesh.txt".
+extern void dcode_81(); //D81 - Bed analysis. This command will log data to SD card file "wldsd.txt".
+#endif //HEATBED_ANALYSIS
+
+	extern void dcode_106(); //D106 - Print measured fan speed for different pwm values
 
 #ifdef TMC2130
-extern void dcode_2130(); //D2130 - TMC2130
+	extern void dcode_2130(); //D2130 - TMC2130
 #endif //TMC2130
 
 #ifdef PAT9125
-extern void dcode_9125(); //D9125 - PAT9125
+	extern void dcode_9125(); //D9125 - PAT9125
 #endif //PAT9125
 
 

+ 25 - 25
Firmware/Marlin.h

@@ -146,40 +146,39 @@ void manage_inactivity(bool ignore_stepper_queue=false);
 #if defined(Z_ENABLE_PIN) && Z_ENABLE_PIN > -1 
 	#if defined(Z_AXIS_ALWAYS_ON)
 		  #ifdef Z_DUAL_STEPPER_DRIVERS
-			#define  enable_z() { WRITE(Z_ENABLE_PIN, Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN, Z_ENABLE_ON); }
-			#define disable_z() { WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN,!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
+			#define  poweron_z() { WRITE(Z_ENABLE_PIN, Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN, Z_ENABLE_ON); }
+			#define poweroff_z() { WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN,!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
 		  #else
-			#define  enable_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON)
-			#define  disable_z() {}
+			#define  poweron_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON)
+			#define poweroff_z() {}
 		  #endif
 	#else
 		#ifdef Z_DUAL_STEPPER_DRIVERS
-			#define  enable_z() { WRITE(Z_ENABLE_PIN, Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN, Z_ENABLE_ON); }
-			#define disable_z() { WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN,!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
+			#define  poweron_z() { WRITE(Z_ENABLE_PIN, Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN, Z_ENABLE_ON); }
+			#define poweroff_z() { WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN,!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
 		#else
-			#define  enable_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON)
-			#define disable_z() { WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
+			#define  poweron_z() WRITE(Z_ENABLE_PIN, Z_ENABLE_ON)
+			#define poweroff_z() { WRITE(Z_ENABLE_PIN,!Z_ENABLE_ON); axis_known_position[Z_AXIS] = false; }
 		#endif
 	#endif
 #else
-  #define enable_z() {}
-  #define disable_z() {}
+    #define  poweron_z() {}
+    #define poweroff_z() {}
 #endif
 
-#ifdef PSU_Delta
+#ifndef PSU_Delta
+    #define  enable_z()  poweron_z()
+    #define disable_z() poweroff_z()
+#else
     void init_force_z();
     void check_force_z();
-    #undef disable_z
-    #define disable_z() disable_force_z()
-    void disable_force_z();
-    #undef enable_z
-    #define enable_z() enable_force_z()
     void enable_force_z();
+    void disable_force_z();
+    #define  enable_z()  enable_force_z()
+    #define disable_z() disable_force_z()
 #endif // PSU_Delta
 
 
-
-
 //#if defined(Z_ENABLE_PIN) && Z_ENABLE_PIN > -1
 //#ifdef Z_DUAL_STEPPER_DRIVERS
 //#define  enable_z() { WRITE(Z_ENABLE_PIN, Z_ENABLE_ON); WRITE(Z2_ENABLE_PIN, Z_ENABLE_ON); }
@@ -239,8 +238,8 @@ void get_coordinates();
 void prepare_move();
 void kill(const char *full_screen_message = NULL, unsigned char id = 0);
 void Stop();
-
 bool IsStopped();
+void finishAndDisableSteppers();
 
 //put an ASCII command at the end of the current buffer.
 void enquecommand(const char *cmd, bool from_progmem = false);
@@ -295,12 +294,12 @@ void setPwmFrequency(uint8_t pin, int val);
 
 extern bool fans_check_enabled;
 extern float homing_feedrate[];
-extern bool axis_relative_modes[];
+extern uint8_t axis_relative_modes;
 extern float feedrate;
 extern int feedmultiply;
 extern int extrudemultiply; // Sets extrude multiply factor (in percent) for all extruders
 extern int extruder_multiply[EXTRUDERS]; // sets extrude multiply factor (in percent) for each extruder individually
-extern float volumetric_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
+extern float extruder_multiplier[EXTRUDERS]; // reciprocal of cross-sectional area of filament (in square millimeters), stored this way to reduce computational burden in planner
 extern float current_position[NUM_AXIS] ;
 extern float destination[NUM_AXIS] ;
 extern float min_pos[3];
@@ -308,6 +307,7 @@ extern float max_pos[3];
 extern bool axis_known_position[3];
 extern int fanSpeed;
 extern int8_t lcd_change_fil_state;
+extern float default_retraction;
 
 #ifdef TMC2130
 void homeaxis(int axis, uint8_t cnt = 1, uint8_t* pstep = 0);
@@ -334,7 +334,6 @@ extern unsigned long stoptime;
 extern int bowden_length[4];
 extern bool is_usb_printing;
 extern bool homing_flag;
-extern bool temp_cal_active;
 extern bool loading_flag;
 extern unsigned int usb_printing_counter;
 
@@ -444,9 +443,8 @@ void setup_uvlo_interrupt();
 void setup_fan_interrupt();
 #endif
 
-//extern void recover_machine_state_after_power_panic();
-extern void recover_machine_state_after_power_panic(bool bTiny);
-extern void restore_print_from_eeprom();
+extern bool recover_machine_state_after_power_panic();
+extern void restore_print_from_eeprom(bool mbl_was_active);
 extern void position_menu();
 
 extern void print_world_coordinates();
@@ -514,4 +512,6 @@ void load_filament_final_feed();
 void marlin_wait_for_click();
 void raise_z_above(float target, bool plan=true);
 
+extern "C" void softReset();
+
 #endif

+ 2295 - 1255
Firmware/Marlin_main.cpp

@@ -46,6 +46,7 @@
 //-//
 #include "Configuration.h"
 #include "Marlin.h"
+#include "config.h"
   
 #ifdef ENABLE_AUTO_BED_LEVELING
 #include "vector_3.h"
@@ -83,6 +84,9 @@
 #include "Dcodes.h"
 #include "AutoDeplete.h"
 
+#ifndef LA_NOCOMPAT
+#include "la10compat.h"
+#endif
 
 #ifdef SWSPI
 #include "swspi.h"
@@ -175,9 +179,13 @@ float default_retraction = DEFAULT_RETRACTION;
 
 
 float homing_feedrate[] = HOMING_FEEDRATE;
-// Currently only the extruder axis may be switched to a relative mode.
-// Other axes are always absolute or relative based on the common relative_mode flag.
-bool axis_relative_modes[] = AXIS_RELATIVE_MODES;
+
+//Although this flag and many others like this could be represented with a struct/bitfield for each axis (more readable and efficient code), the implementation
+//would not be standard across all platforms. That being said, the code will continue to use bitmasks for independent axis.
+//Moreover, according to C/C++ standard, the ordering of bits is platform/compiler dependent and the compiler is allowed to align the bits arbitrarily,
+//thus bit operations like shifting and masking may stop working and will be very hard to fix.
+uint8_t axis_relative_modes = 0;
+
 int feedmultiply=100; //100->1 200->2
 int extrudemultiply=100; //100->1 200->2
 int extruder_multiply[EXTRUDERS] = {100
@@ -194,8 +202,6 @@ int bowden_length[4] = {385, 385, 385, 385};
 bool is_usb_printing = false;
 bool homing_flag = false;
 
-bool temp_cal_active = false;
-
 unsigned long kicktime = _millis()+100000;
 
 unsigned int  usb_printing_counter;
@@ -357,9 +363,6 @@ unsigned long starttime=0;
 unsigned long stoptime=0;
 unsigned long _usb_timer = 0;
 
-bool extruder_under_pressure = true;
-
-
 bool Stopped=false;
 
 #if NUM_SERVOS > 0
@@ -384,7 +387,6 @@ static uint16_t saved_feedrate2 = 0; //!< Default feedrate (truncated from float
 static int saved_feedmultiply2 = 0;
 static uint8_t saved_active_extruder = 0;
 static float saved_extruder_temperature = 0.0; //!< Active extruder temperature
-static bool saved_extruder_under_pressure = false;
 static bool saved_extruder_relative_mode = false;
 static int saved_fanSpeed = 0; //!< Print fan speed
 //! @}
@@ -641,8 +643,17 @@ void failstats_reset_print()
 	eeprom_update_byte((uint8_t *)EEPROM_POWER_COUNT, 0);
 	eeprom_update_byte((uint8_t *)EEPROM_MMU_FAIL, 0);
 	eeprom_update_byte((uint8_t *)EEPROM_MMU_LOAD_FAIL, 0);
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
+    fsensor_softfail = 0;
+#endif
 }
 
+void softReset()
+{
+    cli();
+    wdt_enable(WDTO_15MS);
+    while(1);
+}
 
 
 #ifdef MESH_BED_LEVELING
@@ -708,6 +719,12 @@ static void factory_reset(char level)
 
             eeprom_update_dword((uint32_t *)EEPROM_TOTALTIME, 0);
             eeprom_update_dword((uint32_t *)EEPROM_FILAMENTUSED, 0);
+
+			eeprom_update_byte((uint8_t *)EEPROM_CRASH_COUNT_X, 0);
+			eeprom_update_byte((uint8_t *)EEPROM_CRASH_COUNT_Y, 0);
+			eeprom_update_byte((uint8_t *)EEPROM_FERROR_COUNT, 0);
+			eeprom_update_byte((uint8_t *)EEPROM_POWER_COUNT, 0);
+
             eeprom_update_word((uint16_t *)EEPROM_CRASH_COUNT_X_TOT, 0);
             eeprom_update_word((uint16_t *)EEPROM_CRASH_COUNT_Y_TOT, 0);
             eeprom_update_word((uint16_t *)EEPROM_FERROR_COUNT_TOT, 0);
@@ -751,6 +768,7 @@ static void factory_reset(char level)
 				}
 
 			}
+			softReset();
 
 
 			break;
@@ -856,14 +874,14 @@ static void check_if_fw_is_on_right_printer(){
     swi2c_init();
     const uint8_t pat9125_detected = swi2c_readByte_A8(PAT9125_I2C_ADDR,0x00,NULL);
       if (pat9125_detected){
-        lcd_show_fullscreen_message_and_wait_P(_i("MK3S firmware detected on MK3 printer"));}
+        lcd_show_fullscreen_message_and_wait_P(_i("MK3S firmware detected on MK3 printer"));}////c=20 r=3
     #endif //IR_SENSOR
 
     #ifdef PAT9125
       //will return 1 only if IR can detect filament in bondtech extruder so this may fail even when we have IR sensor
       const uint8_t ir_detected = !(PIN_GET(IR_SENSOR_PIN));
       if (ir_detected){
-        lcd_show_fullscreen_message_and_wait_P(_i("MK3 firmware detected on MK3S printer"));}
+        lcd_show_fullscreen_message_and_wait_P(_i("MK3 firmware detected on MK3S printer"));}////c=20 r=3
     #endif //PAT9125
   }
 #endif //FILAMENT_SENSOR
@@ -1001,11 +1019,19 @@ void setup()
 	lcd_splash();
     Sound_Init();                                // also guarantee "SET_OUTPUT(BEEPER)"
 
+	selectedSerialPort = eeprom_read_byte((uint8_t *)EEPROM_SECOND_SERIAL_ACTIVE);
+	if (selectedSerialPort == 0xFF) selectedSerialPort = 0;
+	eeprom_update_byte((uint8_t *)EEPROM_SECOND_SERIAL_ACTIVE, selectedSerialPort);
+	MYSERIAL.begin(BAUDRATE);
+	fdev_setup_stream(uartout, uart_putchar, NULL, _FDEV_SETUP_WRITE); //setup uart out stream
+	stdout = uartout;
+
 #ifdef W25X20CL
     bool w25x20cl_success = w25x20cl_init();
+	uint8_t optiboot_status = 1;
 	if (w25x20cl_success)
 	{
-	    optiboot_w25x20cl_enter();
+		optiboot_status = optiboot_w25x20cl_enter();
 #if (LANG_MODE != 0) //secondary language support
         update_sec_lang_from_external_flash();
 #endif //(LANG_MODE != 0)
@@ -1027,15 +1053,13 @@ void setup()
 	if ((farm_mode == 0xFF && farm_no == 0) || ((uint16_t)farm_no == 0xFFFF)) 
 		farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode
 	if ((uint16_t)farm_no == 0xFFFF) farm_no = 0;
-	
-	selectedSerialPort = eeprom_read_byte((uint8_t*)EEPROM_SECOND_SERIAL_ACTIVE);
-	if (selectedSerialPort == 0xFF) selectedSerialPort = 0;
 	if (farm_mode)
 	{
 		no_response = true; //we need confirmation by recieving PRUSA thx
 		important_status = 8;
 		prusa_statistics(8);
 		selectedSerialPort = 1;
+		MYSERIAL.begin(BAUDRATE);
 #ifdef TMC2130
 		//increased extruder current (PFW363)
 		tmc2130_current_h[E_AXIS] = 36;
@@ -1049,12 +1073,12 @@ void setup()
           if(!(eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED)))
                eeprom_update_byte((unsigned char *)EEPROM_FAN_CHECK_ENABLED,true);
 	}
-	MYSERIAL.begin(BAUDRATE);
-	fdev_setup_stream(uartout, uart_putchar, NULL, _FDEV_SETUP_WRITE); //setup uart out stream
 #ifndef W25X20CL
 	SERIAL_PROTOCOLLNPGM("start");
-#endif //W25X20CL
-	stdout = uartout;
+#else
+	if ((optiboot_status != 0) || (selectedSerialPort != 0))
+		SERIAL_PROTOCOLLNPGM("start");
+#endif
 	SERIAL_ECHO_START;
 	printf_P(PSTR(" " FW_VERSION_FULL "\n"));
 
@@ -1233,6 +1257,13 @@ void setup()
 	    w25x20cl_err_msg();
 	    printf_P(_n("W25X20CL not responding.\n"));
 	}
+#ifdef EXTRUDER_ALTFAN_DETECT
+	SERIAL_ECHORPGM(_n("Extruder fan type: "));
+	if (extruder_altfan_detect())
+		SERIAL_ECHOLNRPGM(PSTR("ALTFAN"));
+	else
+		SERIAL_ECHOLNRPGM(PSTR("NOCTUA"));
+#endif //EXTRUDER_ALTFAN_DETECT
 
 	plan_init();  // Initialize planner;
 
@@ -1299,10 +1330,6 @@ void setup()
 
 	st_init();    // Initialize stepper, this enables interrupts!
   
-#ifdef UVLO_SUPPORT
-    setup_uvlo_interrupt();
-#endif //UVLO_SUPPORT
-
 #ifdef TMC2130
 	tmc2130_mode = silentMode?TMC2130_MODE_SILENT:TMC2130_MODE_NORMAL;
 	update_mode_profile();
@@ -1315,10 +1342,16 @@ void setup()
 	setup_photpin();
 
 	servo_init();
+
 	// Reset the machine correction matrix.
 	// It does not make sense to load the correction matrix until the machine is homed.
 	world2machine_reset();
-    
+
+    // Initialize current_position accounting for software endstops to
+    // avoid unexpected initial shifts on the first move
+    clamp_to_software_endstops(current_position);
+    plan_set_position_curposXYZE();
+
 #ifdef FILAMENT_SENSOR
 	fsensor_init();
 #endif //FILAMENT_SENSOR
@@ -1328,29 +1361,12 @@ void setup()
 	SET_OUTPUT(CONTROLLERFAN_PIN); //Set pin used for driver cooling fan
 #endif
 
-
 	setup_homepin();
 
-#ifdef TMC2130
-
-  if (1) {
-    // try to run to zero phase before powering the Z motor.    
-    // Move in negative direction
-    WRITE(Z_DIR_PIN,INVERT_Z_DIR);
-    // Round the current micro-micro steps to micro steps.
-    for (uint16_t phase = (tmc2130_rd_MSCNT(Z_AXIS) + 8) >> 4; phase > 0; -- phase) {
-      // Until the phase counter is reset to zero.
-      WRITE(Z_STEP_PIN, !INVERT_Z_STEP_PIN);
-      _delay(2);
-      WRITE(Z_STEP_PIN, INVERT_Z_STEP_PIN);
-      _delay(2);
-    }
-  }
-#endif //TMC2130
-
-#if defined(Z_AXIS_ALWAYS_ON) && !defined(PSU_Delta)
-	enable_z();
+#if defined(Z_AXIS_ALWAYS_ON)
+    enable_z();
 #endif
+
 	farm_mode = eeprom_read_byte((uint8_t*)EEPROM_FARM_MODE);
 	EEPROM_read_B(EEPROM_FARM_NUMBER, &farm_no);
 	if ((farm_mode == 0xFF && farm_no == 0) || (farm_no == static_cast<int>(0xFFFF))) farm_mode = false; //if farm_mode has not been stored to eeprom yet and farm number is set to zero or EEPROM is fresh, deactivate farm mode
@@ -1454,8 +1470,7 @@ void setup()
 
 	if (eeprom_read_byte((uint8_t*)EEPROM_TEMP_CAL_ACTIVE) == 255) {
 		eeprom_write_byte((uint8_t*)EEPROM_TEMP_CAL_ACTIVE, 0);
-		temp_cal_active = false;
-	} else temp_cal_active = eeprom_read_byte((uint8_t*)EEPROM_TEMP_CAL_ACTIVE);
+	}
 
 	if (eeprom_read_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA) == 255) {
 		//eeprom_write_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0);
@@ -1463,7 +1478,6 @@ void setup()
 		int16_t z_shift = 0;
 		for (uint8_t i = 0; i < 5; i++) EEPROM_save_B(EEPROM_PROBE_TEMP_SHIFT + i * 2, &z_shift);
 		eeprom_write_byte((uint8_t*)EEPROM_TEMP_CAL_ACTIVE, 0);
-		temp_cal_active = false;
 	}
 	if (eeprom_read_byte((uint8_t*)EEPROM_UVLO) == 255) {
 		eeprom_write_byte((uint8_t*)EEPROM_UVLO, 0);
@@ -1516,7 +1530,7 @@ void setup()
   }
 
   if (!previous_settings_retrieved) {
-	  lcd_show_fullscreen_message_and_wait_P(_i("Old settings found. Default PID, Esteps etc. will be set.")); //if EEPROM version or printer type was changed, inform user that default setting were loaded////MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+	  lcd_show_fullscreen_message_and_wait_P(_i("Old settings found. Default PID, Esteps etc. will be set.")); //if EEPROM version or printer type was changed, inform user that default setting were loaded////MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
 	  Config_StoreSettings();
   }
   if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) == 1) {
@@ -1536,7 +1550,7 @@ void setup()
 		  lcd_show_fullscreen_message_and_wait_P(_T(MSG_BABYSTEP_Z_NOT_SET));
 		  lcd_update_enable(true);
 	  }
-	  else if (calibration_status() == CALIBRATION_STATUS_CALIBRATED && temp_cal_active == true && calibration_status_pinda() == false) {
+	  else if (calibration_status() == CALIBRATION_STATUS_CALIBRATED && eeprom_read_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE) && calibration_status_pinda() == false) {
 		  //lcd_show_fullscreen_message_and_wait_P(_i("Temperature calibration has not been run yet"));////MSG_PINDA_NOT_CALIBRATED c=20 r=4
 		  lcd_update_enable(true);
 	  }
@@ -1614,12 +1628,14 @@ void setup()
               lcd_update(2); 
               lcd_setstatuspgm(_T(WELCOME_MSG)); 
           } 
-           
       }
-
-	   
   }
+
+  // Only arm the uvlo interrupt _after_ a recovering print has been initialized and
+  // the entire state machine initialized.
+  setup_uvlo_interrupt();
 #endif //UVLO_SUPPORT
+
   fCheckModeInit();
   fSetMmuMode(mmu_enabled);
   KEEPALIVE_STATE(NOT_BUSY);
@@ -1901,10 +1917,6 @@ static void axis_is_at_home(int axis) {
   max_pos[axis] =          base_max_pos(axis) + cs.add_homing[axis];
 }
 
-
-inline void set_current_to_destination() { memcpy(current_position, destination, sizeof(current_position)); }
-inline void set_destination_to_current() { memcpy(destination, current_position, sizeof(destination)); }
-
 //! @return original feedmultiply
 static int setup_for_endstop_move(bool enable_endstops_now = true) {
     saved_feedrate = feedrate;
@@ -1951,7 +1963,7 @@ static void set_bed_level_equation_lsq(double *plane_equation_coefficients)
     // put the bed at 0 so we don't go below it.
     current_position[Z_AXIS] = cs.zprobe_zoffset; // in the lsq we reach here after raising the extruder due to the loop structure
 
-    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+    plan_set_position_curposXYZE();
 }
 
 #else // not AUTO_BED_LEVELING_GRID
@@ -1979,7 +1991,7 @@ static void set_bed_level_equation_3pts(float z_at_pt_1, float z_at_pt_2, float
     // put the bed at 0 so we don't go below it.
     current_position[Z_AXIS] = cs.zprobe_zoffset;
 
-    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+    plan_set_position_curposXYZE();
 
 }
 
@@ -2011,7 +2023,7 @@ static void run_z_probe() {
 
     current_position[Z_AXIS] = st_get_position_mm(Z_AXIS);
     // make sure the planner knows where we are as it may be a bit different than we last said to move to
-    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+    plan_set_position_curposXYZE();
 }
 
 static void do_blocking_move_to(float x, float y, float z) {
@@ -2062,35 +2074,37 @@ static float probe_pt(float x, float y, float z_before) {
 
 #ifdef LIN_ADVANCE
    /**
-    * M900: Set and/or Get advance K factor and WH/D ratio
+    * M900: Set and/or Get advance K factor
     *
     *  K<factor>                  Set advance K factor
-    *  R<ratio>                   Set ratio directly (overrides WH/D)
-    *  W<width> H<height> D<diam> Set ratio from WH/D
     */
 inline void gcode_M900() {
-    st_synchronize();
-    
-    const float newK = code_seen('K') ? code_value_float() : -1;
-    if (newK >= 0) extruder_advance_k = newK;
-    
-    float newR = code_seen('R') ? code_value_float() : -1;
-    if (newR < 0) {
-        const float newD = code_seen('D') ? code_value_float() : -1,
-        newW = code_seen('W') ? code_value_float() : -1,
-        newH = code_seen('H') ? code_value_float() : -1;
-        if (newD >= 0 && newW >= 0 && newH >= 0)
-            newR = newD ? (newW * newH) / (sq(newD * 0.5) * M_PI) : 0;
+    float newK = code_seen('K') ? code_value_float() : -2;
+#ifdef LA_NOCOMPAT
+    if (newK >= 0 && newK < LA_K_MAX)
+        extruder_advance_K = newK;
+    else
+        SERIAL_ECHOLNPGM("K out of allowed range!");
+#else
+    if (newK == 0)
+    {
+        extruder_advance_K = 0;
+        la10c_reset();
     }
-    if (newR >= 0) advance_ed_ratio = newR;
-    
+    else
+    {
+        newK = la10c_value(newK);
+        if (newK < 0)
+            SERIAL_ECHOLNPGM("K out of allowed range!");
+        else
+            extruder_advance_K = newK;
+    }
+#endif
+
     SERIAL_ECHO_START;
     SERIAL_ECHOPGM("Advance K=");
-    SERIAL_ECHOLN(extruder_advance_k);
-    SERIAL_ECHOPGM(" E/D=");
-    const float ratio = advance_ed_ratio;
-    if (ratio) SERIAL_ECHOLN(ratio); else SERIAL_ECHOLNPGM("Auto");
-    }
+    SERIAL_ECHOLN(extruder_advance_K);
+}
 #endif // LIN_ADVANCE
 
 bool check_commands() {
@@ -2130,7 +2144,7 @@ void raise_z_above(float target, bool plan)
     if (axis_known_position[Z_AXIS] || z_min_endstop)
     {
         // current position is known or very low, it's safe to raise Z
-        if(plan) plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS], active_extruder);
+        if(plan) plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]);
         return;
     }
 
@@ -2143,15 +2157,14 @@ void raise_z_above(float target, bool plan)
 #ifdef TMC2130
     tmc2130_home_enter(Z_AXIS_MASK);
 #endif //TMC2130
-    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
+    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60);
     st_synchronize();
 #ifdef TMC2130
     if (endstop_z_hit_on_purpose())
     {
         // not necessarily exact, but will avoid further vertical moves
         current_position[Z_AXIS] = max_pos[Z_AXIS];
-        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS],
-                          current_position[Z_AXIS], current_position[E_AXIS]);
+        plan_set_position_curposXYZE();
     }
     tmc2130_home_exit();
 #endif //TMC2130
@@ -2169,22 +2182,22 @@ bool calibrate_z_auto()
 	int axis_up_dir = -home_dir(Z_AXIS);
 	tmc2130_home_enter(Z_AXIS_MASK);
 	current_position[Z_AXIS] = 0;
-	plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+	plan_set_position_curposXYZE();
 	set_destination_to_current();
 	destination[Z_AXIS] += (1.1 * max_length(Z_AXIS) * axis_up_dir);
 	feedrate = homing_feedrate[Z_AXIS];
-	plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate / 60, active_extruder);
+	plan_buffer_line_destinationXYZE(feedrate / 60);
 	st_synchronize();
 	//	current_position[axis] = 0;
-	//	plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+	//	plan_set_position_curposXYZE();
 	tmc2130_home_exit();
 	enable_endstops(false);
 	current_position[Z_AXIS] = 0;
-	plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+	plan_set_position_curposXYZE();
 	set_destination_to_current();
 	destination[Z_AXIS] += 10 * axis_up_dir; //10mm up
 	feedrate = homing_feedrate[Z_AXIS] / 2;
-	plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate / 60, active_extruder);
+	plan_buffer_line_destinationXYZE(feedrate / 60);
 	st_synchronize();
 	enable_endstops(endstops_enabled);
 	if (PRINTER_TYPE == PRINTER_MK3) {
@@ -2193,11 +2206,26 @@ bool calibrate_z_auto()
 	else {
 		current_position[Z_AXIS] = Z_MAX_POS + 9.0;
 	}
-    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+	plan_set_position_curposXYZE();
 	return true;
 }
 #endif //TMC2130
 
+#ifdef TMC2130
+static void check_Z_crash(void)
+{
+	if (READ(Z_TMC2130_DIAG) != 0) { //Z crash
+		FORCE_HIGH_POWER_END;
+		current_position[Z_AXIS] = 0;
+		plan_set_position_curposXYZE();
+		current_position[Z_AXIS] += MESH_HOME_Z_SEARCH;
+		plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]);
+		st_synchronize();
+		kill(_T(MSG_BED_LEVELING_FAILED_POINT_LOW));
+	}
+}
+#endif //TMC2130
+
 #ifdef TMC2130
 void homeaxis(int axis, uint8_t cnt, uint8_t* pstep)
 #else
@@ -2221,24 +2249,24 @@ void homeaxis(int axis, uint8_t cnt)
         // and the following movement to endstop has a chance to achieve the required velocity
         // for the stall guard to work.
         current_position[axis] = 0;
-        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+        plan_set_position_curposXYZE();
 		set_destination_to_current();
 //        destination[axis] = 11.f;
         destination[axis] = -3.f * axis_home_dir;
-        plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+        plan_buffer_line_destinationXYZE(feedrate/60);
         st_synchronize();
         // Move away from the possible collision with opposite endstop with the collision detection disabled.
         endstops_hit_on_purpose();
         enable_endstops(false);
         current_position[axis] = 0;
-        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+        plan_set_position_curposXYZE();
         destination[axis] = 1. * axis_home_dir;
-        plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+        plan_buffer_line_destinationXYZE(feedrate/60);
         st_synchronize();
         // Now continue to move up to the left end stop with the collision detection enabled.
         enable_endstops(true);
         destination[axis] = 1.1 * axis_home_dir * max_length(axis);
-        plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+        plan_buffer_line_destinationXYZE(feedrate/60);
         st_synchronize();
 		for (uint8_t i = 0; i < cnt; i++)
 		{
@@ -2246,9 +2274,9 @@ void homeaxis(int axis, uint8_t cnt)
 			endstops_hit_on_purpose();
 			enable_endstops(false);
 			current_position[axis] = 0;
-			plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+			plan_set_position_curposXYZE();
 			destination[axis] = -10.f * axis_home_dir;
-			plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+			plan_buffer_line_destinationXYZE(feedrate/60);
 			st_synchronize();
 			endstops_hit_on_purpose();
 			// Now move left up to the collision, this time with a repeatable velocity.
@@ -2259,7 +2287,7 @@ void homeaxis(int axis, uint8_t cnt)
 #else //TMC2130
 			feedrate = homing_feedrate[axis] / 2;
 #endif //TMC2130
-			plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+			plan_buffer_line_destinationXYZE(feedrate/60);
 			st_synchronize();
 #ifdef TMC2130
 			uint16_t mscnt = tmc2130_rd_MSCNT(axis);
@@ -2293,10 +2321,10 @@ void homeaxis(int axis, uint8_t cnt)
         float dist = - axis_home_dir * 0.01f * 64;
 #endif //TMC2130
         current_position[axis] -= dist;
-        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+        plan_set_position_curposXYZE();
         current_position[axis] += dist;
         destination[axis] = current_position[axis];
-        plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], 0.5f*feedrate/60, active_extruder);
+        plan_buffer_line_destinationXYZE(0.5f*feedrate/60);
         st_synchronize();
 
    		feedrate = 0.0;
@@ -2308,33 +2336,25 @@ void homeaxis(int axis, uint8_t cnt)
 #endif	
         int axis_home_dir = home_dir(axis);
         current_position[axis] = 0;
-        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+        plan_set_position_curposXYZE();
         destination[axis] = 1.5 * max_length(axis) * axis_home_dir;
         feedrate = homing_feedrate[axis];
-        plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+        plan_buffer_line_destinationXYZE(feedrate/60);
         st_synchronize();
 #ifdef TMC2130
-		if (READ(Z_TMC2130_DIAG) != 0) { //Z crash
-			FORCE_HIGH_POWER_END;
-			kill(_T(MSG_BED_LEVELING_FAILED_POINT_LOW));
-			return; 
-		}
+        check_Z_crash();
 #endif //TMC2130
         current_position[axis] = 0;
-        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+        plan_set_position_curposXYZE();
         destination[axis] = -home_retract_mm(axis) * axis_home_dir;
-        plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+        plan_buffer_line_destinationXYZE(feedrate/60);
         st_synchronize();
         destination[axis] = 2*home_retract_mm(axis) * axis_home_dir;
         feedrate = homing_feedrate[axis]/2 ;
-        plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+        plan_buffer_line_destinationXYZE(feedrate/60);
         st_synchronize();
 #ifdef TMC2130
-		if (READ(Z_TMC2130_DIAG) != 0) { //Z crash
-			FORCE_HIGH_POWER_END;
-			kill(_T(MSG_BED_LEVELING_FAILED_POINT_LOW));
-			return; 
-		}
+        check_Z_crash();
 #endif //TMC2130
         axis_is_at_home(axis);
         destination[axis] = current_position[axis];
@@ -2354,7 +2374,7 @@ void home_xy()
     set_destination_to_current();
     homeaxis(X_AXIS);
     homeaxis(Y_AXIS);
-    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+    plan_set_position_curposXYZE();
     endstops_hit_on_purpose();
 }
 
@@ -2377,7 +2397,7 @@ void refresh_cmd_timeout(void)
       retracted[active_extruder]=true;
       prepare_move();
       current_position[Z_AXIS]-=cs.retract_zlift;
-      plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+      plan_set_position_curposXYZE();
       prepare_move();
       feedrate = oldFeedrate;
     } else if(!retracting && retracted[active_extruder]) {
@@ -2386,7 +2406,7 @@ void refresh_cmd_timeout(void)
       destination[Z_AXIS]=current_position[Z_AXIS];
       destination[E_AXIS]=current_position[E_AXIS];
       current_position[Z_AXIS]+=cs.retract_zlift;
-      plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+      plan_set_position_curposXYZE();
       current_position[E_AXIS]-=(swapretract?(retract_length_swap+retract_recover_length_swap):(cs.retract_length+cs.retract_recover_length))*float(extrudemultiply)*0.01f;
       plan_set_e_position(current_position[E_AXIS]);
       float oldFeedrate = feedrate;
@@ -2589,7 +2609,7 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
 
         int x_axis_home_dir = home_dir(X_AXIS);
 
-        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+        plan_set_position_curposXYZE();
         destination[X_AXIS] = 1.5 * max_length(X_AXIS) * x_axis_home_dir;destination[Y_AXIS] = 1.5 * max_length(Y_AXIS) * home_dir(Y_AXIS);
         feedrate = homing_feedrate[X_AXIS];
         if(homing_feedrate[Y_AXIS]<feedrate)
@@ -2599,15 +2619,15 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
         } else {
           feedrate *= sqrt(pow(max_length(X_AXIS) / max_length(Y_AXIS), 2) + 1);
         }
-        plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+        plan_buffer_line_destinationXYZE(feedrate/60);
         st_synchronize();
 
         axis_is_at_home(X_AXIS);
         axis_is_at_home(Y_AXIS);
-        plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+        plan_set_position_curposXYZE();
         destination[X_AXIS] = current_position[X_AXIS];
         destination[Y_AXIS] = current_position[Y_AXIS];
-        plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+        plan_buffer_line_destinationXYZE(feedrate/60);
         feedrate = 0.0;
         st_synchronize();
         endstops_hit_on_purpose();
@@ -2671,14 +2691,14 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
               MYSERIAL.println(current_position[X_AXIS]);MYSERIAL.println(current_position[Y_AXIS]);
               MYSERIAL.println(current_position[Z_AXIS]);MYSERIAL.println(current_position[E_AXIS]);
 #endif
-              plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+              plan_set_position_curposXYZE();
 #ifdef DEBUG_BUILD
               SERIAL_ECHOLNPGM("plan_buffer_line()");
               MYSERIAL.println(destination[X_AXIS]);MYSERIAL.println(destination[Y_AXIS]);
               MYSERIAL.println(destination[Z_AXIS]);MYSERIAL.println(destination[E_AXIS]);
               MYSERIAL.println(feedrate);MYSERIAL.println(active_extruder);
 #endif
-              plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder);
+              plan_buffer_line_destinationXYZE(feedrate);
               st_synchronize();
               current_position[X_AXIS] = destination[X_AXIS];
               current_position[Y_AXIS] = destination[Y_AXIS];
@@ -2697,8 +2717,8 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
             feedrate = XY_TRAVEL_SPEED/60;
             current_position[Z_AXIS] = 0;
 
-            plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
-            plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder);
+            plan_set_position_curposXYZE();
+            plan_buffer_line_destinationXYZE(feedrate);
             st_synchronize();
             current_position[X_AXIS] = destination[X_AXIS];
             current_position[Y_AXIS] = destination[Y_AXIS];
@@ -2714,10 +2734,10 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
               && (current_position[Y_AXIS]+Y_PROBE_OFFSET_FROM_EXTRUDER <= Y_MAX_POS)) {
 
               current_position[Z_AXIS] = 0;
-              plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+              plan_set_position_curposXYZE();
               destination[Z_AXIS] = Z_RAISE_BEFORE_HOMING * home_dir(Z_AXIS) * (-1);    // Set destination away from bed
               feedrate = max_feedrate[Z_AXIS];
-              plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate, active_extruder);
+              plan_buffer_line_destinationXYZE(feedrate);
               st_synchronize();
 
               homeaxis(Z_AXIS);
@@ -2744,7 +2764,7 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
       // Set the planner and stepper routine positions.
       // At this point the mesh bed leveling and world2machine corrections are disabled and current_position
       // contains the machine coordinates.
-      plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+      plan_set_position_curposXYZE();
 
       #ifdef ENDSTOPS_ONLY_FOR_HOMING
         enable_endstops(false);
@@ -2856,7 +2876,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 	enable_endstops(false);
 	current_position[X_AXIS] += 5;
 	current_position[Y_AXIS] += 5;
-	plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
+	plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40);
 	st_synchronize();
 
 	// Let the user move the Z axes up to the end stoppers.
@@ -2906,7 +2926,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 			
 		bool endstops_enabled  = enable_endstops(false);
         current_position[Z_AXIS] -= 1; //move 1mm down with disabled endstop
-        plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
+        plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40);
         st_synchronize();
 
 		// Move the print head close to the bed.
@@ -2917,7 +2937,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 		tmc2130_home_enter(Z_AXIS_MASK);
 #endif //TMC2130
 
-		plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
+		plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40);
 
 		st_synchronize();
 #ifdef TMC2130
@@ -2958,7 +2978,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 				clean_up_after_endstop_move(l_feedmultiply);
 				// Print head up.
 				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
+				plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40);
 				st_synchronize();
 //#ifndef NEW_XYZCAL
 				if (result >= 0)
@@ -2978,7 +2998,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
 					clean_up_after_endstop_move(l_feedmultiply);
 					// Print head up.
 					current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-					plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
+					plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40);
 					st_synchronize();
 					// if (result >= 0) babystep_apply();					
 					#endif //HEATBED_V2
@@ -3091,18 +3111,18 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
 
     //Retract E
     current_position[E_AXIS] += e_shift;
-    plan_buffer_line_curposXYZE(FILAMENTCHANGE_RFEED, active_extruder);
+    plan_buffer_line_curposXYZE(FILAMENTCHANGE_RFEED);
     st_synchronize();
 
     //Lift Z
     current_position[Z_AXIS] += z_shift;
-    plan_buffer_line_curposXYZE(FILAMENTCHANGE_ZFEED, active_extruder);
+    plan_buffer_line_curposXYZE(FILAMENTCHANGE_ZFEED);
     st_synchronize();
 
     //Move XY to side
     current_position[X_AXIS] = x_position;
     current_position[Y_AXIS] = y_position;
-    plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED, active_extruder);
+    plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED);
     st_synchronize();
 
     //Beep, manage nozzle heater and wait for user to start unload filament
@@ -3127,7 +3147,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
 			lcd_set_cursor(0, 2);
 			lcd_puts_P(_T(MSG_PLEASE_WAIT));
 			current_position[X_AXIS] -= 100;
-			plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED, active_extruder);
+			plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED);
 			st_synchronize();
 			lcd_show_fullscreen_message_and_wait_P(_i("Please open idler and remove filament manually."));////MSG_CHECK_IDLER c=20 r=4
         }
@@ -3164,7 +3184,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
     if (!automatic)
     {
         current_position[E_AXIS] += FILAMENTCHANGE_RECFEED;
-        plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED, active_extruder);
+        plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED);
     }
 
     //Move XY back
@@ -3222,12 +3242,12 @@ void gcode_M701()
 
 		lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT));
 		current_position[E_AXIS] += 40;
-		plan_buffer_line_curposXYZE(400 / 60, active_extruder); //fast sequence
+		plan_buffer_line_curposXYZE(400 / 60); //fast sequence
 		st_synchronize();
 
         raise_z_above(MIN_Z_FOR_LOAD, false);
 		current_position[E_AXIS] += 30;
-		plan_buffer_line_curposXYZE(400 / 60, active_extruder); //fast sequence
+		plan_buffer_line_curposXYZE(400 / 60); //fast sequence
 		
 		load_filament_final_feed(); //slow sequence
 		st_synchronize();
@@ -3273,37 +3293,24 @@ void gcode_M701()
  */
 static void gcode_PRUSA_SN()
 {
-    if (farm_mode) {
-        selectedSerialPort = 0;
-        putchar(';');
-        putchar('S');
-        int numbersRead = 0;
-        ShortTimer timeout;
-        timeout.start();
-
-        while (numbersRead < 19) {
-            while (MSerial.available() > 0) {
-                uint8_t serial_char = MSerial.read();
-                selectedSerialPort = 1;
-                putchar(serial_char);
-                numbersRead++;
-                selectedSerialPort = 0;
-            }
-            if (timeout.expired(100u)) break;
-        }
-        selectedSerialPort = 1;
-        putchar('\n');
-#if 0
-        for (int b = 0; b < 3; b++) {
-            _tone(BEEPER, 110);
-            _delay(50);
-            _noTone(BEEPER);
-            _delay(50);
+    uint8_t selectedSerialPort_bak = selectedSerialPort;
+    char SN[20];
+    selectedSerialPort = 0;
+    SERIAL_ECHOLNRPGM(PSTR(";S"));
+    uint8_t numbersRead = 0;
+    ShortTimer timeout;
+    timeout.start();
+
+    while (numbersRead < (sizeof(SN) - 1)) {
+        if (MSerial.available() > 0) {
+            SN[numbersRead] = MSerial.read();
+            numbersRead++;
         }
-#endif
-    } else {
-        puts_P(_N("Not in farm mode."));
+        if (timeout.expired(100u)) break;
     }
+    SN[numbersRead] = 0;
+    selectedSerialPort = selectedSerialPort_bak;
+    SERIAL_ECHOLN(SN);
 }
 //! Detection of faulty RAMBo 1.1b boards equipped with bigger capacitors
 //! at the TACH_1 pin, which causes bad detection of print fan speed.
@@ -3356,6 +3363,48 @@ static void gcode_PRUSA_BadRAMBoFanTest(){
 #endif
 }
 
+
+// G92 - Set current position to coordinates given
+static void gcode_G92()
+{
+    bool codes[NUM_AXIS];
+    float values[NUM_AXIS];
+
+    // Check which axes need to be set
+    for(uint8_t i = 0; i < NUM_AXIS; ++i)
+    {
+        codes[i] = code_seen(axis_codes[i]);
+        if(codes[i])
+            values[i] = code_value();
+    }
+
+    if((codes[E_AXIS] && values[E_AXIS] == 0) &&
+       (!codes[X_AXIS] && !codes[Y_AXIS] && !codes[Z_AXIS]))
+    {
+        // As a special optimization, when _just_ clearing the E position
+        // we schedule a flag asynchronously along with the next block to
+        // reset the starting E position instead of stopping the planner
+        current_position[E_AXIS] = 0;
+        plan_reset_next_e();
+    }
+    else
+    {
+        // In any other case we're forced to synchronize
+        st_synchronize();
+        for(uint8_t i = 0; i < 3; ++i)
+        {
+            if(codes[i])
+                current_position[i] = values[i] + cs.add_homing[i];
+        }
+        if(codes[E_AXIS])
+            current_position[E_AXIS] = values[E_AXIS];
+
+        // Set all at once
+        plan_set_position_curposXYZE();
+    }
+}
+
+
 #ifdef BACKLASH_X
 extern uint8_t st_backlash_x;
 #endif //BACKLASH_X
@@ -3367,8 +3416,7 @@ extern uint8_t st_backlash_y;
 
 //! @brief Parse and process commands
 //!
-//! look here for descriptions of G-codes: http://linuxcnc.org/handbook/gcode/g-code.html
-//! http://objects.reprap.org/wiki/Mendel_User_Manual:_RepRapGCodes
+//! look here for descriptions of G-codes: https://reprap.org/wiki/G-code
 //!
 //!
 //! Implemented Codes 
@@ -3387,7 +3435,7 @@ extern uint8_t st_backlash_y;
 //!@n G4  - Dwell S<seconds> or P<milliseconds>
 //!@n G10 - retract filament according to settings of M207
 //!@n G11 - retract recover filament according to settings of M208
-//!@n G28 - Home all Axis
+//!@n G28 - Home all Axes
 //!@n G29 - Detailed Z-Probe, probes the bed at 3 or more points.  Will fail if you haven't homed yet.
 //!@n G30 - Single Z Probe, probes bed at current XY location.
 //!@n G31 - Dock sled (Z_PROBE_SLED only)
@@ -3504,7 +3552,11 @@ extern uint8_t st_backlash_y;
 
 /** \ingroup GCodes */
 
-//! _This is a list of currently implemented G Codes in Prusa firmware (dynamically generated from doxygen)_
+//! _This is a list of currently implemented G Codes in Prusa firmware (dynamically generated from doxygen)._ 
+/**
+They are shown in order of appearance in the code.
+There are reasons why some G Codes aren't in numerical order.
+*/
 
 
 void process_commands()
@@ -3548,7 +3600,25 @@ void process_commands()
   float tmp_motor_loud[3] = DEFAULT_PWM_MOTOR_CURRENT_LOUD;
   int8_t SilentMode;
 #endif
+  /*!
   
+  ---------------------------------------------------------------------------------
+  ### M117 - Display Message <a href="https://reprap.org/wiki/G-code#M117:_Display_Message">M117: Display Message</a>
+  This causes the given message to be shown in the status line on an attached LCD.
+  It is processed early as to allow printing messages that contain G, M, N or T.
+  
+  ---------------------------------------------------------------------------------
+  ### Special internal commands
+  These are used by internal functions to process certain actions in the right order. Some of these are also usable by the user.
+  They are processed early as the commands are complex (strings).
+  These are only available on the MK3(S) as these require TMC2130 drivers:
+    - CRASH DETECTED
+    - CRASH RECOVER
+    - CRASH_CANCEL
+    - TMC_SET_WAVE
+    - TMC_SET_STEP
+    - TMC_SET_CHOP
+ */
   if (code_seen("M117")) { //moved to highest priority place to be able to to print strings which includes "G", "PRUSA" and "^"
 	  starpos = (strchr(strchr_pointer + 5, '*'));
 	  if (starpos != NULL)
@@ -3560,7 +3630,7 @@ void process_commands()
 	else if (strncmp_P(CMDBUFFER_CURRENT_STRING, PSTR("CRASH_"), 6) == 0)
 	{
 
-    //! ### CRASH_DETECTED - TMC2130
+    // ### CRASH_DETECTED - TMC2130
     // ---------------------------------
 	  if(code_seen("CRASH_DETECTED"))
 	  {
@@ -3570,12 +3640,12 @@ void process_commands()
 		  crashdet_detected(mask);
 	  }
 
-    //! ### CRASH_RECOVER - TMC2130
+    // ### CRASH_RECOVER - TMC2130
     // ----------------------------------
 	  else if(code_seen("CRASH_RECOVER"))
 		  crashdet_recover();
 
-    //! ### CRASH_CANCEL - TMC2130
+    // ### CRASH_CANCEL - TMC2130
     // ----------------------------------
 	  else if(code_seen("CRASH_CANCEL"))
 		  crashdet_cancel();
@@ -3583,7 +3653,7 @@ void process_commands()
 	else if (strncmp_P(CMDBUFFER_CURRENT_STRING, PSTR("TMC_"), 4) == 0)
 	{
     
-    //! ### TMC_SET_WAVE_ 
+    // ### TMC_SET_WAVE_ 
     // --------------------
 		if (strncmp_P(CMDBUFFER_CURRENT_STRING + 4, PSTR("SET_WAVE_"), 9) == 0)
 		{
@@ -3596,7 +3666,7 @@ void process_commands()
 			}
 		}
     
-    //! ### TMC_SET_STEP_
+    // ### TMC_SET_STEP_
     //  ------------------
 		else if (strncmp_P(CMDBUFFER_CURRENT_STRING + 4, PSTR("SET_STEP_"), 9) == 0)
 		{
@@ -3610,7 +3680,7 @@ void process_commands()
 			}
 		}
 
-    //! ### TMC_SET_CHOP_
+    // ### TMC_SET_CHOP_
     //  -------------------
 		else if (strncmp_P(CMDBUFFER_CURRENT_STRING + 4, PSTR("SET_CHOP_"), 9) == 0)
 		{
@@ -3665,13 +3735,14 @@ void process_commands()
 #endif //TMC2130
   else if(code_seen("PRUSA")){ 
     /*!
-    *
-    ### PRUSA - Internal command set
+    ---------------------------------------------------------------------------------
+    ### PRUSA - Internal command set <a href="https://reprap.org/wiki/G-code#G98:_Activate_farm_mode">G98: Activate farm mode - Notes</a>
     
     Set of internal PRUSA commands
-      
-          PRUSA [ Ping | PRN | FAN | fn | thx | uvlo | MMURES | RESET | fv | M28 | SN | Fir | Rev | Lang | Lz | Beat | FR ]
-      
+    #### Usage
+         PRUSA [ Ping | PRN | FAN | fn | thx | uvlo | MMURES | RESET | fv | M28 | SN | Fir | Rev | Lang | Lz | Beat | FR ]
+    
+    #### Parameters
       - `Ping` 
       - `PRN` - Prints revision of the printer
       - `FAN` - Prints fan details
@@ -3692,7 +3763,6 @@ void process_commands()
       - `nozzle set <diameter>` - set nozzle diameter (farm mode only), e.g. `PRUSA nozzle set 0.4`
       - `nozzle D<diameter>` - check the nozzle diameter (farm mode only), works like M862.1 P, e.g. `PRUSA nozzle D0.4`
       - `nozzle` - prints nozzle diameter (farm mode only), works like M862.1 P, e.g. `PRUSA nozzle`
-    *
     */
 
 
@@ -3707,7 +3777,7 @@ void process_commands()
 
         } else if( code_seen("FANPINTST") ){
             gcode_PRUSA_BadRAMBoFanTest();
-        }else if (code_seen("FAN")) { //! PRUSA FAN
+        }else if (code_seen("FAN")) { // PRUSA FAN
 			printf_P(_N("E0:%d RPM\nPRN0:%d RPM\n"), 60*fan_speed[0], 60*fan_speed[1]);
 		}else if (code_seen("fn")) { // PRUSA fn
 		  if (farm_mode) {
@@ -3737,9 +3807,7 @@ void process_commands()
 #if (defined(WATCHDOG) && (MOTHERBOARD == BOARD_EINSY_1_0a))
                 boot_app_magic = BOOT_APP_MAGIC;
                 boot_app_flags = BOOT_APP_FLG_RUN;
-				wdt_enable(WDTO_15MS);
-				cli();
-				while(1);
+                softReset();
 #else //WATCHDOG
                 asm volatile("jmp 0x3E000");
 #endif //WATCHDOG
@@ -3791,6 +3859,17 @@ void process_commands()
     } else if(code_seen("FR")) { // PRUSA FR
         // Factory full reset
         factory_reset(0);
+    } else if(code_seen("MBL")) { // PRUSA MBL
+        // Change the MBL status without changing the logical Z position.
+        if(code_seen("V")) {
+            bool value = code_value_short();
+            st_synchronize();
+            if(value != mbl.active) {
+                mbl.active = value;
+                // Use plan_set_z_position to reset the physical values
+                plan_set_z_position(current_position[Z_AXIS]);
+            }
+        }
 
 //-//
 /*
@@ -3876,8 +3955,24 @@ eeprom_update_word((uint16_t*)EEPROM_NOZZLE_DIAMETER_uM,0xFFFF);
     switch (gcode_in_progress)
     {
 
-    //! ### G0, G1 - Coordinated movement X Y Z E
-    // --------------------------------------      
+    /*!
+    ---------------------------------------------------------------------------------
+	 # G Codes
+	### G0, G1 - Coordinated movement X Y Z E <a href="https://reprap.org/wiki/G-code#G0_.26_G1:_Move">G0 & G1: Move</a> 
+	In Prusa Firmware G0 and G1 are the same.
+	#### Usage
+	
+	      G0 [ X | Y | Z | E | F | S ]
+		  G1 [ X | Y | Z | E | F | S ]
+	
+	#### Parameters
+	  - `X` - The position to move to on the X axis
+	  - `Y` - The position to move to on the Y axis
+	  - `Z` - The position to move to on the Z axis
+	  - `E` - The amount to extrude between the starting point and ending point
+	  - `F` - The feedrate per minute of the move between the starting point and ending point (if supplied)
+	  
+    */
     case 0: // G0 -> G1
     case 1: // G1
       if(Stopped == false) {
@@ -4087,8 +4182,25 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       }
       break;
 
-    //! ### G2 - CW ARC
-    // ------------------------------     
+    /*!
+	### G2, G3 - Controlled Arc Move <a href="https://reprap.org/wiki/G-code#G2_.26_G3:_Controlled_Arc_Move">G2 & G3: Controlled Arc Move</a>
+	
+    These commands don't propperly work with MBL enabled. The compensation only happens at the end of the move, so avoid long arcs.
+    
+	#### Usage
+	
+	      G2 [ X | Y | I | E | F ] (Clockwise Arc)
+		  G3 [ X | Y | I | E | F ] (Counter-Clockwise Arc)
+	
+	#### Parameters
+	  - `X` - The position to move to on the X axis
+	  - `Y` - The position to move to on the Y axis
+	  - `I` - The point in X space from the current X position to maintain a constant distance from
+	  - `J` - The point in Y space from the current Y position to maintain a constant distance from
+	  - `E` - The amount to extrude between the starting point and ending point
+	  - `F` - The feedrate per minute of the move between the starting point and ending point (if supplied)
+	
+    */
     case 2: 
       if(Stopped == false) {
         get_arc_coordinates();
@@ -4096,8 +4208,6 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       }
       break;
  
-
-    //! ### G3  - CCW ARC
     // -------------------------------
     case 3: 
       if(Stopped == false) {
@@ -4107,8 +4217,19 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       break;
 
 
-    //! ### G4 - Dwell
-    // -------------------------------
+    /*!
+	### G4 - Dwell <a href="https://reprap.org/wiki/G-code#G4:_Dwell">G4: Dwell</a>
+	Pause the machine for a period of time.
+	
+	#### Usage
+	
+	    G4 [ P | S ]
+	
+	#### Parameters
+	  - `P` - Time to wait, in milliseconds
+	  - `S` - Time to wait, in seconds
+	
+    */
     case 4: 
       codenum = 0;
       if(code_seen('P')) codenum = code_value(); // milliseconds to wait
@@ -4126,8 +4247,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       #ifdef FWRETRACT
       
 
-    //! ### G10 Retract
-    // ------------------------------
+    /*!
+	### G10 - Retract <a href="https://reprap.org/wiki/G-code#G10:_Retract">G10: Retract</a>
+	Retracts filament according to settings of `M207`
+    */
     case 10: 
        #if EXTRUDERS > 1
         retracted_swap[active_extruder]=(code_seen('S') && code_value_long() == 1); // checks for swap retract argument
@@ -4138,8 +4261,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       break;
       
 
-    //! ### G11 - Retract recover
-    // ----------------------------- 
+    /*!
+	### G11 - Retract recover <a href="https://reprap.org/wiki/G-code#G11:_Unretract">G11: Unretract</a>
+	Unretracts/recovers filament according to settings of `M208`
+    */
     case 11: 
        #if EXTRUDERS > 1
         retract(false,retracted_swap[active_extruder]);
@@ -4150,8 +4275,28 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       #endif //FWRETRACT
     
 
-    //! ### G28 - Home all Axis one at a time
-    // --------------------------------------------
+    /*!
+	### G21 - Sets Units to Millimters <a href="https://reprap.org/wiki/G-code#G21:_Set_Units_to_Millimeters">G21: Set Units to Millimeters</a>
+	Units are in millimeters. Prusa doesn't support inches.
+    */
+    case 21: 
+      break; //Doing nothing. This is just to prevent serial UNKOWN warnings.
+    
+
+    /*!
+    ### G28 - Home all Axes one at a time <a href="https://reprap.org/wiki/G-code#G28:_Move_to_Origin_.28Home.29">G28: Move to Origin (Home)</a>
+    Using `G28` without any parameters will perfom homing of all axes AND mesh bed leveling, while `G28 W` will just home all axes (no mesh bed leveling).
+    #### Usage
+	
+         G28 [ X | Y | Z | W | C ]
+    
+	#### Parameters
+     - `X` - Flag to go back to the X axis origin
+     - `Y` - Flag to go back to the Y axis origin
+     - `Z` - Flag to go back to the Z axis origin
+     - `W` - Suppress mesh bed leveling if `X`, `Y` or `Z` are not provided
+     - `C` - Calibrate X and Y origin (home) - Only on MK3/s
+	*/
     case 28: 
     {
       long home_x_value = 0;
@@ -4183,8 +4328,12 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 #ifdef ENABLE_AUTO_BED_LEVELING
     
 
-    //! ### G29 - Detailed Z-Probe
-    // --------------------------------    
+    /*!
+	### G29 - Detailed Z-Probe <a href="https://reprap.org/wiki/G-code#G29:_Detailed_Z-Probe">G29: Detailed Z-Probe</a>
+	In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+	
+	See `G81`
+    */
     case 29: 
         {
             #if Z_MIN_PIN == -1
@@ -4210,7 +4359,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
             current_position[X_AXIS] = uncorrected_position.x;
             current_position[Y_AXIS] = uncorrected_position.y;
             current_position[Z_AXIS] = uncorrected_position.z;
-            plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+            plan_set_position_curposXYZE();
             int l_feedmultiply = setup_for_endstop_move();
 
             feedrate = homing_feedrate[Z_AXIS];
@@ -4324,13 +4473,15 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 
             apply_rotation_xyz(plan_bed_level_matrix, x_tmp, y_tmp, z_tmp);         //Apply the correction sending the probe offset
             current_position[Z_AXIS] = z_tmp - real_z + current_position[Z_AXIS];   //The difference is added to current position and sent to planner.
-            plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+            plan_set_position_curposXYZE();
         }
         break;
 #ifndef Z_PROBE_SLED
 
-    //! ### G30 - Single Z Probe
-    // ------------------------------------        
+    /*!
+	### G30 - Single Z Probe <a href="https://reprap.org/wiki/G-code#G30:_Single_Z-Probe">G30: Single Z-Probe</a>
+	In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+    */
     case 30: 
         {
             st_synchronize();
@@ -4354,15 +4505,19 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
         break;
 #else
 
-    //! ### G31 - Dock the sled
-    // ---------------------------
+    /*!
+	### G31 - Dock the sled <a href="https://reprap.org/wiki/G-code#G31:_Dock_Z_Probe_sled">G31: Dock Z Probe sled</a>
+	In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+    */
     case 31: 
         dock_sled(true);
         break;
 
 
-    //! ### G32 - Undock the sled
-    // ----------------------------     
+    /*!
+	### G32 - Undock the sled <a href="https://reprap.org/wiki/G-code#G32:_Undock_Z_Probe_sled">G32: Undock Z Probe sled</a>
+	In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+    */
     case 32: 
         dock_sled(false);
         break;
@@ -4371,8 +4526,11 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
             
 #ifdef MESH_BED_LEVELING
 
-    //! ### G30 - Single Z Probe
-    // ----------------------------    
+    /*!
+	### G30 - Single Z Probe <a href="https://reprap.org/wiki/G-code#G30:_Single_Z-Probe">G30: Single Z-Probe</a>
+    Sensor must be over the bed.
+    The maximum travel distance before an error is triggered is 10mm.
+    */
     case 30: 
         {
             st_synchronize();
@@ -4389,8 +4547,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
         }
         break;
 	
-  //! ### G75 - Print temperature interpolation
-  // ---------------------------------------------
+  /*!
+  ### G75 - Print temperature interpolation <a href="https://reprap.org/wiki/G-code#G75:_Print_temperature_interpolation">G75: Print temperature interpolation</a>
+  Show/print PINDA temperature interpolating.
+  */
 	case 75:
 	{
 		for (int i = 40; i <= 110; i++)
@@ -4398,159 +4558,181 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 	}
 	break;
 
-  //! ### G76 - PINDA probe temperature calibration
-  // ------------------------------------------------
-	case 76: 
+  /*!
+  ### G76 - PINDA probe temperature calibration <a href="https://reprap.org/wiki/G-code#G76:_PINDA_probe_temperature_calibration">G76: PINDA probe temperature calibration</a>
+  This G-code is used to calibrate the temperature drift of the PINDA (inductive Sensor).
+
+  The PINDAv2 sensor has a built-in thermistor which has the advantage that the calibration can be done once for all materials.
+  
+  The Original i3 Prusa MK2/s uses PINDAv1 and this calibration improves the temperature drift, but not as good as the PINDAv2.
+
+  superPINDA sensor has internal temperature compensation and no thermistor output. There is no point of doing temperature calibration in such case.
+  If PINDA_THERMISTOR and DETECT_SUPERPINDA is defined during compilation, calibration is skipped with serial message "No PINDA thermistor".
+  This can be caused also if PINDA thermistor connection is broken or PINDA temperature is lower than PINDA_MINTEMP.
+
+  #### Example
+  
+  ```
+  G76
+  
+  echo PINDA probe calibration start
+  echo start temperature: 35.0°
+  echo ...
+  echo PINDA temperature -- Z shift (mm): 0.---
+  ```
+  */
+  case 76: 
 	{
 #ifdef PINDA_THERMISTOR
-		if (true)
-		{
+        if (!has_temperature_compensation())
+        {
+            SERIAL_ECHOLNPGM("No PINDA thermistor");
+            break;
+        }
 
-			if (calibration_status() >= CALIBRATION_STATUS_XYZ_CALIBRATION) {
-				//we need to know accurate position of first calibration point
-				//if xyz calibration was not performed yet, interrupt temperature calibration and inform user that xyz cal. is needed
-				lcd_show_fullscreen_message_and_wait_P(_i("Please run XYZ calibration first."));
-				break;
-			}
-			
-			if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS]))
-			{
-				// We don't know where we are! HOME!
-				// Push the commands to the front of the message queue in the reverse order!
-				// There shall be always enough space reserved for these commands.
-				repeatcommand_front(); // repeat G76 with all its parameters
-				enquecommand_front_P((PSTR("G28 W0")));
-				break;
-			}
-			lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4
-			bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false);
-			
-			if (result)
-			{
-				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-				current_position[Z_AXIS] = 50;
-				current_position[Y_AXIS] = 180;
-				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-				st_synchronize();
-				lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET));
-				current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
-				current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
-				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-				st_synchronize();
-				gcode_G28(false, false, true);
+        if (calibration_status() >= CALIBRATION_STATUS_XYZ_CALIBRATION) {
+            //we need to know accurate position of first calibration point
+            //if xyz calibration was not performed yet, interrupt temperature calibration and inform user that xyz cal. is needed
+            lcd_show_fullscreen_message_and_wait_P(_i("Please run XYZ calibration first."));
+            break;
+        }
 
-			}
-			if ((current_temperature_pinda > 35) && (farm_mode == false)) {
-				//waiting for PIDNA probe to cool down in case that we are not in farm mode
-				current_position[Z_AXIS] = 100;
-				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-				if (lcd_wait_for_pinda(35) == false) { //waiting for PINDA probe to cool, if this takes more then time expected, temp. cal. fails
-					lcd_temp_cal_show_result(false);
-					break;
-				}
-			}
-			lcd_update_enable(true);
-			KEEPALIVE_STATE(NOT_BUSY); //no need to print busy messages as we print current temperatures periodicaly
-			SERIAL_ECHOLNPGM("PINDA probe calibration start");
+        if (!(axis_known_position[X_AXIS] && axis_known_position[Y_AXIS] && axis_known_position[Z_AXIS]))
+        {
+            // We don't know where we are! HOME!
+            // Push the commands to the front of the message queue in the reverse order!
+            // There shall be always enough space reserved for these commands.
+            repeatcommand_front(); // repeat G76 with all its parameters
+            enquecommand_front_P((PSTR("G28 W0")));
+            break;
+        }
+        lcd_show_fullscreen_message_and_wait_P(_i("Stable ambient temperature 21-26C is needed a rigid stand is required."));////MSG_TEMP_CAL_WARNING c=20 r=4
+        bool result = lcd_show_fullscreen_message_yes_no_and_wait_P(_T(MSG_STEEL_SHEET_CHECK), false, false);
+
+        if (result)
+        {
+            current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
+            plan_buffer_line_curposXYZE(3000 / 60);
+            current_position[Z_AXIS] = 50;
+            current_position[Y_AXIS] = 180;
+            plan_buffer_line_curposXYZE(3000 / 60);
+            st_synchronize();
+            lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET));
+            current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
+            current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
+            plan_buffer_line_curposXYZE(3000 / 60);
+            st_synchronize();
+            gcode_G28(false, false, true);
+
+        }
+        if ((current_temperature_pinda > 35) && (farm_mode == false)) {
+            //waiting for PIDNA probe to cool down in case that we are not in farm mode
+            current_position[Z_AXIS] = 100;
+            plan_buffer_line_curposXYZE(3000 / 60);
+            if (lcd_wait_for_pinda(35) == false) { //waiting for PINDA probe to cool, if this takes more then time expected, temp. cal. fails
+                lcd_temp_cal_show_result(false);
+                break;
+            }
+        }
+        lcd_update_enable(true);
+        KEEPALIVE_STATE(NOT_BUSY); //no need to print busy messages as we print current temperatures periodicaly
+        SERIAL_ECHOLNPGM("PINDA probe calibration start");
 
-			float zero_z;
-			int z_shift = 0; //unit: steps
-			float start_temp = 5 * (int)(current_temperature_pinda / 5);
-			if (start_temp < 35) start_temp = 35;
-			if (start_temp < current_temperature_pinda) start_temp += 5;
-			printf_P(_N("start temperature: %.1f\n"), start_temp);
+        float zero_z;
+        int z_shift = 0; //unit: steps
+        float start_temp = 5 * (int)(current_temperature_pinda / 5);
+        if (start_temp < 35) start_temp = 35;
+        if (start_temp < current_temperature_pinda) start_temp += 5;
+        printf_P(_N("start temperature: %.1f\n"), start_temp);
 
 //			setTargetHotend(200, 0);
-			setTargetBed(70 + (start_temp - 30));
+        setTargetBed(70 + (start_temp - 30));
 
-			custom_message_type = CustomMsg::TempCal;
-			custom_message_state = 1;
-			lcd_setstatuspgm(_T(MSG_TEMP_CALIBRATION));
-			current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-			current_position[X_AXIS] = PINDA_PREHEAT_X;
-			current_position[Y_AXIS] = PINDA_PREHEAT_Y;
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-			current_position[Z_AXIS] = PINDA_PREHEAT_Z;
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-			st_synchronize();
+        custom_message_type = CustomMsg::TempCal;
+        custom_message_state = 1;
+        lcd_setstatuspgm(_T(MSG_TEMP_CALIBRATION));
+        current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
+        plan_buffer_line_curposXYZE(3000 / 60);
+        current_position[X_AXIS] = PINDA_PREHEAT_X;
+        current_position[Y_AXIS] = PINDA_PREHEAT_Y;
+        plan_buffer_line_curposXYZE(3000 / 60);
+        current_position[Z_AXIS] = PINDA_PREHEAT_Z;
+        plan_buffer_line_curposXYZE(3000 / 60);
+        st_synchronize();
 
-			while (current_temperature_pinda < start_temp)
-			{
-				delay_keep_alive(1000);
-				serialecho_temperatures();
-			}
+        while (current_temperature_pinda < start_temp)
+        {
+            delay_keep_alive(1000);
+            serialecho_temperatures();
+        }
 
-			eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); //invalidate temp. calibration in case that in will be aborted during the calibration process 
+        eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); //invalidate temp. calibration in case that in will be aborted during the calibration process
 
-			current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-			current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
-			current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-			st_synchronize();
+        current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
+        plan_buffer_line_curposXYZE(3000 / 60);
+        current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
+        current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
+        plan_buffer_line_curposXYZE(3000 / 60);
+        st_synchronize();
 
-			bool find_z_result = find_bed_induction_sensor_point_z(-1.f);
-			if (find_z_result == false) {
-				lcd_temp_cal_show_result(find_z_result);
-				break;
-			}
-			zero_z = current_position[Z_AXIS];
+        bool find_z_result = find_bed_induction_sensor_point_z(-1.f);
+        if (find_z_result == false) {
+            lcd_temp_cal_show_result(find_z_result);
+            break;
+        }
+        zero_z = current_position[Z_AXIS];
 
-			printf_P(_N("\nZERO: %.3f\n"), current_position[Z_AXIS]);
+        printf_P(_N("\nZERO: %.3f\n"), current_position[Z_AXIS]);
 
-			int i = -1; for (; i < 5; i++)
-			{
-				float temp = (40 + i * 5);
-				printf_P(_N("\nStep: %d/6 (skipped)\nPINDA temperature: %d Z shift (mm):0\n"), i + 2, (40 + i*5));
-				if (i >= 0) EEPROM_save_B(EEPROM_PROBE_TEMP_SHIFT + i * 2, &z_shift);
-				if (start_temp <= temp) break;
-			}
+        int i = -1; for (; i < 5; i++)
+        {
+            float temp = (40 + i * 5);
+            printf_P(_N("\nStep: %d/6 (skipped)\nPINDA temperature: %d Z shift (mm):0\n"), i + 2, (40 + i*5));
+            if (i >= 0) EEPROM_save_B(EEPROM_PROBE_TEMP_SHIFT + i * 2, &z_shift);
+            if (start_temp <= temp) break;
+        }
 
-			for (i++; i < 5; i++)
-			{
-				float temp = (40 + i * 5);
-				printf_P(_N("\nStep: %d/6\n"), i + 2);
-				custom_message_state = i + 2;
-				setTargetBed(50 + 10 * (temp - 30) / 5);
+        for (i++; i < 5; i++)
+        {
+            float temp = (40 + i * 5);
+            printf_P(_N("\nStep: %d/6\n"), i + 2);
+            custom_message_state = i + 2;
+            setTargetBed(50 + 10 * (temp - 30) / 5);
 //				setTargetHotend(255, 0);
-				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-				current_position[X_AXIS] = PINDA_PREHEAT_X;
-				current_position[Y_AXIS] = PINDA_PREHEAT_Y;
-				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-				current_position[Z_AXIS] = PINDA_PREHEAT_Z;
-				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-				st_synchronize();
-				while (current_temperature_pinda < temp)
-				{
-					delay_keep_alive(1000);
-					serialecho_temperatures();
-				}
-				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-				current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
-				current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
-				plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
-				st_synchronize();
-				find_z_result = find_bed_induction_sensor_point_z(-1.f);
-				if (find_z_result == false) {
-					lcd_temp_cal_show_result(find_z_result);
-					break;
-				}
-				z_shift = (int)((current_position[Z_AXIS] - zero_z)*cs.axis_steps_per_unit[Z_AXIS]);
+            current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
+            plan_buffer_line_curposXYZE(3000 / 60);
+            current_position[X_AXIS] = PINDA_PREHEAT_X;
+            current_position[Y_AXIS] = PINDA_PREHEAT_Y;
+            plan_buffer_line_curposXYZE(3000 / 60);
+            current_position[Z_AXIS] = PINDA_PREHEAT_Z;
+            plan_buffer_line_curposXYZE(3000 / 60);
+            st_synchronize();
+            while (current_temperature_pinda < temp)
+            {
+                delay_keep_alive(1000);
+                serialecho_temperatures();
+            }
+            current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
+            plan_buffer_line_curposXYZE(3000 / 60);
+            current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
+            current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
+            plan_buffer_line_curposXYZE(3000 / 60);
+            st_synchronize();
+            find_z_result = find_bed_induction_sensor_point_z(-1.f);
+            if (find_z_result == false) {
+                lcd_temp_cal_show_result(find_z_result);
+                break;
+            }
+            z_shift = (int)((current_position[Z_AXIS] - zero_z)*cs.axis_steps_per_unit[Z_AXIS]);
 
-				printf_P(_N("\nPINDA temperature: %.1f Z shift (mm): %.3f"), current_temperature_pinda, current_position[Z_AXIS] - zero_z);
+            printf_P(_N("\nPINDA temperature: %.1f Z shift (mm): %.3f"), current_temperature_pinda, current_position[Z_AXIS] - zero_z);
 
-				EEPROM_save_B(EEPROM_PROBE_TEMP_SHIFT + i * 2, &z_shift);
+            EEPROM_save_B(EEPROM_PROBE_TEMP_SHIFT + i * 2, &z_shift);
 
-			}
-			lcd_temp_cal_show_result(true);
+        }
+        lcd_temp_cal_show_result(true);
 
-			break;
-		}
-#endif //PINDA_THERMISTOR
+#else //PINDA_THERMISTOR
 
 		setTargetBed(PINDA_MIN_T);
 		float zero_z;
@@ -4572,7 +4754,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		current_position[X_AXIS] = PINDA_PREHEAT_X;
 		current_position[Y_AXIS] = PINDA_PREHEAT_Y;
 		current_position[Z_AXIS] = PINDA_PREHEAT_Z;
-		plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(3000 / 60);
 		st_synchronize();
 		
 		while (abs(degBed() - PINDA_MIN_T) > 1) {
@@ -4588,11 +4770,11 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); //invalidate temp. calibration in case that in will be aborted during the calibration process 
 
 		current_position[Z_AXIS] = 5;
-		plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(3000 / 60);
 
 		current_position[X_AXIS] = BED_X0;
 		current_position[Y_AXIS] = BED_Y0;
-		plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
+		plan_buffer_line_curposXYZE(3000 / 60);
 		st_synchronize();
 		
 		find_bed_induction_sensor_point_z(-1.f);
@@ -4609,7 +4791,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			current_position[X_AXIS] = PINDA_PREHEAT_X;
 			current_position[Y_AXIS] = PINDA_PREHEAT_Y;
 			current_position[Z_AXIS] = PINDA_PREHEAT_Z;
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60);
 			st_synchronize();
 			while (degBed() < t_c) {
 				delay_keep_alive(1000);
@@ -4620,10 +4802,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 				serialecho_temperatures();
 			}
 			current_position[Z_AXIS] = 5;
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60);
 			current_position[X_AXIS] = BED_X0;
 			current_position[Y_AXIS] = BED_Y0;
-			plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
+			plan_buffer_line_curposXYZE(3000 / 60);
 			st_synchronize();
 			find_bed_induction_sensor_point_z(-1.f);
 			z_shift = (int)((current_position[Z_AXIS] - zero_z)*cs.axis_steps_per_unit[Z_AXIS]);
@@ -4646,22 +4828,38 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			disable_e2();
 			setTargetBed(0); //set bed target temperature back to 0
 		lcd_show_fullscreen_message_and_wait_P(_T(MSG_TEMP_CALIBRATION_DONE));
-		temp_cal_active = true;
 		eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, 1);
 		lcd_update_enable(true);
 		lcd_update(2);		
 
 		
-
+#endif //PINDA_THERMISTOR
 	}
 	break;
 
 
-	//! ### G80 - Mesh-based Z probe 
-  // -----------------------------------
-  
-	/*
-  * Probes a grid and produces a mesh to compensate for variable bed height
+    /*!
+    ### G80 - Mesh-based Z probe <a href="https://reprap.org/wiki/G-code#G80:_Mesh-based_Z_probe">G80: Mesh-based Z probe</a>
+    Default 3x3 grid can be changed on MK2.5/s and MK3/s to 7x7 grid.
+    #### Usage
+	  
+          G80 [ N | R | V | L | R | F | B ]
+      
+	#### Parameters
+      - `N` - Number of mesh points on x axis. Default is 3. Valid values are 3 and 7.
+      - `R` - Probe retries. Default 3 max. 10
+      - `V` - Verbosity level 1=low, 10=mid, 20=high. It only can be used if the firmware has been compiled with SUPPORT_VERBOSITY active.
+      
+      Using the following parameters enables additional "manual" bed leveling correction. Valid values are -100 microns to 100 microns.
+    #### Additional Parameters
+      - `L` - Left Bed Level correct value in um.
+      - `R` - Right Bed Level correct value in um.
+      - `F` - Front Bed Level correct value in um.
+      - `B` - Back Bed Level correct value in um.
+    */
+  
+	/*
+    * Probes a grid and produces a mesh to compensate for variable bed height
 	* The S0 report the points as below
 	*  +----> X-axis
 	*  |
@@ -4694,13 +4892,8 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			// We don't know where we are! HOME!
 			// Push the commands to the front of the message queue in the reverse order!
 			// There shall be always enough space reserved for these commands.
-			if (lcd_commands_type != LcdCommands::StopPrint) {
-				repeatcommand_front(); // repeat G80 with all its parameters
-				enquecommand_front_P((PSTR("G28 W0")));
-			}
-			else {
-				mesh_bed_leveling_flag = false;
-			}
+			repeatcommand_front(); // repeat G80 with all its parameters
+			enquecommand_front_P((PSTR("G28 W0")));
 			break;
 		} 
 		
@@ -4730,23 +4923,14 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 #ifndef PINDA_THERMISTOR
 		if (run == false && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50)
 		{
-			if (lcd_commands_type != LcdCommands::StopPrint) {
-				temp_compensation_start();
-				run = true;
-				repeatcommand_front(); // repeat G80 with all its parameters
-				enquecommand_front_P((PSTR("G28 W0")));
-			}
-			else {
-				mesh_bed_leveling_flag = false;
-			}
+			temp_compensation_start();
+			run = true;
+			repeatcommand_front(); // repeat G80 with all its parameters
+			enquecommand_front_P((PSTR("G28 W0")));
 			break;
 		}
         run = false;
 #endif //PINDA_THERMISTOR
-		if (lcd_commands_type == LcdCommands::StopPrint) {
-			mesh_bed_leveling_flag = false;
-			break;
-		}
 		// Save custom message state, set a new custom message state to display: Calibrating point 9.
 		CustomMsg custom_message_type_old = custom_message_type;
 		unsigned int custom_message_state_old = custom_message_state;
@@ -4763,7 +4947,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		// Cycle through all points and probe them
 		// First move up. During this first movement, the babystepping will be reverted.
 		current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-		plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60);
 		// The move to the first calibration point.
 		current_position[X_AXIS] = BED_X0;
 		current_position[Y_AXIS] = BED_Y0;
@@ -4778,7 +4962,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
 		#endif //SUPPORT_VERBOSITY
 
-		plan_buffer_line_curposXYZE(homing_feedrate[X_AXIS] / 30, active_extruder);
+		plan_buffer_line_curposXYZE(homing_feedrate[X_AXIS] / 30);
 		// Wait until the move is finished.
 		st_synchronize();
 
@@ -4793,7 +4977,6 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		}
 		#endif // SUPPORT_VERBOSITY
 		int l_feedmultiply = setup_for_endstop_move(false); //save feedrate and feedmultiply, sets feedmultiply to 100
-		const char *kill_message = NULL;
 		while (mesh_point != nMeasPoints * nMeasPoints) {
 			// Get coords of a measuring point.
 			uint8_t ix = mesh_point % nMeasPoints; // from 0 to MESH_NUM_X_POINTS - 1
@@ -4830,7 +5013,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			if((ix == 0) && (iy == 0)) current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
 			else current_position[Z_AXIS] += 2.f / nMeasPoints; //use relative movement from Z coordinate where PINDa triggered on previous point. This makes calibration faster.
 			float init_z_bckp = current_position[Z_AXIS];
-			plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
+			plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE);
 			st_synchronize();
 
 			// Move to XY position of the sensor point.
@@ -4842,7 +5025,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			
 			#ifdef SUPPORT_VERBOSITY
 			if (verbosity_level >= 1) {
-				clamped = world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
+				bool clamped = world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
 				SERIAL_PROTOCOL(mesh_point);
 				clamped ? SERIAL_PROTOCOLPGM(": xy clamped.\n") : SERIAL_PROTOCOLPGM(": no xy clamping\n");
 			}
@@ -4851,7 +5034,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			#endif // SUPPORT_VERBOSITY
 
 			//printf_P(PSTR("after clamping: [%f;%f]\n"), current_position[X_AXIS], current_position[Y_AXIS]);
-			plan_buffer_line_curposXYZE(XY_AXIS_FEEDRATE, active_extruder);
+			plan_buffer_line_curposXYZE(XY_AXIS_FEEDRATE);
 			st_synchronize();
 
 			// Go down until endstop is hit
@@ -4863,7 +5046,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			if (init_z_bckp - current_position[Z_AXIS] < 0.1f) { //broken cable or initial Z coordinate too low. Go to MESH_HOME_Z_SEARCH and repeat last step (z-probe) again to distinguish between these two cases.
 				//printf_P(PSTR("Another attempt! Current Z position: %f\n"), current_position[Z_AXIS]);
 				current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-				plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
+				plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE);
 				st_synchronize();
 
 				if (!find_bed_induction_sensor_point_z((has_z && mesh_point > 0) ? z0 - Z_CALIBRATION_THRESHOLD : -10.f, nProbeRetry)) { //if we have data from z calibration max allowed difference is 1mm for each point, if we dont have data max difference is 10mm from initial point  
@@ -4918,7 +5101,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 			MYSERIAL.print(current_position[Z_AXIS], 5);
 		}
 		#endif // SUPPORT_VERBOSITY
-		plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
+		plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE);
 		st_synchronize();
 		if (mesh_point != nMeasPoints * nMeasPoints) {
                Sound_MakeSound(e_SOUND_TYPE_StandardAlert);
@@ -4935,14 +5118,14 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
                     // ~ Z-homing (can not be used "G28", because X & Y-homing would have been done before (Z-homing))
                     bState=enable_z_endstop(false);
                     current_position[Z_AXIS] -= 1;
-                    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
+                    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40);
                     st_synchronize();
                     enable_z_endstop(true);
 #ifdef TMC2130
                     tmc2130_home_enter(Z_AXIS_MASK);
 #endif // TMC2130
                     current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
-                    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
+                    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40);
                     st_synchronize();
 #ifdef TMC2130
                     tmc2130_home_exit();
@@ -5070,9 +5253,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 		go_home_with_z_lift();
 //		SERIAL_ECHOLNPGM("Go home finished");
 		//unretract (after PINDA preheat retraction)
-		if (degHotend(active_extruder) > EXTRUDE_MINTEMP && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) {
+		if ((degHotend(active_extruder) > EXTRUDE_MINTEMP) && eeprom_read_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE) && calibration_status_pinda() && (target_temperature_bed >= 50)) {
 			current_position[E_AXIS] += default_retraction;
-			plan_buffer_line_curposXYZE(400, active_extruder);
+			plan_buffer_line_curposXYZE(400);
 		}
 		KEEPALIVE_STATE(NOT_BUSY);
 		// Restore custom message state
@@ -5086,17 +5269,15 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 	}
 	break;
 
-        //! ### G81 - Mesh bed leveling status
-        // -----------------------------------------
-
-         /*
-         * Prints mesh bed leveling status and bed profile if activated
-         */
+        /*!
+		### G81 - Mesh bed leveling status <a href="https://reprap.org/wiki/G-code#G81:_Mesh_bed_leveling_status">G81: Mesh bed leveling status</a>
+		Prints mesh bed leveling status and bed profile if activated.
+        */
         case 81:
             if (mbl.active) {
                 SERIAL_PROTOCOLPGM("Num X,Y: ");
                 SERIAL_PROTOCOL(MESH_NUM_X_POINTS);
-                SERIAL_PROTOCOLPGM(",");
+                SERIAL_PROTOCOL(',');
                 SERIAL_PROTOCOL(MESH_NUM_Y_POINTS);
                 SERIAL_PROTOCOLPGM("\nZ search height: ");
                 SERIAL_PROTOCOL(MESH_HOME_Z_SEARCH);
@@ -5106,7 +5287,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
                         SERIAL_PROTOCOLPGM("  ");
                         SERIAL_PROTOCOL_F(mbl.z_values[y][x], 5);
                     }
-                    SERIAL_PROTOCOLPGM("\n");
+                    SERIAL_PROTOCOLLN();
                 }
             }
             else
@@ -5114,12 +5295,12 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
             break;
             
 #if 0
-        /*
-         * G82: Single Z probe at current location
-         *
-         * WARNING! USE WITH CAUTION! If you'll try to probe where is no leveling pad, nasty things can happen!
-         *
-         */
+        /*!
+        ### G82: Single Z probe at current location - Not active <a href="https://reprap.org/wiki/G-code#G82:_Single_Z_probe_at_current_location">G82: Single Z probe at current location</a>
+        
+        WARNING! USE WITH CAUTION! If you'll try to probe where is no leveling pad, nasty things can happen!
+		In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+		*/
         case 82:
             SERIAL_PROTOCOLLNPGM("Finding bed ");
             int l_feedmultiply = setup_for_endstop_move();
@@ -5130,9 +5311,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
             SERIAL_PROTOCOLPGM("\n");
             break;
 
-            /*
-             * G83: Prusa3D specific: Babystep in Z and store to EEPROM
-             */
+        /*!
+        ### G83: Babystep in Z and store to EEPROM - Not active <a href="https://reprap.org/wiki/G-code#G83:_Babystep_in_Z_and_store_to_EEPROM">G83: Babystep in Z and store to EEPROM</a>
+		In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+		*/
         case 83:
         {
             int babystepz = code_seen('S') ? code_value() : 0;
@@ -5155,50 +5337,50 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
             
         }
         break;
-            /*
-             * G84: Prusa3D specific: UNDO Babystep Z (move Z axis back)
-             */
+        /*!
+        ### G84: UNDO Babystep Z (move Z axis back) - Not active <a href="https://reprap.org/wiki/G-code#G84:_UNDO_Babystep_Z_.28move_Z_axis_back.29">G84: UNDO Babystep Z (move Z axis back)</a>
+		In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+		*/
         case 84:
             babystepsTodoZsubtract(babystepLoadZ);
             // babystepLoadZ = 0;
             break;
             
-            /*
-             * G85: Prusa3D specific: Pick best babystep
-             */
+        /*!
+        ### G85: Pick best babystep - Not active <a href="https://reprap.org/wiki/G-code#G85:_Pick_best_babystep">G85: Pick best babystep</a>
+		In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+		*/
         case 85:
             lcd_pick_babystep();
             break;
 #endif
             
-        /**
-         * ### G86 - Disable babystep correction after home
-         *
-         * This G-code will be performed at the start of a calibration script.
-         * (Prusa3D specific)
-         */
+        /*!
+        ### G86 - Disable babystep correction after home <a href="https://reprap.org/wiki/G-code#G86:_Disable_babystep_correction_after_home">G86: Disable babystep correction after home</a>
+        
+        This G-code will be performed at the start of a calibration script.
+        (Prusa3D specific)
+        */
         case 86:
             calibration_status_store(CALIBRATION_STATUS_LIVE_ADJUST);
             break;
            
 
-        /**
-         * ### G87 - Enable babystep correction after home
-         * 
-         *
-         * This G-code will be performed at the end of a calibration script.
-         * (Prusa3D specific)
-         */
+        /*!
+        ### G87 - Enable babystep correction after home <a href="https://reprap.org/wiki/G-code#G87:_Enable_babystep_correction_after_home">G87: Enable babystep correction after home</a>
+        
+		This G-code will be performed at the end of a calibration script.
+        (Prusa3D specific)
+        */
         case 87:
 			calibration_status_store(CALIBRATION_STATUS_CALIBRATED);
             break;
 
-
-        /**
-         * ### G88 - Reserved
-         *
-         * Currently has no effect. 
-         */
+        /*!
+        ### G88 - Reserved <a href="https://reprap.org/wiki/G-code#G88:_Reserved">G88: Reserved</a>
+        
+        Currently has no effect. 
+        */
 
         // Prusa3D specific: Don't know what it is for, it is in V2Calibration.gcode
 
@@ -5208,44 +5390,54 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 
 #endif  // ENABLE_MESH_BED_LEVELING
             
-    //! ### G90 - Switch off relative mode
-    // -------------------------------
+
+    /*!
+	### G90 - Switch off relative mode <a href="https://reprap.org/wiki/G-code#G90:_Set_to_Absolute_Positioning">G90: Set to Absolute Positioning</a>
+	All coordinates from now on are absolute relative to the origin of the machine. E axis is left intact.
+    */
     case 90: {
-        for(uint8_t i = 0; i != NUM_AXIS; ++i)
-            axis_relative_modes[i] = false;
+		axis_relative_modes &= ~(X_AXIS_MASK | Y_AXIS_MASK | Z_AXIS_MASK);
     }
     break;
 
-    //! ### G91 - Switch on relative mode
-    // -------------------------------
+    /*!
+	### G91 - Switch on relative mode <a href="https://reprap.org/wiki/G-code#G91:_Set_to_Relative_Positioning">G91: Set to Relative Positioning</a>
+    All coordinates from now on are relative to the last position. E axis is left intact.
+	*/
     case 91: {
-        for(uint8_t i = 0; i != NUM_AXIS; ++i)
-            axis_relative_modes[i] = true;
+		axis_relative_modes |= X_AXIS_MASK | Y_AXIS_MASK | Z_AXIS_MASK;
     }
     break;
 
-    //! ### G92 - Set position
-    // -----------------------------
-    case 92:
-      if(!code_seen(axis_codes[E_AXIS]))
-        st_synchronize();
-      for(int8_t i=0; i < NUM_AXIS; i++) {
-        if(code_seen(axis_codes[i])) {
-           if(i == E_AXIS) {
-             current_position[i] = code_value();
-             plan_set_e_position(current_position[E_AXIS]);
-           }
-           else {
-		current_position[i] = code_value()+cs.add_homing[i];
-            plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
-           }
-        }
-      }
-      break;
-
+    /*!
+	### G92 - Set position <a href="https://reprap.org/wiki/G-code#G92:_Set_Position">G92: Set Position</a>
+    
+    It is used for setting the current position of each axis. The parameters are always absolute to the origin.
+    If a parameter is omitted, that axis will not be affected.
+    If `X`, `Y`, or `Z` axis are specified, the move afterwards might stutter because of Mesh Bed Leveling. `E` axis is not affected if the target position is 0 (`G92 E0`).
+	A G92 without coordinates will reset all axes to zero on some firmware. This is not the case for Prusa-Firmware!
+    
+    #### Usage
+	
+	      G92 [ X | Y | Z | E ]
+	
+	#### Parameters
+	  - `X` - new X axis position
+	  - `Y` - new Y axis position
+	  - `Z` - new Z axis position
+	  - `E` - new extruder position
+	
+    */
+    case 92: {
+        gcode_G92();
+    }
+    break;
 
-  //! ### G98 - Activate farm mode
-  // -----------------------------------    
+    /*!
+    ### G98 - Activate farm mode <a href="https://reprap.org/wiki/G-code#G98:_Activate_farm_mode">G98: Activate farm mode</a>
+	Enable Prusa-specific Farm functions and g-code.
+    See Internal Prusa commands.
+    */
 	case 98:
 		farm_mode = 1;
 		PingTime = _millis();
@@ -5256,8 +5448,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
           fCheckModeInit();                       // alternatively invoke printer reset
 		break;
 
-  //! ### G99 - Deactivate farm mode
-  // -------------------------------------
+    /*! ### G99 - Deactivate farm mode <a href="https://reprap.org/wiki/G-code#G99:_Deactivate_farm_mode">G99: Deactivate farm mode</a>
+ 	Disables Prusa-specific Farm functions and g-code.
+   */
 	case 99:
 		farm_mode = 0;
 		lcd_printer_connected();
@@ -5271,9 +5464,15 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 //	printf_P(_N("END G-CODE=%u\n"), gcode_in_progress);
 	gcode_in_progress = 0;
   } // end if(code_seen('G'))
+  /*!
+  ### End of G-Codes
+  */
 
-
-  //! ---------------------------------------------------------------------------------
+  /*!
+  ---------------------------------------------------------------------------------
+  # M Commands
+  
+  */
 
   else if(code_seen('M'))
   {
@@ -5293,8 +5492,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
     switch(mcode_in_progress)
     {
 
-    //! ### M0, M1 - Stop the printer
-    // ---------------------------------------------------------------
+    /*!
+	### M0, M1 - Stop the printer <a href="https://reprap.org/wiki/G-code#M0:_Stop_or_Unconditional_stop">M0: Stop or Unconditional stop</a>
+    */
     case 0: // M0 - Unconditional stop - Wait for user button press on LCD
     case 1: // M1 - Conditional stop - Wait for user button press on LCD
     {
@@ -5343,8 +5543,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
     }
     break;
 
-    //! ### M17 - Enable axes
-    // ---------------------------------
+    /*!
+	### M17 - Enable all axes <a href="https://reprap.org/wiki/G-code#M17:_Enable.2FPower_all_stepper_motors">M17: Enable/Power all stepper motors</a>
+    */
     case 17:
         LCD_MESSAGERPGM(_i("No move."));////MSG_NO_MOVE
         enable_x();
@@ -5357,28 +5558,36 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 
 #ifdef SDSUPPORT
 
-    //! ### M20 - SD Card file list
-    // -----------------------------------
+    /*!
+	### M20 - SD Card file list <a href="https://reprap.org/wiki/G-code#M20:_List_SD_card">M20: List SD card</a>
+    */
     case 20:
       SERIAL_PROTOCOLLNRPGM(_N("Begin file list"));////MSG_BEGIN_FILE_LIST
       card.ls();
       SERIAL_PROTOCOLLNRPGM(_N("End file list"));////MSG_END_FILE_LIST
       break;
 
-    //! ### M21 - Init SD card
-    // ------------------------------------
+    /*!
+	### M21 - Init SD card <a href="https://reprap.org/wiki/G-code#M21:_Initialize_SD_card">M21: Initialize SD card</a>
+    */
     case 21:
       card.initsd();
       break;
 
-    //! ### M22 - Release SD card
-    // -----------------------------------
+    /*!
+	### M22 - Release SD card <a href="https://reprap.org/wiki/G-code#M22:_Release_SD_card">M22: Release SD card</a>
+    */
     case 22: 
       card.release();
       break;
 
-    //! ### M23 - Select file
-    // -----------------------------------
+    /*!
+	### M23 - Select file <a href="https://reprap.org/wiki/G-code#M23:_Select_SD_file">M23: Select SD file</a>
+    #### Usage
+    
+        M23 [filename]
+    
+    */
     case 23: 
       starpos = (strchr(strchr_pointer + 4,'*'));
 	  if(starpos!=NULL)
@@ -5386,24 +5595,40 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       card.openFile(strchr_pointer + 4,true);
       break;
 
-    //! ### M24 - Start/resume SD print
-    // ----------------------------------
+    /*!
+	### M24 - Start SD print <a href="https://reprap.org/wiki/G-code#M24:_Start.2Fresume_SD_print">M24: Start/resume SD print</a>
+    */
     case 24:
 	  if (isPrintPaused)
           lcd_resume_print();
       else
       {
-          failstats_reset_print();
+          if (!card.get_sdpos())
+          {
+              // A new print has started from scratch, reset stats
+              failstats_reset_print();
+#ifndef LA_NOCOMPAT
+              la10c_reset();
+#endif
+          }
+
           card.startFileprint();
           starttime=_millis();
       }
 	  break;
 
-    //! ### M26 S\<index\> - Set SD index
-    //! Set position in SD card file to index in bytes.
-    //! This command is expected to be called after M23 and before M24.
-    //! Otherwise effect of this command is undefined.
-    // ----------------------------------
+    /*!
+	### M26 - Set SD index <a href="https://reprap.org/wiki/G-code#M26:_Set_SD_position">M26: Set SD position</a>
+    Set position in SD card file to index in bytes.
+    This command is expected to be called after M23 and before M24.
+    Otherwise effect of this command is undefined.
+    #### Usage
+	
+	      M26 [ S ]
+	
+	#### Parameters
+	  - `S` - Index in bytes
+    */
     case 26: 
       if(card.cardOK && code_seen('S')) {
         long index = code_value_long();
@@ -5414,14 +5639,16 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       }
       break;
 
-    //! ### M27 - Get SD status
-    // ----------------------------------
+    /*!
+	### M27 - Get SD status <a href="https://reprap.org/wiki/G-code#M27:_Report_SD_print_status">M27: Report SD print status</a>
+    */
     case 27:
       card.getStatus();
       break;
 
-    //! ### M28 - Start SD write
-    // ---------------------------------  
+    /*!
+	### M28 - Start SD write <a href="https://reprap.org/wiki/G-code#M28:_Begin_write_to_SD_card">M28: Begin write to SD card</a>
+    */
     case 28: 
       starpos = (strchr(strchr_pointer + 4,'*'));
       if(starpos != NULL){
@@ -5432,16 +5659,21 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       card.openFile(strchr_pointer+4,false);
       break;
 
-    //! ### M29 - Stop SD write
-    // -------------------------------------
-    //! Currently has no effect.
+    /*! ### M29 - Stop SD write <a href="https://reprap.org/wiki/G-code#M29:_Stop_writing_to_SD_card">M29: Stop writing to SD card</a>
+	Stops writing to the SD file signaling the end of the uploaded file. It is processed very early and it's not written to the card.
+    */
     case 29:
       //processed in write to file routine above
       //card,saving = false;
       break;
 
-    //! ### M30 - Delete file  <filename> 
-    // ----------------------------------
+    /*!
+	### M30 - Delete file <a href="https://reprap.org/wiki/G-code#M30:_Delete_a_file_on_the_SD_card">M30: Delete a file on the SD card</a>
+    #### Usage
+    
+        M30 [filename]
+    
+    */
     case 30:
       if (card.cardOK){
         card.closefile();
@@ -5455,8 +5687,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       }
       break;
 
-    //! ### M32 - Select file and start SD print
-    // ------------------------------------
+    /*!
+	### M32 - Select file and start SD print <a href="https://reprap.org/wiki/G-code#M32:_Select_file_and_start_SD_print">M32: Select file and start SD print</a>
+	@todo What are the parameters P and S for in M32?
+    */
     case 32:
     {
       if(card.sdprinting) {
@@ -5489,12 +5723,27 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
             card.setIndex(code_value_long());
         card.startFileprint();
         if(!call_procedure)
-          starttime=_millis(); //procedure calls count as normal print time.
+        {
+            if(!card.get_sdpos())
+            {
+                // A new print has started from scratch, reset stats
+                failstats_reset_print();
+#ifndef LA_NOCOMPAT
+                la10c_reset();
+#endif
+            }
+            starttime=_millis(); // procedure calls count as normal print time.
+        }
       }
     } break;
 
-    //! ### M982 - Start SD write
-    // ---------------------------------
+    /*!
+	### M928 - Start SD logging <a href="https://reprap.org/wiki/G-code#M928:_Start_SD_logging">M928: Start SD logging</a>
+    #### Usage
+    
+        M928 [filename]
+    
+    */
     case 928: 
       starpos = (strchr(strchr_pointer + 5,'*'));
       if(starpos != NULL){
@@ -5507,8 +5756,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 
 #endif //SDSUPPORT
 
-    //! ### M31 - Report current print time
-    // --------------------------------------------------
+    /*!
+	### M31 - Report current print time <a href="https://reprap.org/wiki/G-code#M31:_Output_time_since_last_M109_or_SD_card_start_to_serial">M31: Output time since last M109 or SD card start to serial</a>
+    */
     case 31: //M31 take time since the start of the SD print or an M109 command
       {
       stoptime=_millis();
@@ -5525,8 +5775,17 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
       }
       break;
 
-    //! ### M42 - Set pin state
-    // -----------------------------
+    /*!
+	### M42 - Set pin state <a href="https://reprap.org/wiki/G-code#M42:_Switch_I.2FO_pin">M42: Switch I/O pin</a>
+    #### Usage
+    
+        M42 [ P | S ]
+        
+    #### Parameters
+    - `P` - Pin number.
+    - `S` - Pin value. If the pin is analog, values are from 0 to 255. If the pin is digital, values are from 0 to 1.
+    
+    */
     case 42:
       if (code_seen('S'))
       {
@@ -5556,8 +5815,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
      break;
 
 
-    //! ### M44 - Reset the bed skew and offset calibration (Prusa specific)
-    // --------------------------------------------------------------------
+    /*!
+	### M44 - Reset the bed skew and offset calibration <a href="https://reprap.org/wiki/G-code#M44:_Reset_the_bed_skew_and_offset_calibration">M44: Reset the bed skew and offset calibration</a>
+    */
     case 44: // M44: Prusa3D: Reset the bed skew and offset calibration.
 
 		// Reset the baby step value and the baby step applied flag.
@@ -5572,8 +5832,15 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
         world2machine_revert_to_uncorrected();
         break;
 
-    //! ### M45 - Bed skew and offset with manual Z up (Prusa specific)
-    // ------------------------------------------------------
+    /*!
+	### M45 - Bed skew and offset with manual Z up <a href="https://reprap.org/wiki/G-code#M45:_Bed_skew_and_offset_with_manual_Z_up">M45: Bed skew and offset with manual Z up</a>
+	#### Usage
+    
+        M45 [ V ]
+    #### Parameters
+	- `V` - Verbosity level 1, 10 and 20 (low, mid, high). Only when SUPPORT_VERBOSITY is defined. Optional.
+    - `Z` - If it is provided, only Z calibration will run. Otherwise full calibration is executed.
+    */
     case 45: // M45: Prusa3D: bed skew and offset with manual Z up
     {
 		int8_t verbosity_level = 0;
@@ -5590,8 +5857,11 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
     }
 	break;
 
+    /*!
+	### M46 - Show the assigned IP address <a href="https://reprap.org/wiki/G-code#M46:_Show_the_assigned_IP_address">M46: Show the assigned IP address.</a>
+    */
     /*
-    case 46:
+     case 46:
     {
         // M46: Prusa3D: Show the assigned IP address.
         uint8_t ip[4];
@@ -5613,8 +5883,9 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
     }
     */
 
-    //! ### M47 - Show end stops dialog on the display (Prusa specific)
-    // ---------------------------------------------------- 
+    /*!
+	### M47 - Show end stops dialog on the display <a href="https://reprap.org/wiki/G-code#M47:_Show_end_stops_dialog_on_the_display">M47: Show end stops dialog on the display</a>
+    */
     case 47:
         
 		KEEPALIVE_STATE(PAUSED_FOR_USER);
@@ -5662,22 +5933,25 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
 #ifdef ENABLE_AUTO_BED_LEVELING
 #ifdef Z_PROBE_REPEATABILITY_TEST 
 
-    //! ### M48 - Z-Probe repeatability measurement function.
-    // ------------------------------------------------------
-    //!
-    //! _Usage:_
-    //!    
-    //!     M48 <n #_samples> <X X_position_for_samples> <Y Y_position_for_samples> <V Verbose_Level> <L legs_of_movement_prior_to_doing_probe>
-    //! 
-    //! This function assumes the bed has been homed.  Specifically, that a G28 command
-    //! as been issued prior to invoking the M48 Z-Probe repeatability measurement function.
-    //! Any information generated by a prior G29 Bed leveling command will be lost and need to be
-    //! regenerated.
-    //!
-    //! The number of samples will default to 10 if not specified.  You can use upper or lower case
-    //! letters for any of the options EXCEPT n.  n must be in lower case because Marlin uses a capital
-    //! N for its communication protocol and will get horribly confused if you send it a capital N.
-    //!
+    /*!
+	### M48 - Z-Probe repeatability measurement function <a href="https://reprap.org/wiki/G-code#M48:_Measure_Z-Probe_repeatability">M48: Measure Z-Probe repeatability</a>
+    
+     This function assumes the bed has been homed.  Specifically, that a G28 command as been issued prior to invoking the M48 Z-Probe repeatability measurement function. Any information generated by a prior G29 Bed leveling command will be lost and needs to be regenerated.
+     
+     The number of samples will default to 10 if not specified.  You can use upper or lower case letters for any of the options EXCEPT n.  n must be in lower case because Marlin uses a capital N for its communication protocol and will get horribly confused if you send it a capital N.
+     @todo Why would you check for both uppercase and lowercase? Seems wasteful.
+	 
+     #### Usage
+     
+	     M48 [ n | X | Y | V | L ]
+     
+     #### Parameters
+       - `n` - Number of samples. Valid values 4-50
+	   - `X` - X position for samples
+	   - `Y` - Y position for samples
+	   - `V` - Verbose level. Valid values 1-4
+	   - `L` - Legs of movementprior to doing probe. Valid values 1-15
+    */
     case 48: // M48 Z-Probe repeatability
         {
             #if Z_MIN_PIN == -1
@@ -5916,12 +6190,18 @@ Sigma_Exit:
 #endif		// Z_PROBE_REPEATABILITY_TEST 
 #endif		// ENABLE_AUTO_BED_LEVELING
 
-  //! ### M73 - Set/get print progress 
-  // -------------------------------------
-  //! _Usage:_
-  //! 
-  //!     M73 P<percent> R<time_remaining> Q<percent_silent> S<time_remaining_silent>
-  //! 
+	/*!
+	### M73 - Set/get print progress <a href="https://reprap.org/wiki/G-code#M73:_Set.2FGet_build_percentage">M73: Set/Get build percentage</a>
+	#### Usage
+    
+	    M73 [ P | R | Q | S ]
+    
+	#### Parameters
+    - `P` - Percent in normal mode
+    - `R` - Time remaining in normal mode
+    - `Q` - Percent in silent mode
+    - `S` - Time in silent mode
+   */
 	case 73: //M73 show percent done and time remaining
 		if(code_seen('P')) print_percent_done_normal = code_value();
 		if(code_seen('R')) print_time_remaining_normal = code_value();
@@ -5935,8 +6215,15 @@ Sigma_Exit:
 		}
 		break;
 
-    //! ### M104 - Set hotend temperature
-    // -----------------------------------------
+    /*!
+	### M104 - Set hotend temperature <a href="https://reprap.org/wiki/G-code#M104:_Set_Extruder_Temperature">M104: Set Extruder Temperature</a>
+	#### Usage
+    
+	    M104 [ S ]
+    
+	#### Parameters
+       - `S` - Target temperature
+    */
     case 104: // M104
     {
           uint8_t extruder;
@@ -5950,20 +6237,44 @@ Sigma_Exit:
           break;
     }
 
-    //! ### M112 - Emergency stop
-    // -----------------------------------------
+    /*!
+	### M112 - Emergency stop <a href="https://reprap.org/wiki/G-code#M112:_Full_.28Emergency.29_Stop">M112: Full (Emergency) Stop</a>
+    It is processed much earlier as to bypass the cmdqueue.
+    */
     case 112: 
       kill(MSG_M112_KILL, 3);
       break;
 
-    //! ### M140 - Set bed temperature
-    // -----------------------------------------
+    /*!
+	### M140 - Set bed temperature <a href="https://reprap.org/wiki/G-code#M140:_Set_Bed_Temperature_.28Fast.29">M140: Set Bed Temperature (Fast)</a>
+    #### Usage
+    
+	    M140 [ S ]
+    
+	#### Parameters
+       - `S` - Target temperature
+    */
     case 140: 
       if (code_seen('S')) setTargetBed(code_value());
       break;
 
-    //! ### M105 - Report temperatures
-    // ----------------------------------------- 
+    /*!
+	### M105 - Report temperatures <a href="https://reprap.org/wiki/G-code#M105:_Get_Extruder_Temperature">M105: Get Extruder Temperature</a>
+	Prints temperatures:
+	
+	  - `T:`  - Hotend (actual / target)
+	  - `B:`  - Bed (actual / target)
+	  - `Tx:` - x Tool (actual / target)
+	  - `@:`  - Hotend power
+	  - `B@:` - Bed power
+	  - `P:`  - PINDAv2 actual (only MK2.5/s and MK3/s)
+	  - `A:`  - Ambient actual (only MK3/s)
+	
+	_Example:_
+	
+	    ok T:20.2 /0.0 B:19.1 /0.0 T0:20.2 /0.0 @:0 B@:0 P:19.8 A:26.4
+	
+    */
     case 105:
     {
       uint8_t extruder;
@@ -5984,7 +6295,7 @@ Sigma_Exit:
         for (int8_t cur_extruder = 0; cur_extruder < EXTRUDERS; ++cur_extruder) {
           SERIAL_PROTOCOLPGM(" T");
           SERIAL_PROTOCOL(cur_extruder);
-          SERIAL_PROTOCOLPGM(":");
+          SERIAL_PROTOCOL(':');
           SERIAL_PROTOCOL_F(degHotend(cur_extruder),1);
           SERIAL_PROTOCOLPGM(" /");
           SERIAL_PROTOCOL_F(degTargetHotend(cur_extruder),1);
@@ -6059,16 +6370,22 @@ Sigma_Exit:
       break;
     }
 
-    //! ### M109 - Wait for extruder temperature
-    //! Parameters (not mandatory):
-    //! * S \<temp\> set extruder temperature
-    //! * R \<temp\> set extruder temperature
-    //!
-    //! Parameters S and R are treated identically.
-    //! Command always waits for both cool down and heat up.
-    //! If no parameters are supplied waits for previously
-    //! set extruder temperature.
-    // -------------------------------------------------
+    /*!
+	### M109 - Wait for extruder temperature <a href="https://reprap.org/wiki/G-code#M109:_Set_Extruder_Temperature_and_Wait">M109: Set Extruder Temperature and Wait</a>
+    #### Usage
+    
+	    M104 [ B | R | S ]
+    
+    #### Parameters (not mandatory)
+     
+	  - `S` - Set extruder temperature
+      - `R` - Set extruder temperature
+	  - `B` - Set max. extruder temperature, while `S` is min. temperature. Not active in default, only if AUTOTEMP is defined in source code.
+    
+    Parameters S and R are treated identically.
+    Command always waits for both cool down and heat up.
+    If no parameters are supplied waits for previously set extruder temperature.
+    */
     case 109:
     {
       uint8_t extruder;
@@ -6118,12 +6435,19 @@ Sigma_Exit:
       }
       break;
 
-    //! ### M190 - Wait for bed temperature
-    //! Parameters (not mandatory):
-    //! * S \<temp\> set extruder temperature and wait for heating
-    //! * R \<temp\> set extruder temperature and wait for heating or cooling
-    //!
-    //! If no parameter is supplied, waits for heating or cooling to previously set temperature.
+    /*!
+	### M190 - Wait for bed temperature <a href="https://reprap.org/wiki/G-code#M190:_Wait_for_bed_temperature_to_reach_target_temp">M190: Wait for bed temperature to reach target temp</a>
+    #### Usage
+    
+        M190 [ R | S ]
+    
+    #### Parameters (not mandatory)
+    
+	  - `S` - Set extruder temperature and wait for heating
+      - `R` - Set extruder temperature and wait for heating or cooling
+    
+    If no parameter is supplied, waits for heating or cooling to previously set temperature.
+	*/
     case 190: 
     #if defined(TEMP_BED_PIN) && TEMP_BED_PIN > -1
     {
@@ -6178,8 +6502,15 @@ Sigma_Exit:
 
     #if defined(FAN_PIN) && FAN_PIN > -1
 
-      //! ### M106 - Set fan speed
-      // -------------------------------------------
+      /*!
+	  ### M106 - Set fan speed <a href="https://reprap.org/wiki/G-code#M106:_Fan_On">M106: Fan On</a>
+      #### Usage
+      
+        M106 [ S ]
+        
+      #### Parameters
+      - `S` - Specifies the duty cycle of the print fan. Allowed values are 0-255. If it's omitted, a value of 255 is used.
+      */
       case 106: // M106 Sxxx Fan On S<speed> 0 .. 255
         if (code_seen('S')){
            fanSpeed=constrain(code_value(),0,255);
@@ -6189,8 +6520,9 @@ Sigma_Exit:
         }
         break;
 
-      //! ### M107 - Fan off
-      // -------------------------------
+      /*!
+	  ### M107 - Fan off <a href="https://reprap.org/wiki/G-code#M107:_Fan_Off">M107: Fan Off</a>
+      */
       case 107:
         fanSpeed = 0;
         break;
@@ -6198,8 +6530,10 @@ Sigma_Exit:
 
     #if defined(PS_ON_PIN) && PS_ON_PIN > -1
 
-      //! ### M80 - Turn on the Power Supply
-      // -------------------------------
+      /*!
+	  ### M80 - Turn on the Power Supply <a href="https://reprap.org/wiki/G-code#M80:_ATX_Power_On">M80: ATX Power On</a>
+      Only works if the firmware is compiled with PS_ON_PIN defined.
+      */
       case 80:
         SET_OUTPUT(PS_ON_PIN); //GND
         WRITE(PS_ON_PIN, PS_ON_AWAKE);
@@ -6217,8 +6551,10 @@ Sigma_Exit:
           lcd_update(0);
         break;
 
-      //! ### M81 - Turn off Power Supply
-      // --------------------------------------
+      /*!
+	  ### M81 - Turn off Power Supply <a href="https://reprap.org/wiki/G-code#M81:_ATX_Power_Off">M81: ATX Power Off</a>
+      Only works if the firmware is compiled with PS_ON_PIN defined.
+      */
       case 81: 
         disable_heater();
         st_synchronize();
@@ -6241,24 +6577,40 @@ Sigma_Exit:
 	  break;
     #endif
 
-    //! ### M82 - Set E axis to absolute mode
-    // ---------------------------------------
+    /*!
+	### M82 - Set E axis to absolute mode <a href="https://reprap.org/wiki/G-code#M82:_Set_extruder_to_absolute_mode">M82: Set extruder to absolute mode</a>
+	Makes the extruder interpret extrusion as absolute positions.
+    */
     case 82:
-      axis_relative_modes[E_AXIS] = false;
+      axis_relative_modes &= ~E_AXIS_MASK;
       break;
 
-    //! ### M83 - Set E axis to relative mode
-    // ---------------------------------------  
+    /*!
+	### M83 - Set E axis to relative mode <a href="https://reprap.org/wiki/G-code#M83:_Set_extruder_to_relative_mode">M83: Set extruder to relative mode</a>
+	Makes the extruder interpret extrusion values as relative positions.
+    */
     case 83:
-      axis_relative_modes[E_AXIS] = true;
+      axis_relative_modes |= E_AXIS_MASK;
       break;
 
-    //! ### M84, M18 - Disable steppers
-    //---------------------------------------
-    //! This command can be used to set the stepper inactivity timeout (`S`) or to disable steppers (`X`,`Y`,`Z`,`E`)
-    //! 
-    //!     M84 [E<flag>] [S<seconds>] [X<flag>] [Y<flag>] [Z<flag>]  
-    //! 
+    /*!
+	### M84 - Disable steppers <a href="https://reprap.org/wiki/G-code#M84:_Stop_idle_hold">M84: Stop idle hold</a>
+    This command can be used to set the stepper inactivity timeout (`S`) or to disable steppers (`X`,`Y`,`Z`,`E`)
+	This command can be used without any additional parameters. In that case all steppers are disabled.
+    
+    The file completeness check uses this parameter to detect an incomplete file. It has to be present at the end of a file with no parameters.
+	
+        M84 [ S | X | Y | Z | E ]
+	
+	  - `S` - Seconds
+	  - `X` - X axis
+	  - `Y` - Y axis
+	  - `Z` - Z axis
+	  - `E` - Exruder
+
+	### M18 - Disable steppers <a href="https://reprap.org/wiki/G-code#M18:_Disable_all_stepper_motors">M18: Disable all stepper motors</a>
+	Equal to M84 (compatibility)
+    */
     case 18: //compatibility
     case 84: // M84
       if(code_seen('S')){
@@ -6295,8 +6647,15 @@ Sigma_Exit:
 	  snmm_filaments_used = 0;
       break;
 
-    //! ### M85 - Set max inactive time
-    // ---------------------------------------
+    /*!
+	### M85 - Set max inactive time <a href="https://reprap.org/wiki/G-code#M85:_Set_Inactivity_Shutdown_Timer">M85: Set Inactivity Shutdown Timer</a>
+    #### Usage
+    
+        M85 [ S ]
+    
+    #### Parameters
+    - `S` - specifies the time in seconds. If a value of 0 is specified, the timer is disabled.
+    */
     case 85: // M85
       if(code_seen('S')) {
         max_inactive_time = code_value() * 1000;
@@ -6304,13 +6663,16 @@ Sigma_Exit:
       break;
 #ifdef SAFETYTIMER
 
-  //! ### M86 - Set safety timer expiration time
-  //!
-  //! _Usage:_
-  //!     M86 S<seconds>
-  //! 
-  //! Sets the safety timer expiration time in seconds. M86 S0 will disable safety timer.
-  //! When safety timer expires, heatbed and nozzle target temperatures are set to zero.
+    /*!
+    ### M86 - Set safety timer expiration time <a href="https://reprap.org/wiki/G-code#M86:_Set_Safety_Timer_expiration_time">M86: Set Safety Timer expiration time</a>	
+    When safety timer expires, heatbed and nozzle target temperatures are set to zero.
+    #### Usage
+    
+        M86 [ S ]
+    
+    #### Parameters
+    - `S` - specifies the time in seconds. If a value of 0 is specified, the timer is disabled.
+    */
 	case 86: 
 	  if (code_seen('S')) {
 	    safetytimer_inactive_time = code_value() * 1000;
@@ -6319,15 +6681,25 @@ Sigma_Exit:
 	  break;
 #endif
 
-    //! ### M92 Set Axis steps-per-unit
-    // ---------------------------------------
-    //! Same syntax as G92
+    /*!
+	### M92 Set Axis steps-per-unit <a href="https://reprap.org/wiki/G-code#M92:_Set_axis_steps_per_unit">M92: Set axis_steps_per_unit</a>
+	Allows programming of steps per unit (usually mm) for motor drives. These values are reset to firmware defaults on power on, unless saved to EEPROM if available (M500 in Marlin)
+	#### Usage
+    
+	    M92 [ X | Y | Z | E ]
+	
+    #### Parameters
+	- `X` - Steps per unit for the X drive
+	- `Y` - Steps per unit for the Y drive
+	- `Z` - Steps per unit for the Z drive
+	- `E` - Steps per unit for the extruder drive
+    */
     case 92:
       for(int8_t i=0; i < NUM_AXIS; i++)
       {
         if(code_seen(axis_codes[i]))
         {
-          if(i == 3) { // E
+          if(i == E_AXIS) { // E
             float value = code_value();
             if(value < 20.0) {
               float factor = cs.axis_steps_per_unit[i] / value; // increase e constants if M92 E14 is given for netfab.
@@ -6336,6 +6708,9 @@ Sigma_Exit:
               axis_steps_per_sqr_second[i] *= factor;
             }
             cs.axis_steps_per_unit[i] = value;
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
+            fsensor_set_axis_steps_per_unit(value);
+#endif
           }
           else {
             cs.axis_steps_per_unit[i] = code_value();
@@ -6344,15 +6719,31 @@ Sigma_Exit:
       }
       break;
 
-    //! ### M110 - Set Line number
-    // ---------------------------------------
+    /*!
+	### M110 - Set Line number <a href="https://reprap.org/wiki/G-code#M110:_Set_Current_Line_Number">M110: Set Current Line Number</a>
+	Sets the line number in G-code
+	#### Usage
+    
+	    M110 [ N ]
+	
+    #### Parameters
+	- `N` - Line number
+    */
     case 110:
       if (code_seen('N'))
 	    gcode_LastN = code_value_long();
     break;
 
-  //! ### M113 - Get or set host keep-alive interval
-  // ------------------------------------------ 
+    /*!
+    ### M113 - Get or set host keep-alive interval <a href="https://reprap.org/wiki/G-code#M113:_Host_Keepalive">M113: Host Keepalive</a>
+    During some lengthy processes, such as G29, Marlin may appear to the host to have “gone away.” The “host keepalive” feature will send messages to the host when Marlin is busy or waiting for user response so the host won’t try to reconnect (or disconnect).
+    #### Usage
+    
+        M113 [ S ]
+	
+    #### Parameters
+	- `S` - Seconds. Default is 2 seconds between "busy" messages
+    */
 	case 113:
 		if (code_seen('S')) {
 			host_keepalive_interval = (uint8_t)code_value_short();
@@ -6365,16 +6756,34 @@ Sigma_Exit:
 		}
 		break;
 
-    //! ### M115 - Firmware info
-    // --------------------------------------
-    //! Print the firmware info and capabilities
-    //! 
-    //!     M115 [V] [U<version>] 
-    //! 
-    //! Without any arguments, prints Prusa firmware version number, machine type, extruder count and UUID.
-    //! `M115 U` Checks the firmware version provided. If the firmware version provided by the U code is higher than the currently running firmware,
-    //!  pause the print for 30s and ask the user to upgrade the firmware. 
-    case 115: // M115
+    /*!
+	### M115 - Firmware info <a href="https://reprap.org/wiki/G-code#M115:_Get_Firmware_Version_and_Capabilities">M115: Get Firmware Version and Capabilities</a>
+    Print the firmware info and capabilities
+    Without any arguments, prints Prusa firmware version number, machine type, extruder count and UUID.
+    `M115 U` Checks the firmware version provided. If the firmware version provided by the U code is higher than the currently running firmware, it will pause the print for 30s and ask the user to upgrade the firmware.
+	
+	_Examples:_
+	
+	`M115` results:
+	
+	`FIRMWARE_NAME:Prusa-Firmware 3.8.1 based on Marlin FIRMWARE_URL:https://github.com/prusa3d/Prusa-Firmware PROTOCOL_VERSION:1.0 MACHINE_TYPE:Prusa i3 MK3S EXTRUDER_COUNT:1 UUID:00000000-0000-0000-0000-000000000000`
+	
+	`M115 V` results:
+	
+	`3.8.1`
+	
+	`M115 U3.8.2-RC1` results on LCD display for 30s or user interaction:
+	
+	`New firmware version available: 3.8.2-RC1 Please upgrade.`
+    #### Usage
+    
+        M115 [ V | U ]
+	
+    #### Parameters
+	- V - Report current installed firmware version
+	- U - Firmware version provided by G-code to be compared to current one.  
+	*/
+	case 115: // M115
       if (code_seen('V')) {
           // Report the Prusa version number.
           SERIAL_PROTOCOLLNRPGM(FW_VERSION_STR_P());
@@ -6396,16 +6805,13 @@ Sigma_Exit:
       }
       break;
 
-    //! ### M114 - Get current position
-    // -------------------------------------
+    /*!
+	### M114 - Get current position <a href="https://reprap.org/wiki/G-code#M114:_Get_Current_Position">M114: Get Current Position</a>
+    */
     case 114:
 		gcode_M114();
       break;
 
-
-
-      //! ### M117 - Set LCD Message
-      // -------------------------------------- 
       
       /*
         M117 moved up to get the high priority
@@ -6417,20 +6823,24 @@ Sigma_Exit:
       lcd_setstatus(strchr_pointer + 5);
       break;*/
 
-    //! ### M120 - Disable endstops
-    // ----------------------------------------
+    /*!
+	### M120 - Enable endstops <a href="https://reprap.org/wiki/G-code#M120:_Enable_endstop_detection">M120: Enable endstop detection</a>
+    */
     case 120:
       enable_endstops(false) ;
       break;
 
-    //! ### M121 - Enable endstops
-    // ----------------------------------------
+    /*!
+	### M121 - Disable endstops <a href="https://reprap.org/wiki/G-code#M121:_Disable_endstop_detection">M121: Disable endstop detection</a>
+    */
     case 121:
       enable_endstops(true) ;
       break;
 
-    //! ### M119 - Get endstop states
-    // ----------------------------------------
+    /*!
+	### M119 - Get endstop states <a href="https://reprap.org/wiki/G-code#M119:_Get_Endstop_Status">M119: Get Endstop Status</a>
+	Returns the current state of the configured X, Y, Z endstops. Takes into account any 'inverted endstop' settings, so one can confirm that the machine is interpreting the endstops correctly.
+    */
     case 119:
     SERIAL_PROTOCOLRPGM(_N("Reporting endstop status"));////MSG_M119_REPORT
     SERIAL_PROTOCOLLN("");
@@ -6489,12 +6899,22 @@ Sigma_Exit:
         SERIAL_PROTOCOLLN("");
       #endif
       break;
-      //TODO: update for all axis, use for loop
+      //!@todo update for all axes, use for loop
     
-    #ifdef BLINKM
 
-    //! ### M150 - Set RGB(W) Color
-    // -------------------------------------------
+    #ifdef BLINKM
+    /*!
+	### M150 - Set RGB(W) Color <a href="https://reprap.org/wiki/G-code#M150:_Set_LED_color">M150: Set LED color</a>
+	In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code by defining BLINKM and its dependencies.
+    #### Usage
+    
+        M150 [ R | U | B ]
+    
+    #### Parameters
+    - `R` - Red color value
+    - `U` - Green color value. It is NOT `G`!
+    - `B` - Blue color value
+    */
     case 150:
       {
         byte red;
@@ -6510,8 +6930,16 @@ Sigma_Exit:
       break;
     #endif //BLINKM
 
-    //! ### M200 - Set filament diameter
-    // ----------------------------------------
+    /*!
+	### M200 - Set filament diameter <a href="https://reprap.org/wiki/G-code#M200:_Set_filament_diameter">M200: Set filament diameter</a>
+	#### Usage
+    
+	    M200 [ D | T ]
+	
+    #### Parameters
+	  - `D` - Diameter in mm
+	  - `T` - Number of extruder (MMUs)
+    */
     case 200: // M200 D<millimeters> set filament diameter and set E axis units to cubic millimeters (use S0 to set back to millimeters).
       {
 
@@ -6536,10 +6964,10 @@ Sigma_Exit:
 			// make sure all extruders have some sane value for the filament size
 			cs.filament_size[0] = (cs.filament_size[0] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : cs.filament_size[0]);
             #if EXTRUDERS > 1
-			cs.filament_size[1] = (cs.filament_size[1] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : cs.filament_size[1]);
-            #if EXTRUDERS > 2
-			cs.filament_size[2] = (cs.filament_size[2] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : cs.filament_size[2]);
-            #endif
+				cs.filament_size[1] = (cs.filament_size[1] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : cs.filament_size[1]);
+				#if EXTRUDERS > 2
+					cs.filament_size[2] = (cs.filament_size[2] == 0.0 ? DEFAULT_NOMINAL_FILAMENT_DIA : cs.filament_size[2]);
+				#endif
             #endif
 			cs.volumetric_enabled = true;
 		  }
@@ -6551,8 +6979,10 @@ Sigma_Exit:
       }
       break;
 
-    //! ### M201 - Set Print Max Acceleration
-    // -------------------------------------------
+    /*!
+	### M201 - Set Print Max Acceleration <a href="https://reprap.org/wiki/G-code#M201:_Set_max_printing_acceleration">M201: Set max printing acceleration</a>
+    For each axis individually.
+    */
     case 201:
 		for (int8_t i = 0; i < NUM_AXIS; i++)
 		{
@@ -6586,8 +7016,10 @@ Sigma_Exit:
       break;
     #endif
 
-    //! ### M203 - Set Max Feedrate
-    // ---------------------------------------
+    /*!
+	### M203 - Set Max Feedrate <a href="https://reprap.org/wiki/G-code#M203:_Set_maximum_feedrate">M203: Set maximum feedrate</a>
+    For each axis individually.
+    */
     case 203: // M203 max feedrate mm/sec
 		for (int8_t i = 0; i < NUM_AXIS; i++)
 		{
@@ -6612,15 +7044,28 @@ Sigma_Exit:
 		}
 		break;
 
-    //! ### M204 - Acceleration settings
-    // ------------------------------------------
-    //! Supporting old format: 
-    //!
-    //!         M204 S[normal moves] T[filmanent only moves]
-    //!
-    //! and new format:        
-    //!
-    //!         M204 P[printing moves] R[filmanent only moves] T[travel moves] (as of now T is ignored)
+    /*!
+	### M204 - Acceleration settings <a href="https://reprap.org/wiki/G-code#M204:_Set_default_acceleration">M204: Set default acceleration</a>
+
+    #### Old format:
+    ##### Usage
+    
+        M204 [ S | T ]
+        
+    ##### Parameters
+    - `S` - normal moves
+    - `T` - filmanent only moves
+    
+    #### New format:
+    ##### Usage
+    
+        M204 [ P | R | T ]
+    
+    ##### Parameters
+    - `P` - printing moves
+    - `R` - filmanent only moves
+    - `T` - travel moves (as of now T is ignored)
+	*/
     case 204:
       {
         if(code_seen('S')) {
@@ -6639,23 +7084,30 @@ Sigma_Exit:
             cs.retract_acceleration = code_value();
           if(code_seen('T')) {
             // Interpret the T value as the travel acceleration in the new Marlin format.
-            //FIXME Prusa3D firmware currently does not support travel acceleration value independent from the extruding acceleration value.
+            /*!
+            @todo Prusa3D firmware currently does not support travel acceleration value independent from the extruding acceleration value.
+            */
             // travel_acceleration = code_value();
           }
         }
       }
       break;
 
-    //! ### M205 - Set advanced settings
-    // --------------------------------------------- 
-    //! Set some advanced settings related to movement.
-    //!
-    //!          M205 [S] [T] [B] [X] [Y] [Z] [E]
     /*!
+	### M205 - Set advanced settings <a href="https://reprap.org/wiki/G-code#M205:_Advanced_settings">M205: Advanced settings</a>
+    Set some advanced settings related to movement.
+    #### Usage
+    
+        M205 [ S | T | B | X | Y | Z | E ]
+        
+    #### Parameters
     - `S` - Minimum feedrate for print moves (unit/s)
     - `T` - Minimum feedrate for travel moves (units/s)
     - `B` - Minimum segment time (us)
-    - `X` - Maximum X jerk (units/s), similarly for other axes
+    - `X` - Maximum X jerk (units/s)
+    - `Y` - Maximum Y jerk (units/s)
+    - `Z` - Maximum Z jerk (units/s)
+    - `E` - Maximum E jerk (units/s)
     */
     case 205: 
     {
@@ -6665,14 +7117,30 @@ Sigma_Exit:
       if(code_seen('X')) cs.max_jerk[X_AXIS] = cs.max_jerk[Y_AXIS] = code_value();
       if(code_seen('Y')) cs.max_jerk[Y_AXIS] = code_value();
       if(code_seen('Z')) cs.max_jerk[Z_AXIS] = code_value();
-      if(code_seen('E')) cs.max_jerk[E_AXIS] = code_value();
-		if (cs.max_jerk[X_AXIS] > DEFAULT_XJERK) cs.max_jerk[X_AXIS] = DEFAULT_XJERK;
-		if (cs.max_jerk[Y_AXIS] > DEFAULT_YJERK) cs.max_jerk[Y_AXIS] = DEFAULT_YJERK;
+      if(code_seen('E'))
+      {
+          float e = code_value();
+#ifndef LA_NOCOMPAT
+          e = la10c_jerk(e);
+#endif
+          cs.max_jerk[E_AXIS] = e;
+      }
+      if (cs.max_jerk[X_AXIS] > DEFAULT_XJERK) cs.max_jerk[X_AXIS] = DEFAULT_XJERK;
+      if (cs.max_jerk[Y_AXIS] > DEFAULT_YJERK) cs.max_jerk[Y_AXIS] = DEFAULT_YJERK;
     }
     break;
 
-    //! ### M206 - Set additional homing offsets
-    // ----------------------------------------------
+    /*!
+	### M206 - Set additional homing offsets <a href="https://reprap.org/wiki/G-code#M206:_Offset_axes">M206: Offset axes</a>
+    #### Usage
+    
+        M206 [ X | Y | Z ]
+    
+    #### Parameters
+    - `X` - X axis offset
+    - `Y` - Y axis offset
+    - `Z` - Z axis offset
+	*/
     case 206:
       for(int8_t i=0; i < 3; i++)
       {
@@ -6681,8 +7149,17 @@ Sigma_Exit:
       break;
     #ifdef FWRETRACT
 
-    //! ### M207 - Set firmware retraction
-    // --------------------------------------------------
+    /*!
+	### M207 - Set firmware retraction <a href="https://reprap.org/wiki/G-code#M207:_Set_retract_length">M207: Set retract length</a>
+	#### Usage
+    
+        M207 [ S | F | Z ]
+    
+    #### Parameters
+    - `S` - positive length to retract, in mm
+    - `F` - retraction feedrate, in mm/min
+    - `Z` - additional zlift/hop
+    */
     case 207: //M207 - set retract length S[positive mm] F[feedrate mm/min] Z[additional zlift/hop]
     {
       if(code_seen('S'))
@@ -6699,8 +7176,16 @@ Sigma_Exit:
       }
     }break;
 
-    //! ### M208 - Set retract recover length
-    // --------------------------------------------
+    /*!
+	### M208 - Set retract recover length <a href="https://reprap.org/wiki/G-code#M208:_Set_unretract_length">M208: Set unretract length</a>
+	#### Usage
+    
+        M208 [ S | F ]
+    
+    #### Parameters
+    - `S` - positive length surplus to the M207 Snnn, in mm
+    - `F` - feedrate, in mm/sec
+    */
     case 208: // M208 - set retract recover length S[positive mm surplus to the M207 S*] F[feedrate mm/min]
     {
       if(code_seen('S'))
@@ -6713,8 +7198,16 @@ Sigma_Exit:
       }
     }break;
 
-    //! ### M209 - Enable/disable automatict retract
-    // ---------------------------------------------
+    /*!
+	### M209 - Enable/disable automatict retract <a href="https://reprap.org/wiki/G-code#M209:_Enable_automatic_retract">M209: Enable automatic retract</a>
+	This boolean value S 1=true or 0=false enables automatic retract detect if the slicer did not support G10/G11: every normal extrude-only move will be classified as retract depending on the direction.
+    #### Usage
+    
+        M209 [ S ]
+        
+    #### Parameters
+    - `S` - 1=true or 0=false
+    */
     case 209: // M209 - S<1=true/0=false> enable automatic retract detect if the slicer did not support G10/11: every normal extrude-only move will be classified as retract depending on the direction.
     {
       if(code_seen('S'))
@@ -6756,8 +7249,17 @@ Sigma_Exit:
     #endif // FWRETRACT
     #if EXTRUDERS > 1
 
-    // ### M218 - Set hotend offset
-    // ----------------------------------------
+    /*!
+	### M218 - Set hotend offset <a href="https://reprap.org/wiki/G-code#M218:_Set_Hotend_Offset">M218: Set Hotend Offset</a>
+	In Prusa Firmware this G-code is only active if `EXTRUDERS` is higher then 1 in the source code. On Original i3 Prusa MK2/s MK2.5/s MK3/s it is not active.
+    #### Usage
+    
+        M218 [ X | Y ]
+        
+    #### Parameters
+    - `X` - X offset
+    - `Y` - Y offset
+    */
     case 218: // M218 - set hotend offset (in mm), T<extruder_number> X<offset_on_X> Y<offset_on_Y>
     {
       uint8_t extruder;
@@ -6785,50 +7287,88 @@ Sigma_Exit:
     }break;
     #endif
 
-    //! ### M220 Set feedrate percentage
-    // -----------------------------------------------
+    /*!
+	### M220 Set feedrate percentage <a href="https://reprap.org/wiki/G-code#M220:_Set_speed_factor_override_percentage">M220: Set speed factor override percentage</a>
+	#### Usage
+    
+        M220 [ B | S | R ]
+    
+    #### Parameters
+    - `B` - Backup current speed factor
+	- `S` - Speed factor override percentage (0..100 or higher)
+	- `R` - Restore previous speed factor
+    */
     case 220: // M220 S<factor in percent>- set speed factor override percentage
     {
-      if (code_seen('B')) //backup current speed factor
-      {
-        saved_feedmultiply_mm = feedmultiply;
-      }
-      if(code_seen('S'))
-      {		
-        feedmultiply = code_value() ;
-      }
-      if (code_seen('R')) { //restore previous feedmultiply
-        feedmultiply = saved_feedmultiply_mm;
-      }
+        bool codesWereSeen = false;
+        if (code_seen('B')) //backup current speed factor
+        {
+            saved_feedmultiply_mm = feedmultiply;
+            codesWereSeen = true;
+        }
+        if (code_seen('S'))
+        {
+            feedmultiply = code_value();
+            codesWereSeen = true;
+        }
+        if (code_seen('R')) //restore previous feedmultiply
+        {
+            feedmultiply = saved_feedmultiply_mm;
+            codesWereSeen = true;
+        }
+        if (!codesWereSeen)
+        {
+            printf_P(PSTR("%i%%\n"), feedmultiply);
+        }
     }
     break;
 
-    //! ### M221 - Set extrude factor override percentage
-    // ----------------------------------------------------
+    /*!
+	### M221 - Set extrude factor override percentage <a href="https://reprap.org/wiki/G-code#M221:_Set_extrude_factor_override_percentage">M221: Set extrude factor override percentage</a>
+	#### Usage
+    
+        M221 [ S | T ]
+    
+    #### Parameters
+	- `S` - Extrude factor override percentage (0..100 or higher), default 100%
+	- `T` - Extruder drive number (Prusa Firmware only), default 0 if not set.
+    */
     case 221: // M221 S<factor in percent>- set extrude factor override percentage
     {
-      if(code_seen('S'))
-      {
-        int tmp_code = code_value();
-        if (code_seen('T'))
+        if (code_seen('S'))
         {
-          uint8_t extruder;
-          if(setTargetedHotend(221, extruder)){
-            break;
-          }
-          extruder_multiply[extruder] = tmp_code;
+            int tmp_code = code_value();
+            if (code_seen('T'))
+            {
+                uint8_t extruder;
+                if (setTargetedHotend(221, extruder))
+                    break;
+                extruder_multiply[extruder] = tmp_code;
+            }
+            else
+            {
+                extrudemultiply = tmp_code ;
+            }
         }
         else
         {
-          extrudemultiply = tmp_code ;
+            printf_P(PSTR("%i%%\n"), extrudemultiply);
         }
-      }
-      calculate_extruder_multipliers();
+        calculate_extruder_multipliers();
     }
     break;
 
-  //! ### M226 - Wait for Pin state
-  // ------------------------------------------
+    /*!
+    ### M226 - Wait for Pin state <a href="https://reprap.org/wiki/G-code#M226:_Wait_for_pin_state">M226: Wait for pin state</a>
+    Wait until the specified pin reaches the state required
+    #### Usage
+    
+        M226 [ P | S ]
+    
+    #### Parameters
+    - `P` - pin number
+    - `S` - pin state
+    */
 	case 226: // M226 P<pin number> S<pin state>- Wait until the specified pin reaches the state required
 	{
       if(code_seen('P')){
@@ -6883,8 +7423,17 @@ Sigma_Exit:
 
     #if NUM_SERVOS > 0
 
-    //! ### M280 - Set/Get servo position
-    // --------------------------------------------
+    /*!
+	### M280 - Set/Get servo position <a href="https://reprap.org/wiki/G-code#M280:_Set_servo_position">M280: Set servo position</a>
+	In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+    #### Usage
+    
+        M280 [ P | S ]
+    
+    #### Parameters
+    - `P` - Servo index (id)
+    - `S` - Target position
+    */
     case 280: // M280 - set servo position absolute. P: servo index, S: angle or microseconds
       {
         int servo_index = -1;
@@ -6924,8 +7473,17 @@ Sigma_Exit:
 
     #if (LARGE_FLASH == true && ( BEEPER > 0 || defined(ULTRALCD) || defined(LCD_USE_I2C_BUZZER)))
     
-    //! ### M300 - Play tone
-    // -----------------------
+    /*!
+	### M300 - Play tone <a href="https://reprap.org/wiki/G-code#M300:_Play_beep_sound">M300: Play beep sound</a>
+	In Prusa Firmware the defaults are `100Hz` and `1000ms`, so that `M300` without parameters will beep for a second.
+    #### Usage
+    
+        M300 [ S | P ]
+    
+    #### Parameters
+    - `S` - frequency in Hz. Not all firmware versions support this parameter
+    - `P` - duration in milliseconds
+    */
     case 300: // M300
     {
       int beepS = code_seen('S') ? code_value() : 110;
@@ -6946,8 +7504,20 @@ Sigma_Exit:
 
     #ifdef PIDTEMP
 
-    //! ### M301 - Set hotend PID
-    // ---------------------------------------
+    /*!
+	### M301 - Set hotend PID <a href="https://reprap.org/wiki/G-code#M301:_Set_PID_parameters">M301: Set PID parameters</a>
+	Sets Proportional (P), Integral (I) and Derivative (D) values for hot end.
+    See also <a href="https://reprap.org/wiki/PID_Tuning">PID Tuning.</a>
+    #### Usage
+    
+        M301 [ P | I | D | C ]
+    
+    #### Parameters
+    - `P` - proportional (Kp)
+    - `I` - integral (Ki)
+    - `D` - derivative (Kd)
+    - `C` - heating power=Kc*(e_speed0)  
+    */
     case 301:
       {
         if(code_seen('P')) cs.Kp = code_value();
@@ -6977,8 +7547,19 @@ Sigma_Exit:
     #endif //PIDTEMP
     #ifdef PIDTEMPBED
 
-    //! ### M304 - Set bed PID 
-    // --------------------------------------
+    /*!
+	### M304 - Set bed PID  <a href="https://reprap.org/wiki/G-code#M304:_Set_PID_parameters_-_Bed">M304: Set PID parameters - Bed</a>
+	Sets Proportional (P), Integral (I) and Derivative (D) values for bed.
+    See also <a href="https://reprap.org/wiki/PID_Tuning">PID Tuning.</a>
+    #### Usage
+    
+        M304 [ P | I | D ]
+    
+    #### Parameters
+    - `P` - proportional (Kp)
+    - `I` - integral (Ki)
+    - `D` - derivative (Kd)
+    */
     case 304:
       {
         if(code_seen('P')) cs.bedKp = code_value();
@@ -6998,8 +7579,13 @@ Sigma_Exit:
       break;
     #endif //PIDTEMP
 
-    //! ### M240 - Trigger camera
-    // --------------------------------------------
+    /*!
+	### M240 - Trigger camera <a href="https://reprap.org/wiki/G-code#M240:_Trigger_camera">M240: Trigger camera</a>
+	
+	In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code.
+	
+	You need to (re)define and assign `CHDK` or `PHOTOGRAPH_PIN` the correct pin number to be able to use the feature.
+    */
     case 240: // M240  Triggers a camera by emulating a Canon RC-1 : http://www.doc-diy.net/photo/rc-1_hacked/
      {
      	#ifdef CHDK
@@ -7033,8 +7619,16 @@ Sigma_Exit:
     break;
     #ifdef PREVENT_DANGEROUS_EXTRUDE
 
-    //! ### M302 - Allow cold extrude, or set minimum extrude temperature
-    // -------------------------------------------------------------------
+    /*!
+	### M302 - Allow cold extrude, or set minimum extrude temperature <a href="https://reprap.org/wiki/G-code#M302:_Allow_cold_extrudes">M302: Allow cold extrudes</a>
+    This tells the printer to allow movement of the extruder motor above a certain temperature, or if disabled, to allow extruder movement when the hotend is below a safe printing temperature.
+    #### Usage
+    
+        M302 [ S ]
+    
+    #### Parameters
+    - `S` - Cold extrude minimum temperature
+    */
     case 302:
     {
 	  float temp = .0;
@@ -7044,8 +7638,18 @@ Sigma_Exit:
     break;
 	#endif
 
-    //! ### M303 - PID autotune
-    // -------------------------------------
+    /*!
+	### M303 - PID autotune <a href="https://reprap.org/wiki/G-code#M303:_Run_PID_tuning">M303: Run PID tuning</a>
+    PID Tuning refers to a control algorithm used in some repraps to tune heating behavior for hot ends and heated beds. This command generates Proportional (Kp), Integral (Ki), and Derivative (Kd) values for the hotend or bed. Send the appropriate code and wait for the output to update the firmware values.
+    #### Usage
+    
+        M303 [ E | S | C ]
+    
+    #### Parameters
+      - `E` - Extruder, default `E0`. Use `E-1` to calibrate the bed PID
+      - `S` - Target temperature, default `210°C` for hotend, 70 for bed
+      - `C` - Cycles, default `5`
+	*/
     case 303:
     {
       float temp = 150.0;
@@ -7060,17 +7664,30 @@ Sigma_Exit:
     }
     break;
     
-    //! ### M400 - Wait for all moves to finish
-    // -----------------------------------------
+    /*!
+	### M400 - Wait for all moves to finish <a href="https://reprap.org/wiki/G-code#M400:_Wait_for_current_moves_to_finish">M400: Wait for current moves to finish</a>
+	Finishes all current moves and and thus clears the buffer.
+    Equivalent to `G4` with no parameters.
+    */
     case 400:
     {
       st_synchronize();
     }
     break;
 
-  //! ### M403 - Set filament type (material) for particular extruder and notify the MMU
-	// ----------------------------------------------
-  case 403:
+    /*!
+	### M403 - Set filament type (material) for particular extruder and notify the MMU <a href="https://reprap.org/wiki/G-code#M403:_Set_filament_type_.28material.29_for_particular_extruder_and_notify_the_MMU.">M403 - Set filament type (material) for particular extruder and notify the MMU</a>
+    Currently three different materials are needed (default, flex and PVA).  
+    And storing this information for different load/unload profiles etc. in the future firmware does not have to wait for "ok" from MMU.
+    #### Usage
+    
+        M403 [ E | F ]
+    
+    #### Parameters
+    - `E` - Extruder number. 0-indexed.
+    - `F` - Filament type
+	*/
+    case 403:
 	{
 		// currently three different materials are needed (default, flex and PVA)
 		// add storing this information for different load/unload profiles etc. in the future
@@ -7086,40 +7703,51 @@ Sigma_Exit:
 	}
 	break;
 
-    //! ### M500 - Store settings in EEPROM
-    // -----------------------------------------
+    /*!
+	### M500 - Store settings in EEPROM <a href="https://reprap.org/wiki/G-code#M500:_Store_parameters_in_non-volatile_storage">M500: Store parameters in non-volatile storage</a>
+	Save current parameters to EEPROM.
+    */
     case 500:
     {
         Config_StoreSettings();
     }
     break;
 
-    //! ### M501 - Read settings from EEPROM
-    // ----------------------------------------
+    /*!
+	### M501 - Read settings from EEPROM <a href="https://reprap.org/wiki/G-code#M501:_Read_parameters_from_EEPROM">M501: Read parameters from EEPROM</a>
+	Set the active parameters to those stored in the EEPROM. This is useful to revert parameters after experimenting with them.
+    */
     case 501:
     {
         Config_RetrieveSettings();
     }
     break;
 
-    //! ### M502 - Revert all settings to factory default
-    // -------------------------------------------------
+    /*!
+	### M502 - Revert all settings to factory default <a href="https://reprap.org/wiki/G-code#M502:_Restore_Default_Settings">M502: Restore Default Settings</a>
+	This command resets all tunable parameters to their default values, as set in the firmware's configuration files. This doesn't reset any parameters stored in the EEPROM, so it must be followed by M500 to write the default settings.
+    */
     case 502:
     {
         Config_ResetDefault();
     }
     break;
 
-    //! ### M503 - Repport all settings currently in memory
-    // -------------------------------------------------
+    /*!
+	### M503 - Repport all settings currently in memory <a href="https://reprap.org/wiki/G-code#M503:_Report_Current_Settings">M503: Report Current Settings</a>
+	This command asks the firmware to reply with the current print settings as set in memory. Settings will differ from EEPROM contents if changed since the last load / save. The reply output includes the G-Code commands to produce each setting. For example, Steps-Per-Unit values are displayed as an M92 command.
+    */
     case 503:
     {
         Config_PrintSettings();
     }
     break;
 
-    //! ### M509 - Force language selection
-    // ------------------------------------------------
+    /*!
+	### M509 - Force language selection <a href="https://reprap.org/wiki/G-code#M509:_Force_language_selection">M509: Force language selection</a>
+	Resets the language to English.
+	Only on Original Prusa i3 MK2.5/s and MK3/s with multiple languages.
+	*/
     case 509:
     {
 		lang_reset();
@@ -7129,8 +7757,16 @@ Sigma_Exit:
     break;
     #ifdef ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED
 
-    //! ### M540 - Abort print on endstop hit (enable/disable)
-    // -----------------------------------------------------
+    /*!
+	### M540 - Abort print on endstop hit (enable/disable) <a href="https://reprap.org/wiki/G-code#M540_in_Marlin:_Enable.2FDisable_.22Stop_SD_Print_on_Endstop_Hit.22">M540 in Marlin: Enable/Disable "Stop SD Print on Endstop Hit"</a>
+	In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code. You must define `ABORT_ON_ENDSTOP_HIT_FEATURE_ENABLED`.
+    #### Usage
+    
+        M540 [ S ]
+    
+    #### Parameters
+    - `S` - disabled=0, enabled=1
+	*/
     case 540:
     {
         if(code_seen('S')) abort_on_endstop_hit = code_value() > 0;
@@ -7138,6 +7774,17 @@ Sigma_Exit:
     break;
     #endif
 
+	/*!
+	### M851 - Set Z-Probe Offset <a href="https://reprap.org/wiki/G-code#M851:_Set_Z-Probe_Offset">M851: Set Z-Probe Offset"</a>
+    Sets the Z-probe Z offset. This offset is used to determine the actual Z position of the nozzle when using a probe to home Z with G28. This value may also be used by G81 (Prusa) / G29 (Marlin) to apply correction to the Z position.
+	This value represents the distance from nozzle to the bed surface at the point where the probe is triggered. This value will be negative for typical switch probes, inductive probes, and setups where the nozzle makes a circuit with a raised metal contact. This setting will be greater than zero on machines where the nozzle itself is used as the probe, pressing down on the bed to press a switch. (This is a common setup on delta machines.)
+    #### Usage
+    
+        M851 [ Z ]
+    
+    #### Parameters
+    - `Z` - Z offset probe to nozzle.
+	*/
     #ifdef CUSTOM_M_CODE_SET_Z_PROBE_OFFSET
     case CUSTOM_M_CODE_SET_Z_PROBE_OFFSET:
     {
@@ -7176,8 +7823,21 @@ Sigma_Exit:
 
     #ifdef FILAMENTCHANGEENABLE
 
-    //! ### M600 - Initiate Filament change procedure
-    // --------------------------------------
+    /*!
+	### M600 - Initiate Filament change procedure <a href="https://reprap.org/wiki/G-code#M600:_Filament_change_pause">M600: Filament change pause</a>
+    Initiates Filament change, it is also used during Filament Runout Sensor process.
+	If the `M600` is triggered under 25mm it will do a Z-lift of 25mm to prevent a filament blob.
+    #### Usage
+    
+        M600 [ X | Y | Z | E | L | AUTO ]
+      
+    - `X`    - X position, default 211
+    - `Y`    - Y position, default 0
+    - `Z`    - relative lift Z, default 2.
+    - `E`    - initial retract, default -2
+    - `L`    - later retract distance for removal, default -80
+    - `AUTO` - Automatically (only with MMU)
+    */
     case 600: //Pause for filament change X[pos] Y[pos] Z[relative lift] E[initial retract] L[later retract distance for removal]
 	{
 		st_synchronize();
@@ -7253,10 +7913,15 @@ Sigma_Exit:
     break;
     #endif //FILAMENTCHANGEENABLE
 
-  //! ### M25 - Pause SD print
-  //! ### M601 - Pause print
-  //! ### M125 - Pause print (TODO: not implemented)
-  // -------------------------------
+    /*!
+    ### M601 - Pause print <a href="https://reprap.org/wiki/G-code#M601:_Pause_print">M601: Pause print</a>
+    */
+    /*!
+    ### M125 - Pause print (TODO: not implemented)
+    */
+    /*!
+    ### M25 - Pause SD print <a href="https://reprap.org/wiki/G-code#M25:_Pause_SD_print">M25: Pause SD print</a>
+    */
 	case 25:
 	case 601:
 	{
@@ -7269,30 +7934,34 @@ Sigma_Exit:
 	}
 	break;
 
-  //! ### M602 - Resume print
-  // -------------------------------
+    /*!
+	### M602 - Resume print <a href="https://reprap.org/wiki/G-code#M602:_Resume_print">M602: Resume print</a>
+    */
 	case 602: {
 	  if (isPrintPaused)
           lcd_resume_print();
 	}
 	break;
 
-  //! ### M603 - Stop print
-  // -------------------------------
+    /*!
+    ### M603 - Stop print <a href="https://reprap.org/wiki/G-code#M603:_Stop_print">M603: Stop print</a>
+    */
 	case 603: {
 		lcd_print_stop();
 	}
 	break;
 
 #ifdef PINDA_THERMISTOR
-  //! ### M860 - Wait for extruder temperature (PINDA)
-  // --------------------------------------------------------------
-  /*! 
-      Wait for PINDA thermistor to reach target temperature
-      
-                M860 [S<target_temperature>]
-      
-  */
+    /*!
+	### M860 - Wait for extruder temperature (PINDA) <a href="https://reprap.org/wiki/G-code#M860_Wait_for_Probe_Temperature">M860 Wait for Probe Temperature</a>
+    Wait for PINDA thermistor to reach target temperature
+    #### Usage
+    
+        M860 [ S ]
+    
+    #### Parameters
+    - `S` - Target temperature
+    */
 	case 860: 
 	{
 		int set_target_pinda = 0;
@@ -7323,9 +7992,8 @@ Sigma_Exit:
 			{
 				SERIAL_PROTOCOLPGM("P:");
 				SERIAL_PROTOCOL_F(current_temperature_pinda, 1);
-				SERIAL_PROTOCOLPGM("/");
-				SERIAL_PROTOCOL(set_target_pinda);
-				SERIAL_PROTOCOLLN("");
+				SERIAL_PROTOCOL('/');
+				SERIAL_PROTOCOLLN(set_target_pinda);
 				codenum = _millis();
 			}
 			manage_heater();
@@ -7337,17 +8005,20 @@ Sigma_Exit:
 		break;
 	}
  
-  //! ### M861 - Set/Get PINDA temperature compensation offsets
-  // -----------------------------------------------------------
-  /*!
-      
-        M861 [ ? | ! | Z | S<microsteps> [I<table_index>] ]
-      
-      - `?` - Print current EEPROM offset values
-      - `!` - Set factory default values
-      - `Z` - Set all values to 0 (effectively disabling PINDA temperature compensation)
-      - `S<microsteps>` `I<table_index>` - Set compensation ustep value S for compensation table index I
-  */
+    /*!
+    ### M861 - Set/Get PINDA temperature compensation offsets <a href="https://reprap.org/wiki/G-code#M861_Set_Probe_Thermal_Compensation">M861 Set Probe Thermal Compensation</a>
+    Set compensation ustep value `S` for compensation table index `I`.
+    #### Usage
+    
+        M861 [ ? | ! | Z | S | I ]
+    
+    #### Parameters
+    - `?` - Print current EEPROM offset values
+    - `!` - Set factory default values
+    - `Z` - Set all values to 0 (effectively disabling PINDA temperature compensation)
+    - `S` - Microsteps
+    - `I` - Table index
+    */
 	case 861:
 		if (code_seen('?')) { // ? - Print out current EEPROM offset values
 			uint8_t cal_status = calibration_status_pinda();
@@ -7420,38 +8091,40 @@ Sigma_Exit:
 
 #endif //PINDA_THERMISTOR
    
-    //! ### M862 - Print checking
-    // ----------------------------------------------
-    /*!     
-        Checks the parameters of the printer and gcode and performs compatibility check
-          - M862.1 { P<nozzle_diameter> | Q }
-          - M862.2 { P<model_code> | Q }
-          - M862.3 { P"<model_name>" | Q }
-          - M862.4 { P<fw_version> | Q }
-          - M862.5 { P<gcode_level> | Q }
-
-        When run with P<> argument, the check is performed against the input value.
-        When run with Q argument, the current value is shown.
-		  
-        M862.3 accepts text identifiers of printer types too.
-        The syntax of M862.3 is (note the quotes around the type):
-		
-                M862.3 P "MK3S"
-		  
-        Accepted printer type identifiers and their numeric counterparts:
-          - MK1         (100)
-          - MK2         (200)       
-          - MK2MM       (201)     
-          - MK2S        (202)      
-          - MK2SMM      (203)    
-          - MK2.5       (250)     
-          - MK2.5MMU2   (20250) 
-          - MK2.5S      (252)    
-          - MK2.5SMMU2S (20252)
-          - MK3         (300)
-          - MK3MMU2     (20300)
-          - MK3S        (302)
-          - MK3SMMU2S	(20302)
+    /*!
+	### M862 - Print checking <a href="https://reprap.org/wiki/G-code#M862:_Print_checking">M862: Print checking</a>
+    Checks the parameters of the printer and gcode and performs compatibility check
+	
+      - M862.1 { P<nozzle_diameter> | Q } 0.25/0.40/0.60
+      - M862.2 { P<model_code> | Q }
+      - M862.3 { P"<model_name>" | Q }
+      - M862.4 { P<fw_version> | Q }
+      - M862.5 { P<gcode_level> | Q }
+    
+    When run with P<> argument, the check is performed against the input value.
+    When run with Q argument, the current value is shown.
+	
+    M862.3 accepts text identifiers of printer types too.
+    The syntax of M862.3 is (note the quotes around the type):
+	  
+          M862.3 P "MK3S"
+	  
+    Accepted printer type identifiers and their numeric counterparts:
+	
+      - MK1         (100)
+      - MK2         (200)       
+      - MK2MM       (201)     
+      - MK2S        (202)      
+      - MK2SMM      (203)    
+      - MK2.5       (250)     
+      - MK2.5MMU2   (20250) 
+      - MK2.5S      (252)    
+      - MK2.5SMMU2S (20252)
+      - MK3         (300)
+      - MK3MMU2     (20300)
+      - MK3S        (302)
+      - MK3SMMU2S   (20302)
+	
     */
     case 862: // M862: print checking
           float nDummy;
@@ -7513,19 +8186,44 @@ Sigma_Exit:
     break;
 
 #ifdef LIN_ADVANCE
-    //! ### M900 - Set Linear advance options
-    // ----------------------------------------------
+    /*!
+	### M900 - Set Linear advance options <a href="https://reprap.org/wiki/G-code#M900_Set_Linear_Advance_Scaling_Factors">M900 Set Linear Advance Scaling Factors</a>
+	Sets the advance extrusion factors for Linear Advance. If any of the R, W, H, or D parameters are set to zero the ratio will be computed dynamically during printing.
+	#### Usage
+    
+        M900 [ K | R | W | H | D]
+    
+    #### Parameters
+    - `K` -  Advance K factor
+    - `R` - Set ratio directly (overrides WH/D)
+    - `W` - Width
+    - `H` - Height
+    - `D` - Diameter Set ratio from WH/D
+    */
     case 900:
         gcode_M900();
     break;
 #endif
 
-    //! ### M907 - Set digital trimpot motor current in mA using axis codes
-    // ---------------------------------------------------------------
+    /*!
+	### M907 - Set digital trimpot motor current in mA using axis codes <a href="https://reprap.org/wiki/G-code#M907:_Set_digital_trimpot_motor">M907: Set digital trimpot motor</a>
+	Set digital trimpot motor current using axis codes (X, Y, Z, E, B, S).
+	#### Usage
+    
+        M907 [ X | Y | Z | E | B | S ]
+	
+    #### Parameters
+    - `X` - X motor driver
+    - `Y` - Y motor driver
+    - `Z` - Z motor driver
+    - `E` - Extruder motor driver
+    - `B` - Second Extruder motor driver
+    - `S` - All motors
+    */
     case 907:
     {
 #ifdef TMC2130
-        //! See tmc2130_cur2val() for translation to 0 .. 63 range
+        // See tmc2130_cur2val() for translation to 0 .. 63 range
         for (int i = 0; i < NUM_AXIS; i++)
 			if(code_seen(axis_codes[i]))
 			{
@@ -7555,8 +8253,17 @@ Sigma_Exit:
     }
     break;
 
-    //! ### M908 - Control digital trimpot directly
-    // ---------------------------------------------------------
+    /*!
+	### M908 - Control digital trimpot directly <a href="https://reprap.org/wiki/G-code#M908:_Control_digital_trimpot_directly">M908: Control digital trimpot directly</a>
+	In Prusa Firmware this G-code is deactivated by default, must be turned on in the source code. Not usable on Prusa printers.
+    #### Usage
+    
+        M908 [ P | S ]
+    
+    #### Parameters
+    - `P` - channel
+    - `S` - current
+    */
     case 908:
     {
       #if defined(DIGIPOTSS_PIN) && DIGIPOTSS_PIN > -1
@@ -7570,16 +8277,30 @@ Sigma_Exit:
 
 #ifdef TMC2130_SERVICE_CODES_M910_M918
 
-  //! ### M910 - TMC2130 init
-  // -----------------------------------------------
+    /*!
+	### M910 - TMC2130 init <a href="https://reprap.org/wiki/G-code#M910:_TMC2130_init">M910: TMC2130 init</a>
+	Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
+	
+    */
 	case 910:
     {
 		tmc2130_init();
     }
     break;
 
-  //! ### M911 - Set TMC2130 holding currents
-  // -------------------------------------------------
+    /*!
+    ### M911 - Set TMC2130 holding currents <a href="https://reprap.org/wiki/G-code#M911:_Set_TMC2130_holding_currents">M911: Set TMC2130 holding currents</a>
+	Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
+    #### Usage
+    
+        M911 [ X | Y | Z | E ]
+    
+    #### Parameters
+    - `X` - X stepper driver holding current value
+    - `Y` - Y stepper driver holding current value
+    - `Z` - Z stepper driver holding current value
+    - `E` - Extruder stepper driver holding current value
+    */
 	case 911: 
     {
 		if (code_seen('X')) tmc2130_set_current_h(0, code_value());
@@ -7589,8 +8310,19 @@ Sigma_Exit:
     }
     break;
 
-  //! ### M912 - Set TMC2130 running currents
-  // -----------------------------------------------
+    /*!
+	### M912 - Set TMC2130 running currents <a href="https://reprap.org/wiki/G-code#M912:_Set_TMC2130_running_currents">M912: Set TMC2130 running currents</a>
+	Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
+    #### Usage
+    
+        M912 [ X | Y | Z | E ]
+    
+    #### Parameters
+    - `X` - X stepper driver running current value
+    - `Y` - Y stepper driver running current value
+    - `Z` - Z stepper driver running current value
+    - `E` - Extruder stepper driver running current value
+    */
 	case 912: 
     {
 		if (code_seen('X')) tmc2130_set_current_r(0, code_value());
@@ -7600,17 +8332,22 @@ Sigma_Exit:
     }
     break;
 
-  //! ### M913 - Print TMC2130 currents
-  // -----------------------------
+    /*!
+	### M913 - Print TMC2130 currents <a href="https://reprap.org/wiki/G-code#M913:_Print_TMC2130_currents">M913: Print TMC2130 currents</a>
+	Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
+	Shows TMC2130 currents.
+    */
 	case 913:
     {
 		tmc2130_print_currents();
     }
     break;
 
-  //! ### M914 - Set TMC2130 normal mode
-  // ------------------------------
-        case 914:
+    /*!
+	### M914 - Set TMC2130 normal mode <a href="https://reprap.org/wiki/G-code#M914:_Set_TMC2130_normal_mode">M914: Set TMC2130 normal mode</a>
+	Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
+    */
+    case 914:
     {
 		tmc2130_mode = TMC2130_MODE_NORMAL;
 		update_mode_profile();
@@ -7618,9 +8355,11 @@ Sigma_Exit:
     }
     break;
 
-  //! ### M95 - Set TMC2130 silent mode
-  // ------------------------------
-        case 915:
+    /*!
+	### M915 - Set TMC2130 silent mode <a href="https://reprap.org/wiki/G-code#M915:_Set_TMC2130_silent_mode">M915: Set TMC2130 silent mode</a>
+	Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
+    */
+    case 915:
     {
 		tmc2130_mode = TMC2130_MODE_SILENT;
 		update_mode_profile();
@@ -7628,8 +8367,19 @@ Sigma_Exit:
     }
     break;
 
-  //! ### M916 - Set TMC2130 Stallguard sensitivity threshold
-  // -------------------------------------------------------
+    /*!
+	### M916 - Set TMC2130 Stallguard sensitivity threshold <a href="https://reprap.org/wiki/G-code#M916:_Set_TMC2130_Stallguard_sensitivity_threshold">M916: Set TMC2130 Stallguard sensitivity threshold</a>
+	Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
+    #### Usage
+    
+        M916 [ X | Y | Z | E ]
+    
+    #### Parameters
+    - `X` - X stepper driver stallguard sensitivity threshold value
+    - `Y` - Y stepper driver stallguard sensitivity threshold value
+    - `Z` - Z stepper driver stallguard sensitivity threshold value
+    - `E` - Extruder stepper driver stallguard sensitivity threshold value
+    */
 	case 916:
     {
 		if (code_seen('X')) tmc2130_sg_thr[X_AXIS] = code_value();
@@ -7641,8 +8391,19 @@ Sigma_Exit:
     }
     break;
 
-  //! ### M917 - Set TMC2130 PWM amplitude offset (pwm_ampl)
-  // --------------------------------------------------------------
+    /*!
+	### M917 - Set TMC2130 PWM amplitude offset (pwm_ampl) <a href="https://reprap.org/wiki/G-code#M917:_Set_TMC2130_PWM_amplitude_offset_.28pwm_ampl.29">M917: Set TMC2130 PWM amplitude offset (pwm_ampl)</a>
+	Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
+    #### Usage
+    
+        M917 [ X | Y | Z | E ]
+    
+    #### Parameters
+    - `X` - X stepper driver PWM amplitude offset value
+    - `Y` - Y stepper driver PWM amplitude offset value
+    - `Z` - Z stepper driver PWM amplitude offset value
+    - `E` - Extruder stepper driver PWM amplitude offset value
+    */
 	case 917:
     {
 		if (code_seen('X')) tmc2130_set_pwm_ampl(0, code_value());
@@ -7652,8 +8413,19 @@ Sigma_Exit:
     }
     break;
 
-  //! ### M918 - Set TMC2130 PWM amplitude gradient (pwm_grad)
-  // -------------------------------------------------------------
+    /*!
+	### M918 - Set TMC2130 PWM amplitude gradient (pwm_grad) <a href="https://reprap.org/wiki/G-code#M918:_Set_TMC2130_PWM_amplitude_gradient_.28pwm_grad.29">M918: Set TMC2130 PWM amplitude gradient (pwm_grad)</a>
+	Not active in default, only if `TMC2130_SERVICE_CODES_M910_M918` is defined in source code.
+    #### Usage
+    
+        M918 [ X | Y | Z | E ]
+    
+    #### Parameters
+    - `X` - X stepper driver PWM amplitude gradient value
+    - `Y` - Y stepper driver PWM amplitude gradient value
+    - `Z` - Z stepper driver PWM amplitude gradient value
+    - `E` - Extruder stepper driver PWM amplitude gradient value
+    */
 	case 918:
     {
 		if (code_seen('X')) tmc2130_set_pwm_grad(0, code_value());
@@ -7665,9 +8437,24 @@ Sigma_Exit:
 
 #endif //TMC2130_SERVICE_CODES_M910_M918
 
-    //! ### M350 - Set microstepping mode
-    // ---------------------------------------------------
-    //!  Warning: Steps per unit remains unchanged. S code sets stepping mode for all drivers.
+    /*!
+	### M350 - Set microstepping mode <a href="https://reprap.org/wiki/G-code#M350:_Set_microstepping_mode">M350: Set microstepping mode</a>
+    Printers with TMC2130 drivers have `X`, `Y`, `Z` and `E` as options. The steps-per-unit value is updated accordingly. Not all resolutions are valid!
+    Printers without TMC2130 drivers also have `B` and `S` options. In this case, the steps-per-unit value in not changed!
+    #### Usage
+    
+        M350 [ X | Y | Z | E | B | S ]
+    
+    #### Parameters
+    - `X` - X new resolution
+    - `Y` - Y new resolution
+    - `Z` - Z new resolution
+    - `E` - E new resolution
+    
+    Only valid for MK2.5(S) or printers without TMC2130 drivers
+    - `B` - Second extruder new resolution
+    - `S` - All axes new resolution
+    */
     case 350: 
     {
 	#ifdef TMC2130
@@ -7681,7 +8468,6 @@ Sigma_Exit:
 				res_valid |= (i == E_AXIS) && ((res_new == 64) || (res_new == 128)); // resolutions valid for E only
 				if (res_valid)
 				{
-					
 					st_synchronize();
 					uint16_t res = tmc2130_get_res(i);
 					tmc2130_set_res(i, res_new);
@@ -7698,6 +8484,10 @@ Sigma_Exit:
 						cs.axis_steps_per_unit[i] /= fac;
 						position[i] /= fac;
 					}
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
+                    if (i == E_AXIS)
+                        fsensor_set_axis_steps_per_unit(cs.axis_steps_per_unit[i]);
+#endif
 				}
 			}
 		}
@@ -7712,11 +8502,21 @@ Sigma_Exit:
     }
     break;
 
-    //! ### M351 - Toggle Microstep Pins
-    // -----------------------------------
-    //! Toggle MS1 MS2 pins directly, S# determines MS1 or MS2, X# sets the pin high/low.
-    //!
-    //!         M351 [B<0|1>] [E<0|1>] S<1|2> [X<0|1>] [Y<0|1>] [Z<0|1>] 
+    /*!
+	### M351 - Toggle Microstep Pins <a href="https://reprap.org/wiki/G-code#M351:_Toggle_MS1_MS2_pins_directly">M351: Toggle MS1 MS2 pins directly</a>
+    Toggle MS1 MS2 pins directly.
+    #### Usage
+    
+        M351 [B<0|1>] [E<0|1>] S<1|2> [X<0|1>] [Y<0|1>] [Z<0|1>]
+    
+    #### Parameters
+    - `X` - Update X axis
+    - `Y` - Update Y axis
+    - `Z` - Update Z axis
+    - `E` - Update E axis
+    - `S` - which MSx pin to toggle
+    - `B` - new pin value
+    */
     case 351:
     {
       #if defined(X_MS1_PIN) && X_MS1_PIN > -1
@@ -7736,8 +8536,10 @@ Sigma_Exit:
     }
     break;
 
-  //! ### M701 - Load filament
-  // -------------------------
+  /*!
+  ### M701 - Load filament <a href="https://reprap.org/wiki/G-code#M701:_Load_filament">M701: Load filament</a>
+  
+  */
 	case 701:
 	{
 		if (mmu_enabled && code_seen('E'))
@@ -7746,16 +8548,17 @@ Sigma_Exit:
 	}
 	break;
 
-  //! ### M702 - Unload filament
-  // ------------------------
-  /*! 
-      
-          M702 [U C]
-      
-      - `U` Unload all filaments used in current print
-      - `C` Unload just current filament
-      - without any parameters unload all filaments
-  */
+    /*!
+    ### M702 - Unload filament <a href="https://reprap.org/wiki/G-code#M702:_Unload_filament">G32: Undock Z Probe sled</a>
+    #### Usage
+    
+        M702 [ U | C ]
+    
+    #### Parameters
+    - `U` - Unload all filaments used in current print
+    - `C` - Unload just current filament
+    - without any parameters unload all filaments
+    */
 	case 702:
 	{
 #ifdef SNMM
@@ -7778,14 +8581,19 @@ Sigma_Exit:
 	}
 	break;
 
-    //! ### M999 - Restart after being stopped
-    // ------------------------------------
+    /*!
+    ### M999 - Restart after being stopped <a href="https://reprap.org/wiki/G-code#M999:_Restart_after_being_stopped_by_error">M999: Restart after being stopped by error</a>
+    @todo Usually doesn't work. Should be fixed or removed. Most of the time, if `Stopped` it set, the print fails and is unrecoverable.
+    */
     case 999:
       Stopped = false;
       lcd_reset_alert_level();
       gcode_LastN = Stopped_gcode_LastN;
       FlushSerialRequestResend();
     break;
+	/*!
+	#### End of M-Commands
+    */
 	default: 
 		printf_P(PSTR("Unknown M code: %s \n"), cmdbuffer + bufindr + CMDHDRSIZE);
     }
@@ -7794,19 +8602,16 @@ Sigma_Exit:
 	}
   }
   // end if(code_seen('M')) (end of M codes)
-
-  //! -----------------------------------------------------------------------------------------
-  //! T Codes
-  //! 
-  //! T<extruder nr.> - select extruder in case of multi extruder printer
-  //! select filament in case of MMU_V2
-  //! if extruder is "?", open menu to let the user select extruder/filament
-  //!
-  //!  For MMU_V2:
-  //! @n T<n> Gcode to extrude at least 38.10 mm at feedrate 19.02 mm/s must follow immediately to load to extruder wheels.
-  //! @n T? Gcode to extrude shouldn't have to follow, load to extruder wheels is done automatically
-  //! @n Tx Same as T?, except nozzle doesn't have to be preheated. Tc must be placed after extruder nozzle is preheated to finish filament load.
-  //! @n Tc Load to nozzle after filament was prepared by Tc and extruder nozzle is already heated.
+  /*!
+  -----------------------------------------------------------------------------------------
+  # T Codes
+  T<extruder nr.> - select extruder in case of multi extruder printer. select filament in case of MMU_V2.
+  #### For MMU_V2:
+  T<n> Gcode to extrude at least 38.10 mm at feedrate 19.02 mm/s must follow immediately to load to extruder wheels.
+  @n T? Gcode to extrude shouldn't have to follow, load to extruder wheels is done automatically
+  @n Tx Same as T?, except nozzle doesn't have to be preheated. Tc must be placed after extruder nozzle is preheated to finish filament load.
+  @n Tc Load to nozzle after filament was prepared by Tc and extruder nozzle is already heated.
+  */
   else if(code_seen('T'))
   {
       int index;
@@ -7895,15 +8700,8 @@ Sigma_Exit:
           else
           {
 #ifdef SNMM
-
-#ifdef LIN_ADVANCE
-              if (mmu_extruder != tmp_extruder)
-                  clear_current_adv_vars(); //Check if the selected extruder is not the active one and reset LIN_ADVANCE variables if so.
-#endif
-
               mmu_extruder = tmp_extruder;
 
-
               _delay(100);
 
               disable_e0();
@@ -7944,7 +8742,7 @@ Sigma_Exit:
 #else //SNMM
               if (tmp_extruder >= EXTRUDERS) {
                   SERIAL_ECHO_START;
-                  SERIAL_ECHOPGM("T");
+                  SERIAL_ECHO('T');
                   SERIAL_PROTOCOLLN((int)tmp_extruder);
                   SERIAL_ECHOLNRPGM(_n("Invalid extruder"));////MSG_INVALID_EXTRUDER
               }
@@ -7974,7 +8772,7 @@ Sigma_Exit:
                       }
                       // Set the new active extruder and position
                       active_extruder = tmp_extruder;
-                      plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+                      plan_set_position_curposXYZE();
                       // Move to the old position if 'F' was in the parameters
                       if (make_move && Stopped == false) {
                           prepare_move();
@@ -7990,214 +8788,321 @@ Sigma_Exit:
           }
       }
   } // end if(code_seen('T')) (end of T codes)
+  /*!
+  #### End of T-Codes
+  */
 
-  //! ----------------------------------------------------------------------------------------------
-
+  /**
+  *---------------------------------------------------------------------------------
+  *# D codes
+  */
   else if (code_seen('D')) // D codes (debug)
   {
     switch((int)code_value())
     {
 
-  //! ### D-1 - Endless loop
-  // -------------------
+    /*!
+    ### D-1 - Endless Loop <a href="https://reprap.org/wiki/G-code#D-1:_Endless_Loop">D-1: Endless Loop</a>
+    */
 	case -1:
 		dcode__1(); break;
 #ifdef DEBUG_DCODES
 
-  //! ### D0 - Reset
-  // -------------- 
+    /*!
+    ### D0 - Reset <a href="https://reprap.org/wiki/G-code#D0:_Reset">D0: Reset</a>
+    #### Usage
+    
+        D0 [ B ]
+    
+    #### Parameters
+    - `B` - Bootloader
+    */
 	case 0:
 		dcode_0(); break;
 
-  //! ### D1 - Clear EEPROM
-  // ------------------
+    /*!
+    *
+    ### D1 - Clear EEPROM and RESET <a href="https://reprap.org/wiki/G-code#D1:_Clear_EEPROM_and_RESET">D1: Clear EEPROM and RESET</a>
+      
+          D1
+      
+    *
+    */
 	case 1:
 		dcode_1(); break;
 
-  //! ### D2 - Read/Write RAM
-  // --------------------
+    /*!
+    ### D2 - Read/Write RAM <a href="https://reprap.org/wiki/G-code#D2:_Read.2FWrite_RAM">D3: Read/Write RAM</a>
+    This command can be used without any additional parameters. It will read the entire RAM.
+    #### Usage
+    
+        D2 [ A | C | X ]
+    
+    #### Parameters
+    - `A` - Address (x0000-x1fff)
+    - `C` - Count (1-8192)
+    - `X` - Data
+
+	#### Notes
+	- The hex address needs to be lowercase without the 0 before the x
+	- Count is decimal 
+	- The hex data needs to be lowercase
+	
+    */
 	case 2:
 		dcode_2(); break;
 #endif //DEBUG_DCODES
-#ifdef DEBUG_DCODE3
+#if defined DEBUG_DCODE3 || defined DEBUG_DCODES
 
-  //! ### D3 - Read/Write EEPROM
-  // -----------------------
+    /*!
+    ### D3 - Read/Write EEPROM <a href="https://reprap.org/wiki/G-code#D3:_Read.2FWrite_EEPROM">D3: Read/Write EEPROM</a>
+    This command can be used without any additional parameters. It will read the entire eeprom.
+    #### Usage
+    
+        D3 [ A | C | X ]
+    
+    #### Parameters
+    - `A` - Address (x0000-x0fff)
+    - `C` - Count (1-4096)
+    - `X` - Data (hex)
+	
+	#### Notes
+	- The hex address needs to be lowercase without the 0 before the x
+	- Count is decimal 
+	- The hex data needs to be lowercase
+	
+    */
 	case 3:
 		dcode_3(); break;
 #endif //DEBUG_DCODE3
 #ifdef DEBUG_DCODES
 
-  //! ### D4 - Read/Write PIN
-  // ---------------------
+    /*!
+    
+    ### D4 - Read/Write PIN <a href="https://reprap.org/wiki/G-code#D4:_Read.2FWrite_PIN">D4: Read/Write PIN</a>
+    To read the digital value of a pin you need only to define the pin number.
+    #### Usage
+    
+        D4 [ P | F | V ]
+    
+    #### Parameters
+    - `P` - Pin (0-255)
+    - `F` - Function in/out (0/1)
+    - `V` - Value (0/1)
+    */
 	case 4:
 		dcode_4(); break;
 #endif //DEBUG_DCODES
-#ifdef DEBUG_DCODE5
+#if defined DEBUG_DCODE5 || defined DEBUG_DCODES
 
-  //! ### D5 - Read/Write FLASH
-  // ------------------------
+    /*!
+    ### D5 - Read/Write FLASH <a href="https://reprap.org/wiki/G-code#D5:_Read.2FWrite_FLASH">D5: Read/Write Flash</a>
+    This command can be used without any additional parameters. It will read the 1kb FLASH.
+    #### Usage
+    
+        D5 [ A | C | X | E ]
+    
+    #### Parameters
+    - `A` - Address (x00000-x3ffff)
+    - `C` - Count (1-8192)
+    - `X` - Data (hex)
+    - `E` - Erase
+ 	
+	#### Notes
+	- The hex address needs to be lowercase without the 0 before the x
+	- Count is decimal 
+	- The hex data needs to be lowercase
+	
+   */
 	case 5:
 		dcode_5(); break;
-		break;
 #endif //DEBUG_DCODE5
 #ifdef DEBUG_DCODES
 
-  //! ### D6 - Read/Write external FLASH
-  // ---------------------------------------
+    /*!
+    ### D6 - Read/Write external FLASH <a href="https://reprap.org/wiki/G-code#D6:_Read.2FWrite_external_FLASH">D6: Read/Write external Flash</a>
+    Reserved
+    */
 	case 6:
 		dcode_6(); break;
 
-  //! ### D7 - Read/Write Bootloader
-  // -------------------------------
+    /*!
+    ### D7 - Read/Write Bootloader <a href="https://reprap.org/wiki/G-code#D7:_Read.2FWrite_Bootloader">D7: Read/Write Bootloader</a>
+    Reserved
+    */
 	case 7:
 		dcode_7(); break;
 
-  //! ### D8 - Read/Write PINDA
-  // ---------------------------
+    /*!
+    ### D8 - Read/Write PINDA <a href="https://reprap.org/wiki/G-code#D8:_Read.2FWrite_PINDA">D8: Read/Write PINDA</a>
+    #### Usage
+    
+        D8 [ ? | ! | P | Z ]
+    
+    #### Parameters
+    - `?` - Read PINDA temperature shift values
+    - `!` - Reset PINDA temperature shift values to default
+    - `P` - Pinda temperature [C]
+    - `Z` - Z Offset [mm]
+    */
 	case 8:
 		dcode_8(); break;
 
-  // ### D9 - Read/Write ADC
-  // ------------------------
+    /*!
+    ### D9 - Read ADC <a href="https://reprap.org/wiki/G-code#D9:_Read.2FWrite_ADC">D9: Read ADC</a>
+    #### Usage
+    
+        D9 [ I | V ]
+    
+    #### Parameters
+    - `I` - ADC channel index 
+        - `0` - Heater 0 temperature
+        - `1` - Heater 1 temperature
+        - `2` - Bed temperature
+        - `3` - PINDA temperature
+        - `4` - PWR voltage
+        - `5` - Ambient temperature
+        - `6` - BED voltage
+    - `V` Value to be written as simulated
+    */
 	case 9:
 		dcode_9(); break;
 
-  //! ### D10 - XYZ calibration = OK
-  // ------------------------------
+    /*!
+    ### D10 - Set XYZ calibration = OK <a href="https://reprap.org/wiki/G-code#D10:_Set_XYZ_calibration_.3D_OK">D10: Set XYZ calibration = OK</a>
+    */
 	case 10:
 		dcode_10(); break;
+
+    /*!
+    ### D12 - Time <a href="https://reprap.org/wiki/G-code#D12:_Time">D12: Time</a>
+    Writes the current time in the log file.
+    */
+
 #endif //DEBUG_DCODES
 #ifdef HEATBED_ANALYSIS
 
-  //! ### D80 - Bed check
-  // ---------------------
-  /*! 
-    - `E` - dimension x
-    - `F` - dimention y
-    - `G` - points_x
-    - `H` - points_y
-    - `I` - offset_x
-    - `J` - offset_y
+    /*!
+    ### D80 - Bed check <a href="https://reprap.org/wiki/G-code#D80:_Bed_check">D80: Bed check</a>
+    This command will log data to SD card file "mesh.txt".
+    #### Usage
+    
+        D80 [ E | F | G | H | I | J ]
+    
+    #### Parameters
+    - `E` - Dimension X (default 40)
+    - `F` - Dimention Y (default 40)
+    - `G` - Points X (default 40)
+    - `H` - Points Y (default 40)
+    - `I` - Offset X (default 74)
+    - `J` - Offset Y (default 34)
   */
 	case 80:
-	{
-		float dimension_x = 40;
-		float dimension_y = 40;
-		int points_x = 40;
-		int points_y = 40;
-		float offset_x = 74;
-		float offset_y = 33;
-
-		if (code_seen('E')) dimension_x = code_value();
-		if (code_seen('F')) dimension_y = code_value();
-		if (code_seen('G')) {points_x = code_value(); }
-		if (code_seen('H')) {points_y = code_value(); }
-		if (code_seen('I')) {offset_x = code_value(); }
-		if (code_seen('J')) {offset_y = code_value(); }
-		printf_P(PSTR("DIM X: %f\n"), dimension_x);
-		printf_P(PSTR("DIM Y: %f\n"), dimension_y);
-		printf_P(PSTR("POINTS X: %d\n"), points_x);
-		printf_P(PSTR("POINTS Y: %d\n"), points_y);
-		printf_P(PSTR("OFFSET X: %f\n"), offset_x);
-		printf_P(PSTR("OFFSET Y: %f\n"), offset_y);
- 		bed_check(dimension_x,dimension_y,points_x,points_y,offset_x,offset_y);
-	}break;
-
-  //! ### D81 - Bed analysis
-  // -----------------------------
-  /*! 
-    - `E` - dimension x
-    - `F` - dimention y
-    - `G` - points_x
-    - `H` - points_y
-    - `I` - offset_x
-    - `J` - offset_y
+		dcode_80(); break;
+
+    /*!
+    ### D81 - Bed analysis <a href="https://reprap.org/wiki/G-code#D81:_Bed_analysis">D80: Bed analysis</a>
+    This command will log data to SD card file "wldsd.txt".
+    #### Usage
+    
+        D81 [ E | F | G | H | I | J ]
+    
+    #### Parameters
+    - `E` - Dimension X (default 40)
+    - `F` - Dimention Y (default 40)
+    - `G` - Points X (default 40)
+    - `H` - Points Y (default 40)
+    - `I` - Offset X (default 74)
+    - `J` - Offset Y (default 34)
   */
 	case 81:
-	{
-		float dimension_x = 40;
-		float dimension_y = 40;
-		int points_x = 40;
-		int points_y = 40;
-		float offset_x = 74;
-		float offset_y = 33;
-
-		if (code_seen('E')) dimension_x = code_value();
-		if (code_seen('F')) dimension_y = code_value();
-		if (code_seen("G")) { strchr_pointer+=1; points_x = code_value(); }
-		if (code_seen("H")) { strchr_pointer+=1; points_y = code_value(); }
-		if (code_seen("I")) { strchr_pointer+=1; offset_x = code_value(); }
-		if (code_seen("J")) { strchr_pointer+=1; offset_y = code_value(); }
-		
-		bed_analysis(dimension_x,dimension_y,points_x,points_y,offset_x,offset_y);
-		
-	} break;
+		dcode_81(); break;
 	
 #endif //HEATBED_ANALYSIS
 #ifdef DEBUG_DCODES
 
-  //! ### D106 print measured fan speed for different pwm values
-  // --------------------------------------------------------------
+    /*!
+    ### D106 - Print measured fan speed for different pwm values <a href="https://reprap.org/wiki/G-code#D106:_Print_measured_fan_speed_for_different_pwm_values">D106: Print measured fan speed for different pwm values</a>
+    */
 	case 106:
-	{
-		for (int i = 255; i > 0; i = i - 5) {
-			fanSpeed = i;
-			//delay_keep_alive(2000);
-			for (int j = 0; j < 100; j++) {
-				delay_keep_alive(100);
-
-			}
-			printf_P(_N("%d: %d\n"), i, fan_speed[1]);
-		}
-	}break;
+		dcode_106(); break;
 
 #ifdef TMC2130
-  //! ### D2130 - TMC2130 Trinamic stepper controller
-  // ---------------------------
-
-  
-  /*!
-  
-  
-        D2130<axis><command>[subcommand][value]
-
-   - <command>:
-       - '0' current off
-       - '1' current on
-       - '+' single step
-       - * value sereval steps
-       - '-' dtto oposite direction
-       - '?' read register
-       - * "mres"
-       - * "step"
-       - * "mscnt"
-       - * "mscuract"
-       - * "wave"
-       - '!' set register
-       - * "mres"
-       - * "step"
-       - * "wave"
-       - '@' home calibrate axis
-
-    Example:
-
-    D2130E?wave ...        print extruder microstep linearity compensation curve
-
-    D2130E!wave0 ...       disable extruder linearity compensation curve, (sine curve is used)
-
-    D2130E!wave220 ...    (sin(x))^1.1 extruder microstep compensation curve used
-  */
-
-
+    /*!
+    ### D2130 - Trinamic stepper controller <a href="https://reprap.org/wiki/G-code#D2130:_Trinamic_stepper_controller">D2130: Trinamic stepper controller</a>
+    @todo Please review by owner of the code. RepRap Wiki Gcode needs to be updated after review of owner as well.
+    
+    #### Usage
+    
+        D2130 [ Axis | Command | Subcommand | Value ]
+    
+    #### Parameters
+    - Axis
+      - `X` - X stepper driver
+      - `Y` - Y stepper driver
+      - `Z` - Z stepper driver
+      - `E` - Extruder stepper driver
+    - Commands
+      - `0`   - Current off
+      - `1`   - Current on
+      - `+`   - Single step
+      - `-`   - Single step oposite direction
+      - `NNN` - Value sereval steps
+      - `?`   - Read register
+      - Subcommands for read register
+        - `mres`     - Micro step resolution. More information in datasheet '5.5.2 CHOPCONF – Chopper Configuration'
+        - `step`     - Step
+        - `mscnt`    - Microstep counter. More information in datasheet '5.5 Motor Driver Registers'
+        - `mscuract` - Actual microstep current for motor. More information in datasheet '5.5 Motor Driver Registers'
+        - `wave`     - Microstep linearity compensation curve
+      - `!`   - Set register
+      - Subcommands for set register
+        - `mres`     - Micro step resolution
+        - `step`     - Step
+        - `wave`     - Microstep linearity compensation curve
+        - Values for set register
+          - `0, 180 --> 250` - Off
+          - `0.9 --> 1.25`   - Valid values (recommended is 1.1)
+      - `@`   - Home calibrate axis
+    
+    Examples:
+      
+          D2130E?wave
+      
+      Print extruder microstep linearity compensation curve
+      
+          D2130E!wave0
+      
+      Disable extruder linearity compensation curve, (sine curve is used)
+      
+          D2130E!wave220
+      
+      (sin(x))^1.1 extruder microstep compensation curve used
+    
+    Notes:
+      For more information see https://www.trinamic.com/fileadmin/assets/Products/ICs_Documents/TMC2130_datasheet.pdf
+    *
+	*/
 	case 2130:
 		dcode_2130(); break;
 #endif //TMC2130
 
 #if (defined (FILAMENT_SENSOR) && defined(PAT9125))
 
-        //! ### D9125 - FILAMENT_SENSOR
-        // ---------------------------------
+    /*!
+    ### D9125 - PAT9125 filament sensor <a href="https://reprap.org/wiki/G-code#D9:_Read.2FWrite_ADC">D9125: PAT9125 filament sensor</a>
+    #### Usage
+    
+        D9125 [ ? | ! | R | X | Y | L ]
+    
+    #### Parameters
+    - `?` - Print values
+    - `!` - Print values
+    - `R` - Resolution. Not active in code
+    - `X` - X values
+    - `Y` - Y values
+    - `L` - Activate filament sensor log
+    */
 	case 9125:
 		dcode_9125(); break;
 #endif //FILAMENT_SENSOR
@@ -8217,10 +9122,12 @@ Sigma_Exit:
   ClearToSend();
 }
 
+/*!
+#### End of D-Codes
+*/
 
-
-  /** @defgroup GCodes G-Code List 
-  */
+/** @defgroup GCodes G-Code List 
+*/
 
 // ---------------------------------------------------
 
@@ -8285,7 +9192,7 @@ void get_coordinates()
   for(int8_t i=0; i < NUM_AXIS; i++) {
     if(code_seen(axis_codes[i]))
     {
-      bool relative = axis_relative_modes[i];
+      bool relative = axis_relative_modes & (1 << i);
       destination[i] = (float)code_value();
       if (i == E_AXIS) {
         float emult = extruder_multiplier[active_extruder];
@@ -8415,13 +9322,13 @@ void prepare_move()
 
   // Do not use feedmultiply for E or Z only moves
   if( (current_position[X_AXIS] == destination [X_AXIS]) && (current_position[Y_AXIS] == destination [Y_AXIS])) {
-      plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder);
+      plan_buffer_line_destinationXYZE(feedrate/60);
   }
   else {
 #ifdef MESH_BED_LEVELING
     mesh_plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply*(1./(60.f*100.f)), active_extruder);
 #else
-     plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate*feedmultiply*(1./(60.f*100.f)), active_extruder);
+     plan_buffer_line_destinationXYZE(feedrate*feedmultiply*(1./(60.f*100.f)));
 #endif
   }
 
@@ -8555,23 +9462,96 @@ static void handleSafetyTimer()
 }
 #endif //SAFETYTIMER
 
+#ifdef IR_SENSOR_ANALOG
+#define FS_CHECK_COUNT 16
+/// Switching mechanism of the fsensor type.
+/// Called from 2 spots which have a very similar behavior
+/// 1: ClFsensorPCB::_Old -> ClFsensorPCB::_Rev04 and print _i("FS v0.4 or newer")
+/// 2: ClFsensorPCB::_Rev04 -> oFsensorPCB=ClFsensorPCB::_Old and print _i("FS v0.3 or older")
+void manage_inactivity_IR_ANALOG_Check(uint16_t &nFSCheckCount, ClFsensorPCB isVersion, ClFsensorPCB switchTo, const char *statusLineTxt_P) {
+    bool bTemp = (!CHECK_ALL_HEATERS);
+    bTemp = bTemp && (menu_menu == lcd_status_screen);
+    bTemp = bTemp && ((oFsensorPCB == isVersion) || (oFsensorPCB == ClFsensorPCB::_Undef));
+    bTemp = bTemp && fsensor_enabled;
+    if (bTemp) {
+        nFSCheckCount++;
+        if (nFSCheckCount > FS_CHECK_COUNT) {
+            nFSCheckCount = 0; // not necessary
+            oFsensorPCB = switchTo;
+            eeprom_update_byte((uint8_t *)EEPROM_FSENSOR_PCB, (uint8_t)oFsensorPCB);
+            printf_IRSensorAnalogBoardChange();
+            lcd_setstatuspgm(statusLineTxt_P);
+        }
+    } else {
+        nFSCheckCount = 0;
+    }
+}
+#endif
+
 void manage_inactivity(bool ignore_stepper_queue/*=false*/) //default argument set in Marlin.h
 {
-bool bInhibitFlag;
 #ifdef FILAMENT_SENSOR
+bool bInhibitFlag;
+#ifdef IR_SENSOR_ANALOG
+static uint16_t nFSCheckCount=0;
+#endif // IR_SENSOR_ANALOG
+
 	if (mmu_enabled == false)
 	{
 //-//		if (mcode_in_progress != 600) //M600 not in progress
 #ifdef PAT9125
-          bInhibitFlag=(menu_menu==lcd_menu_extruder_info); // Support::ExtruderInfo menu active
+		bInhibitFlag=(menu_menu==lcd_menu_extruder_info); // Support::ExtruderInfo menu active
 #endif // PAT9125
 #ifdef IR_SENSOR
-          bInhibitFlag=(menu_menu==lcd_menu_show_sensors_state); // Support::SensorInfo menu active
+		bInhibitFlag=(menu_menu==lcd_menu_show_sensors_state); // Support::SensorInfo menu active
+#ifdef IR_SENSOR_ANALOG
+		bInhibitFlag=bInhibitFlag||bMenuFSDetect; // Settings::HWsetup::FSdetect menu active
+#endif // IR_SENSOR_ANALOG
 #endif // IR_SENSOR
-          if ((mcode_in_progress != 600) && (eFilamentAction != FilamentAction::AutoLoad) && (!bInhibitFlag)) //M600 not in progress, preHeat @ autoLoad menu not active, Support::ExtruderInfo/SensorInfo menu not active
+		if ((mcode_in_progress != 600) && (eFilamentAction != FilamentAction::AutoLoad) && (!bInhibitFlag)) //M600 not in progress, preHeat @ autoLoad menu not active, Support::ExtruderInfo/SensorInfo menu not active
 		{
 			if (!moves_planned() && !IS_SD_PRINTING && !is_usb_printing && (lcd_commands_type != LcdCommands::Layer1Cal) && ! eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE))
 			{
+#ifdef IR_SENSOR_ANALOG
+				static uint16_t minVolt = Voltage2Raw(6.F), maxVolt = 0;
+				// detect min-max, some long term sliding window for filtration may be added
+				// avoiding floating point operations, thus computing in raw
+				if( current_voltage_raw_IR > maxVolt )maxVolt = current_voltage_raw_IR;
+				if( current_voltage_raw_IR < minVolt )minVolt = current_voltage_raw_IR;
+				
+#if 0 // Start: IR Sensor debug info
+				{ // debug print
+					static uint16_t lastVolt = ~0U;
+					if( current_voltage_raw_IR != lastVolt ){
+						printf_P(PSTR("fs volt=%4.2fV (min=%4.2f max=%4.2f)\n"), Raw2Voltage(current_voltage_raw_IR), Raw2Voltage(minVolt), Raw2Voltage(maxVolt) );
+						lastVolt = current_voltage_raw_IR;
+					}
+				}
+#endif // End: IR Sensor debug info
+				//! The trouble is, I can hold the filament in the hole in such a way, that it creates the exact voltage
+				//! to be detected as the new fsensor
+				//! We can either fake it by extending the detection window to a looooong time
+				//! or do some other countermeasures
+				
+				//! what we want to detect:
+				//! if minvolt gets below ~0.3V, it means there is an old fsensor
+				//! if maxvolt gets above 4.6V, it means we either have an old fsensor or broken cables/fsensor
+				//! So I'm waiting for a situation, when minVolt gets to range <0, 1.5> and maxVolt gets into range <3.0, 5>
+				//! If and only if minVolt is in range <0.3, 1.5> and maxVolt is in range <3.0, 4.6>, I'm considering a situation with the new fsensor
+				if( minVolt >= IRsensor_Ldiode_TRESHOLD && minVolt <= IRsensor_Lmax_TRESHOLD 
+				 && maxVolt >= IRsensor_Hmin_TRESHOLD && maxVolt <= IRsensor_Hopen_TRESHOLD
+				){
+					manage_inactivity_IR_ANALOG_Check(nFSCheckCount, ClFsensorPCB::_Old, ClFsensorPCB::_Rev04, _i("FS v0.4 or newer") ); ////c=18
+				} 
+				//! If and only if minVolt is in range <0.0, 0.3> and maxVolt is in range  <4.6, 5.0V>, I'm considering a situation with the old fsensor
+				//! Note, we are not relying on one voltage here - getting just +5V can mean an old fsensor or a broken new sensor - that's why
+				//! we need to have both voltages detected correctly to allow switching back to the old fsensor.
+				else if( minVolt < IRsensor_Ldiode_TRESHOLD 
+				 && maxVolt > IRsensor_Hopen_TRESHOLD && maxVolt <= IRsensor_VMax_TRESHOLD
+				){
+					manage_inactivity_IR_ANALOG_Check(nFSCheckCount, ClFsensorPCB::_Rev04, oFsensorPCB=ClFsensorPCB::_Old, _i("FS v0.3 or older")); ////c=18
+				}
+#endif // IR_SENSOR_ANALOG
 				if (fsensor_check_autoload())
 				{
 #ifdef PAT9125
@@ -8580,7 +9560,7 @@ bool bInhibitFlag;
 //-//					if (degHotend0() > EXTRUDE_MINTEMP)
 if(0)
 					{
-            Sound_MakeCustom(50,1000,false);
+						Sound_MakeCustom(50,1000,false);
 						loading_flag = true;
 						enquecommand_front_P((PSTR("M701")));
 					}
@@ -8591,20 +9571,17 @@ if(0)
 						show_preheat_nozzle_warning();
 						lcd_update_enable(true);
 */
-                              eFilamentAction=FilamentAction::AutoLoad;
-                              bFilamentFirstRun=false;
-                              if(target_temperature[0]>=EXTRUDE_MINTEMP)
-                              {
-                                   bFilamentPreheatState=true;
-//                                   mFilamentItem(target_temperature[0],target_temperature_bed);
-                                   menu_submenu(mFilamentItemForce);
-                              }
-                              else
-                              {
-                                   menu_submenu(lcd_generic_preheat_menu);
-                                   lcd_timeoutToStatus.start();
-                              }
-                         }
+						eFilamentAction=FilamentAction::AutoLoad;
+						bFilamentFirstRun=false;
+						if(target_temperature[0]>=EXTRUDE_MINTEMP){
+							bFilamentPreheatState=true;
+//							mFilamentItem(target_temperature[0],target_temperature_bed);
+							menu_submenu(mFilamentItemForce);
+						} else {
+							menu_submenu(lcd_generic_preheat_menu);
+							lcd_timeoutToStatus.start();
+						}
+					}
 				}
 			}
 			else
@@ -8612,7 +9589,8 @@ if(0)
 #ifdef PAT9125
 				fsensor_autoload_check_stop();
 #endif //PAT9125
-				fsensor_update();
+                if (fsensor_enabled && !saved_printing)
+                    fsensor_update();
 			}
 		}
 	}
@@ -8717,7 +9695,7 @@ void kill(const char *full_screen_message, unsigned char id)
   disable_x();
 //  SERIAL_ECHOLNPGM("kill - disable Y");
   disable_y();
-  disable_z();
+  poweroff_z();
   disable_e0();
   disable_e1();
   disable_e2();
@@ -8777,6 +9755,24 @@ void Stop()
 
 bool IsStopped() { return Stopped; };
 
+void finishAndDisableSteppers()
+{
+  st_synchronize();
+  disable_x();
+  disable_y();
+  disable_z();
+  disable_e0();
+  disable_e1();
+  disable_e2();
+
+#ifndef LA_NOCOMPAT
+  // Steppers are disabled both when a print is stopped and also via M84 (which is additionally
+  // checked-for to indicate a complete file), so abuse this function to reset the LA detection
+  // state for the next print.
+  la10c_reset();
+#endif
+}
+
 #ifdef FAST_PWM_FAN
 void setPwmFrequency(uint8_t pin, int val)
 {
@@ -8954,6 +9950,7 @@ static void wait_for_heater(long codenum, uint8_t extruder) {
 	residencyStart = -1;
 	/* continue to loop until we have reached the target temp
 	_and_ until TEMP_RESIDENCY_TIME hasn't passed since we reached it */
+    cancel_heatup = false;
 	while ((!cancel_heatup) && ((residencyStart == -1) ||
 		(residencyStart >= 0 && (((unsigned int)(_millis() - residencyStart)) < (TEMP_RESIDENCY_TIME * 1000UL))))) {
 #else
@@ -8976,7 +9973,7 @@ static void wait_for_heater(long codenum, uint8_t extruder) {
 				}
 				else
 				{
-					SERIAL_PROTOCOLLN("?");
+					SERIAL_PROTOCOLLN('?');
 				}
 			}
 #else
@@ -9107,16 +10104,16 @@ void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_poi
 	card.openFile(filename_wldsd, false);
 
 	/*destination[Z_AXIS] = mesh_home_z_search;
-	//plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
+	//plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE);
 
-	plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
+	plan_buffer_line_destinationXYZE(Z_LIFT_FEEDRATE);
 	for(int8_t i=0; i < NUM_AXIS; i++) {
 		current_position[i] = destination[i];
 	}
 	st_synchronize();
 	*/
 		destination[Z_AXIS] = measure_z_height;
-		plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
+		plan_buffer_line_destinationXYZE(Z_LIFT_FEEDRATE);
 		for(int8_t i=0; i < NUM_AXIS; i++) {
 			current_position[i] = destination[i];
 		}
@@ -9141,9 +10138,9 @@ void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_poi
 		if (iy & 1) ix = (x_points_num - 1) - ix; // Zig zag
 		float z0 = 0.f;
 		/*destination[Z_AXIS] = mesh_home_z_search;
-		//plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
+		//plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE);
 
-		plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
+		plan_buffer_line_destinationXYZE(Z_LIFT_FEEDRATE);
 		for(int8_t i=0; i < NUM_AXIS; i++) {
 			current_position[i] = destination[i];
 		}
@@ -9156,8 +10153,8 @@ void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_poi
 		destination[X_AXIS] = ix * (x_dimension / (x_points_num - 1)) + shift_x;
 		destination[Y_AXIS] = iy * (y_dimension / (y_points_num - 1)) + shift_y;
 
-        mesh_plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], XY_AXIS_FEEDRATE/6, active_extruder);
-        set_current_to_destination();
+		mesh_plan_buffer_line_destinationXYZE(XY_AXIS_FEEDRATE/6);
+		set_current_to_destination();
 		st_synchronize();
 
 	//	printf_P(PSTR("X = %f; Y= %f \n"), current_position[X_AXIS], current_position[Y_AXIS]);
@@ -9510,7 +10507,11 @@ float temp_comp_interpolation(float inp_temperature) {
 		if (i>0) EEPROM_read_B(EEPROM_PROBE_TEMP_SHIFT + (i-1) * 2, &shift[i]); //read shift in steps from EEPROM
 		temp_C[i] = 50 + i * 10; //temperature in C
 #ifdef PINDA_THERMISTOR
-		temp_C[i] = 35 + i * 5; //temperature in C
+		constexpr int start_compensating_temp = 35;
+		temp_C[i] = start_compensating_temp + i * 5; //temperature in degrees C
+#ifdef DETECT_SUPERPINDA
+		static_assert(start_compensating_temp >= PINDA_MINTEMP, "Temperature compensation start point is lower than PINDA_MINTEMP.");
+#endif //DETECT_SUPERPINDA
 #else
 		temp_C[i] = 50 + i * 10; //temperature in C
 #endif
@@ -9563,7 +10564,7 @@ float temp_comp_interpolation(float inp_temperature) {
 #ifdef PINDA_THERMISTOR
 float temp_compensation_pinda_thermistor_offset(float temperature_pinda)
 {
-	if (!temp_cal_active) return 0;
+	if (!eeprom_read_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE)) return 0;
 	if (!calibration_status_pinda()) return 0;
 	return temp_comp_interpolation(temperature_pinda) / cs.axis_steps_per_unit[Z_AXIS];
 }
@@ -9577,19 +10578,15 @@ void long_pause() //long pause print
     // Stop heaters
     setAllTargetHotends(0);
 
-	//retract
-	current_position[E_AXIS] -= default_retraction;
-	plan_buffer_line_curposXYZE(400, active_extruder);
-
 	//lift z
 	current_position[Z_AXIS] += Z_PAUSE_LIFT;
 	if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
-	plan_buffer_line_curposXYZE(15, active_extruder);
+	plan_buffer_line_curposXYZE(15);
 
 	//Move XY to side
 	current_position[X_AXIS] = X_PAUSE_POS;
 	current_position[Y_AXIS] = Y_PAUSE_POS;
-	plan_buffer_line_curposXYZE(50, active_extruder);
+	plan_buffer_line_curposXYZE(50);
 
 	// Turn off the print fan
 	fanSpeed = 0;
@@ -9607,6 +10604,16 @@ void serialecho_temperatures() {
 }
 
 #ifdef UVLO_SUPPORT
+void uvlo_drain_reset()
+{
+    // burn all that residual power
+    wdt_enable(WDTO_1S);
+    WRITE(BEEPER,HIGH);
+    lcd_clear();
+    lcd_puts_at_P(0, 1, MSG_POWERPANIC_DETECTED);
+    while(1);
+}
+
 
 void uvlo_()
 {
@@ -9628,16 +10635,11 @@ void uvlo_()
 	tmc2130_set_current_r(E_AXIS, 20);
 #endif //TMC2130
 
-
-    // Indicate that the interrupt has been triggered.
-	//	SERIAL_ECHOLNPGM("UVLO");
-
-    // Read out the current Z motor microstep counter. This will be later used
-    // for reaching the zero full step before powering off.
-    uint16_t z_microsteps = 0;
-#ifdef TMC2130
-	z_microsteps = tmc2130_rd_MSCNT(Z_TMC2130_CS);
-#endif //TMC2130
+    // Stop all heaters
+    uint8_t saved_target_temperature_bed = target_temperature_bed;
+    uint16_t saved_target_temperature_ext = target_temperature[active_extruder];
+    setAllTargetHotends(0);
+    setTargetBed(0);
 
     // Calculate the file position, from which to resume this print.
     long sd_position = sdpos_atomic; //atomic sd position of last command added in queue
@@ -9651,7 +10653,7 @@ void uvlo_()
 
     // save the global state at planning time
     uint16_t feedrate_bckp;
-    if (blocks_queued())
+    if (current_block)
     {
         memcpy(saved_target, current_block->gcode_target, sizeof(saved_target));
         feedrate_bckp = current_block->gcode_feedrate;
@@ -9662,75 +10664,81 @@ void uvlo_()
         feedrate_bckp = feedrate;
     }
 
+    // From this point on and up to the print recovery, Z should not move during X/Y travels and
+    // should be controlled precisely. Reset the MBL status before planner_abort_hard in order to
+    // get the physical Z for further manipulation.
+    bool mbl_was_active = mbl.active;
+    mbl.active = false;
+
     // After this call, the planner queue is emptied and the current_position is set to a current logical coordinate.
     // The logical coordinate will likely differ from the machine coordinate if the skew calibration and mesh bed leveling
     // are in action.
     planner_abort_hard();
 
-	// Store the current extruder position.
-	eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E), st_get_position_mm(E_AXIS));
-	eeprom_update_byte((uint8_t*)EEPROM_UVLO_E_ABS, axis_relative_modes[3]?0:1);
-    // Clean the input command queue.
+    // Store the print logical Z position, which we need to recover (a slight error here would be
+    // recovered on the next Gcode instruction, while a physical location error would not)
+    float logical_z = current_position[Z_AXIS];
+    if(mbl_was_active) logical_z -= mbl.get_z(st_get_position_mm(X_AXIS), st_get_position_mm(Y_AXIS));
+    eeprom_update_float((float*)EEPROM_UVLO_CURRENT_POSITION_Z, logical_z);
+
+    // Store the print E position before we lose track
+	eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E), current_position[E_AXIS]);
+	eeprom_update_byte((uint8_t*)EEPROM_UVLO_E_ABS, (axis_relative_modes & E_AXIS_MASK)?0:1);
+
+    // Clean the input command queue, inhibit serial processing using saved_printing
     cmdqueue_reset();
     card.sdprinting = false;
-//    card.closefile();    
-    // Enable stepper driver interrupt to move Z axis.
-    // This should be fine as the planner and command queues are empty and the SD card printing is disabled.
-    //FIXME one may want to disable serial lines at this point of time to avoid interfering with the command queue,
-    // though it should not happen that the command queue is touched as the plan_buffer_line always succeed without blocking.
-		sei();
-		plan_buffer_line(
-      current_position[X_AXIS], 
-      current_position[Y_AXIS], 
-      current_position[Z_AXIS], 
-      current_position[E_AXIS] - default_retraction,
-      95, active_extruder);
-    
-        st_synchronize();
-        disable_e0();
-    
-    plan_buffer_line(
-      current_position[X_AXIS],
-      current_position[Y_AXIS],
-      current_position[Z_AXIS] + UVLO_Z_AXIS_SHIFT + float((1024 - z_microsteps + 7) >> 4) / cs.axis_steps_per_unit[Z_AXIS],
-      current_position[E_AXIS] - default_retraction,
-      40, active_extruder);
+    saved_printing = true;
+
+    // Enable stepper driver interrupt to move Z axis. This should be fine as the planner and
+    // command queues are empty, SD card printing is disabled, usb is inhibited.
+    sei();
+
+    // Retract
+    current_position[E_AXIS] -= default_retraction;
+    plan_buffer_line_curposXYZE(95);
     st_synchronize();
     disable_e0();
 
-    plan_buffer_line(
-      current_position[X_AXIS],
-      current_position[Y_AXIS],
-      current_position[Z_AXIS] + UVLO_Z_AXIS_SHIFT + float((1024 - z_microsteps + 7) >> 4) / cs.axis_steps_per_unit[Z_AXIS],
-      current_position[E_AXIS] - default_retraction,
-      40, active_extruder);
+    // Read out the current Z motor microstep counter to move the axis up towards
+    // a full step before powering off. NOTE: we need to ensure to schedule more
+    // than "dropsegments" steps in order to move (this is always the case here
+    // due to UVLO_Z_AXIS_SHIFT being used)
+    uint16_t z_res = tmc2130_get_res(Z_AXIS);
+    uint16_t z_microsteps = tmc2130_rd_MSCNT(Z_AXIS);
+    current_position[Z_AXIS] += float(1024 - z_microsteps)
+                                / (z_res * cs.axis_steps_per_unit[Z_AXIS])
+                                + UVLO_Z_AXIS_SHIFT;
+    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS]/60);
     st_synchronize();
+    poweroff_z();
 
-    disable_e0();
-    // Move Z up to the next 0th full step.
     // Write the file position.
     eeprom_update_dword((uint32_t*)(EEPROM_FILE_POSITION), sd_position);
+
     // Store the mesh bed leveling offsets. This is 2*7*7=98 bytes, which takes 98*3.4us=333us in worst case.
     for (int8_t mesh_point = 0; mesh_point < MESH_NUM_X_POINTS * MESH_NUM_Y_POINTS; ++ mesh_point) {
       uint8_t ix = mesh_point % MESH_NUM_X_POINTS; // from 0 to MESH_NUM_X_POINTS - 1
       uint8_t iy = mesh_point / MESH_NUM_X_POINTS;
       // Scale the z value to 1u resolution.
-      int16_t v = mbl.active ? int16_t(floor(mbl.z_values[iy][ix] * 1000.f + 0.5f)) : 0;
+      int16_t v = mbl_was_active ? int16_t(floor(mbl.z_values[iy][ix] * 1000.f + 0.5f)) : 0;
       eeprom_update_word((uint16_t*)(EEPROM_UVLO_MESH_BED_LEVELING_FULL +2*mesh_point), *reinterpret_cast<uint16_t*>(&v));
     }
-    // Read out the current Z motor microstep counter. This will be later used
-    // for reaching the zero full step before powering off.
+
+    // Write the _final_ Z position and motor microstep counter (unused).
+    eeprom_update_float((float*)EEPROM_UVLO_TINY_CURRENT_POSITION_Z, current_position[Z_AXIS]);
+    z_microsteps = tmc2130_rd_MSCNT(Z_AXIS);
     eeprom_update_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS), z_microsteps);
-    // Store the current position.
 
+    // Store the current position.
     eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0), current_position[X_AXIS]);
     eeprom_update_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4), current_position[Y_AXIS]);
-    eeprom_update_float((float*)EEPROM_UVLO_CURRENT_POSITION_Z , current_position[Z_AXIS]);
+
     // Store the current feed rate, temperatures, fan speed and extruder multipliers (flow rates)
 	eeprom_update_word((uint16_t*)EEPROM_UVLO_FEEDRATE, feedrate_bckp);
-    EEPROM_save_B(EEPROM_UVLO_FEEDMULTIPLY, &feedmultiply);
-    eeprom_update_byte((uint8_t*)EEPROM_UVLO_TARGET_HOTEND, target_temperature[active_extruder]);
-    eeprom_update_byte((uint8_t*)EEPROM_UVLO_TARGET_BED, target_temperature_bed);
+    eeprom_update_word((uint16_t*)EEPROM_UVLO_FEEDMULTIPLY, feedmultiply);
+    eeprom_update_word((uint16_t*)EEPROM_UVLO_TARGET_HOTEND, saved_target_temperature_ext);
+    eeprom_update_byte((uint8_t*)EEPROM_UVLO_TARGET_BED, saved_target_temperature_bed);
     eeprom_update_byte((uint8_t*)EEPROM_UVLO_FAN_SPEED, fanSpeed);
 	eeprom_update_float((float*)(EEPROM_EXTRUDER_MULTIPLIER_0), extruder_multiplier[0]);
 #if EXTRUDERS > 1
@@ -9740,80 +10748,102 @@ void uvlo_()
 #endif
 #endif
 	eeprom_update_word((uint16_t*)(EEPROM_EXTRUDEMULTIPLY), (uint16_t)extrudemultiply);
+
     // Store the saved target
     eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+0*4), saved_target[X_AXIS]);
     eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4), saved_target[Y_AXIS]);
     eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+2*4), saved_target[Z_AXIS]);
     eeprom_update_float((float*)(EEPROM_UVLO_SAVED_TARGET+3*4), saved_target[E_AXIS]);
 
+#ifdef LIN_ADVANCE
+	eeprom_update_float((float*)(EEPROM_UVLO_LA_K), extruder_advance_K);
+#endif
+
     // Finaly store the "power outage" flag.
 	if(sd_print) eeprom_update_byte((uint8_t*)EEPROM_UVLO, 1);
 
-    st_synchronize();
-    printf_P(_N("stps%d\n"), tmc2130_rd_MSCNT(Z_AXIS));
-    
     // Increment power failure counter
 	eeprom_update_byte((uint8_t*)EEPROM_POWER_COUNT, eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) + 1);
 	eeprom_update_word((uint16_t*)EEPROM_POWER_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT) + 1);
-      printf_P(_N("UVLO - end %d\n"), _millis() - time_start);
 
-#if 0
-    // Move the print head to the side of the print until all the power stored in the power supply capacitors is depleted.
+    printf_P(_N("UVLO - end %d\n"), _millis() - time_start);
+    WRITE(BEEPER,HIGH);
+
+    // All is set: with all the juice left, try to move extruder away to detach the nozzle completely from the print
+    poweron_z();
     current_position[X_AXIS] = (current_position[X_AXIS] < 0.5f * (X_MIN_POS + X_MAX_POS)) ? X_MIN_POS : X_MAX_POS;
-    plan_buffer_line_curposXYZE(500, active_extruder);
+    plan_buffer_line_curposXYZE(500);
     st_synchronize();
-#endif
-wdt_enable(WDTO_500MS);
-WRITE(BEEPER,HIGH);
-while(1)
-     ;
+
+    wdt_enable(WDTO_1S);
+    while(1);
 }
 
 
 void uvlo_tiny()
 {
-uint16_t z_microsteps=0;
+    unsigned long time_start = _millis();
 
-// Conserve power as soon as possible.
-disable_x();
-disable_y();
-disable_e0();
-    
-#ifdef TMC2130
-tmc2130_set_current_h(Z_AXIS, 20);
-tmc2130_set_current_r(Z_AXIS, 20);
-#endif //TMC2130
+    // Conserve power as soon as possible.
+    disable_x();
+    disable_y();
+    disable_e0();
 
-// Read out the current Z motor microstep counter
 #ifdef TMC2130
-z_microsteps=tmc2130_rd_MSCNT(Z_TMC2130_CS);
+    tmc2130_set_current_h(Z_AXIS, 20);
+    tmc2130_set_current_r(Z_AXIS, 20);
 #endif //TMC2130
-planner_abort_hard();
 
-//save current position only in case, where the printer is moving on Z axis, which is only when EEPROM_UVLO is 1
-//EEPROM_UVLO is 1 after normal uvlo or after recover_print(), when the extruder is moving on Z axis after rehome
-if(eeprom_read_byte((uint8_t*)EEPROM_UVLO)!=2){
-  eeprom_update_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z), current_position[Z_AXIS]);
-  eeprom_update_word((uint16_t*)(EEPROM_UVLO_TINY_Z_MICROSTEPS),z_microsteps);
-}
+    // Stop all heaters
+    setAllTargetHotends(0);
+    setTargetBed(0);
 
-//after multiple power panics current Z axis is unknow
-//in this case we set EEPROM_UVLO_TINY_CURRENT_POSITION_Z to last know position which is EEPROM_UVLO_CURRENT_POSITION_Z 
-if(eeprom_read_float((float*)EEPROM_UVLO_TINY_CURRENT_POSITION_Z) < 0.001f){
-  eeprom_update_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z), eeprom_read_float((float*)EEPROM_UVLO_CURRENT_POSITION_Z));
-  eeprom_update_word((uint16_t*)(EEPROM_UVLO_TINY_Z_MICROSTEPS), eeprom_read_word((uint16_t*)EEPROM_UVLO_Z_MICROSTEPS));
-}
+    // When power is interrupted on the _first_ recovery an attempt can be made to raise the
+    // extruder, causing the Z position to change. Similarly, when recovering, the Z position is
+    // lowered. In such cases we cannot just save Z, we need to re-align the steppers to a fullstep.
+    // Disable MBL (if not already) to work with physical coordinates.
+    mbl.active = false;
+    planner_abort_hard();
+
+    // Allow for small roundoffs to be ignored
+    if(abs(current_position[Z_AXIS] - eeprom_read_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z))) >= 1.f/cs.axis_steps_per_unit[Z_AXIS])
+    {
+        // Clean the input command queue, inhibit serial processing using saved_printing
+        cmdqueue_reset();
+        card.sdprinting = false;
+        saved_printing = true;
+
+        // Enable stepper driver interrupt to move Z axis. This should be fine as the planner and
+        // command queues are empty, SD card printing is disabled, usb is inhibited.
+        sei();
+
+        // The axis was moved: adjust Z as done on a regular UVLO.
+        uint16_t z_res = tmc2130_get_res(Z_AXIS);
+        uint16_t z_microsteps = tmc2130_rd_MSCNT(Z_AXIS);
+        current_position[Z_AXIS] += float(1024 - z_microsteps)
+                                    / (z_res * cs.axis_steps_per_unit[Z_AXIS])
+                                    + UVLO_TINY_Z_AXIS_SHIFT;
+        plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS]/60);
+        st_synchronize();
+        poweroff_z();
+
+        // Update Z position
+        eeprom_update_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z), current_position[Z_AXIS]);
+
+        // Update the _final_ Z motor microstep counter (unused).
+        z_microsteps = tmc2130_rd_MSCNT(Z_AXIS);
+        eeprom_update_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS), z_microsteps);
+    }
+
+    // Update the the "power outage" flag.
+    eeprom_update_byte((uint8_t*)EEPROM_UVLO,2);
 
-// Finaly store the "power outage" flag.
-eeprom_update_byte((uint8_t*)EEPROM_UVLO,2);
+    // Increment power failure counter
+    eeprom_update_byte((uint8_t*)EEPROM_POWER_COUNT, eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) + 1);
+    eeprom_update_word((uint16_t*)EEPROM_POWER_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT) + 1);
 
-// Increment power failure counter
-eeprom_update_byte((uint8_t*)EEPROM_POWER_COUNT, eeprom_read_byte((uint8_t*)EEPROM_POWER_COUNT) + 1);
-eeprom_update_word((uint16_t*)EEPROM_POWER_COUNT_TOT, eeprom_read_word((uint16_t*)EEPROM_POWER_COUNT_TOT) + 1);
-wdt_enable(WDTO_500MS);
-WRITE(BEEPER,HIGH);
-while(1)
-     ;
+    printf_P(_N("UVLO_TINY - end %d\n"), _millis() - time_start);
+    uvlo_drain_reset();
 }
 #endif //UVLO_SUPPORT
 
@@ -9860,12 +10890,19 @@ void setup_uvlo_interrupt() {
 	DDRE &= ~(1 << 4); //input pin
 	PORTE &= ~(1 << 4); //no internal pull-up
 
-						//sensing falling edge
+    // sensing falling edge
 	EICRB |= (1 << 0);
 	EICRB &= ~(1 << 1);
 
-	//enable INT4 interrupt
+	// enable INT4 interrupt
 	EIMSK |= (1 << 4);
+
+    // check if power was lost before we armed the interrupt
+    if(!(PINE & (1 << 4)) && eeprom_read_byte((uint8_t*)EEPROM_UVLO))
+    {
+        SERIAL_ECHOLNPGM("INT4");
+        uvlo_drain_reset();
+    }
 }
 
 ISR(INT4_vect) {
@@ -9880,46 +10917,57 @@ void recover_print(uint8_t automatic) {
 	char cmd[30];
 	lcd_update_enable(true);
 	lcd_update(2);
-  lcd_setstatuspgm(_i("Recovering print    "));////MSG_RECOVERING_PRINT c=20 r=1
+  lcd_setstatuspgm(_i("Recovering print    "));////MSG_RECOVERING_PRINT c=20
 
-      bool bTiny=(eeprom_read_byte((uint8_t*)EEPROM_UVLO)==2);
-      recover_machine_state_after_power_panic(bTiny); //recover position, temperatures and extrude_multipliers
-  // Lift the print head, so one may remove the excess priming material.
-      if(!bTiny&&(current_position[Z_AXIS]<25))
-          enquecommand_P(PSTR("G1 Z25 F800"));
+  // Recover position, temperatures and extrude_multipliers
+  bool mbl_was_active = recover_machine_state_after_power_panic();
 
-  // Home X and Y axes. Homing just X and Y shall not touch the babystep and the world2machine transformation status.
+  // Lift the print head 25mm, first to avoid collisions with oozed material with the print,
+  // and second also so one may remove the excess priming material.
+  if(eeprom_read_byte((uint8_t*)EEPROM_UVLO) == 1)
+  {
+      sprintf_P(cmd, PSTR("G1 Z%.3f F800"), current_position[Z_AXIS] + 25);
+      enquecommand(cmd);
+  }
+
+  // Home X and Y axes. Homing just X and Y shall not touch the babystep and the world2machine
+  // transformation status. G28 will not touch Z when MBL is off.
 	enquecommand_P(PSTR("G28 X Y"));
   // Set the target bed and nozzle temperatures and wait.
-	sprintf_P(cmd, PSTR("M109 S%d"), target_temperature[active_extruder]);
+	sprintf_P(cmd, PSTR("M104 S%d"), target_temperature[active_extruder]);
 	enquecommand(cmd);
 	sprintf_P(cmd, PSTR("M190 S%d"), target_temperature_bed);
 	enquecommand(cmd);
+	sprintf_P(cmd, PSTR("M109 S%d"), target_temperature[active_extruder]);
+	enquecommand(cmd);
+
 	enquecommand_P(PSTR("M83")); //E axis relative mode
-	//enquecommand_P(PSTR("G1 E5 F120")); //Extrude some filament to stabilize pessure
-    // If not automatically recoreverd (long power loss), extrude extra filament to stabilize 
-    if(automatic == 0){ 
-        enquecommand_P(PSTR("G1 E5 F120")); //Extrude some filament to stabilize pessure 
-    } 
-	enquecommand_P(PSTR("G1 E"  STRINGIFY(-default_retraction)" F480"));
+
+    // If not automatically recoreverd (long power loss)
+    if(automatic == 0){
+        //Extrude some filament to stabilize the pressure
+        enquecommand_P(PSTR("G1 E5 F120"));
+        // Retract to be consistent with a short pause
+        sprintf_P(cmd, PSTR("G1 E%-0.3f F2700"), default_retraction);
+        enquecommand(cmd);
+    }
 
 	printf_P(_N("After waiting for temp:\nCurrent pos X_AXIS:%.3f\nCurrent pos Y_AXIS:%.3f\n"), current_position[X_AXIS], current_position[Y_AXIS]);
 
   // Restart the print.
-	restore_print_from_eeprom();
+  restore_print_from_eeprom(mbl_was_active);
   printf_P(_N("Current pos Z_AXIS:%.3f\nCurrent pos E_AXIS:%.3f\n"), current_position[Z_AXIS], current_position[E_AXIS]);
 }
 
-void recover_machine_state_after_power_panic(bool bTiny)
+bool recover_machine_state_after_power_panic()
 {
-  char cmd[30];
-  // 1) Recover the logical cordinates at the time of the power panic.
-  // The logical XY coordinates are needed to recover the machine Z coordinate corrected by the mesh bed leveling.
-  current_position[X_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0));
-  current_position[Y_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4));
-
-  // 2) Restore the mesh bed leveling offsets. This is 2*7*7=98 bytes, which takes 98*3.4us=333us in worst case.
-  mbl.active = false;
+  // 1) Preset some dummy values for the XY axes
+  current_position[X_AXIS] = 0;
+  current_position[Y_AXIS] = 0;
+
+  // 2) Restore the mesh bed leveling offsets, but not the MBL status.
+  // This is 2*7*7=98 bytes, which takes 98*3.4us=333us in worst case.
+  bool mbl_was_active = false;
   for (int8_t mesh_point = 0; mesh_point < MESH_NUM_X_POINTS * MESH_NUM_Y_POINTS; ++ mesh_point) {
     uint8_t ix = mesh_point % MESH_NUM_X_POINTS; // from 0 to MESH_NUM_X_POINTS - 1
     uint8_t iy = mesh_point / MESH_NUM_X_POINTS;
@@ -9927,32 +10975,16 @@ void recover_machine_state_after_power_panic(bool bTiny)
     int16_t v;
     eeprom_read_block(&v, (void*)(EEPROM_UVLO_MESH_BED_LEVELING_FULL+2*mesh_point), 2);
     if (v != 0)
-      mbl.active = true;
+      mbl_was_active = true;
     mbl.z_values[iy][ix] = float(v) * 0.001f;
   }
 
-  // Recover the logical coordinate of the Z axis at the time of the power panic.
+  // Recover the physical coordinate of the Z axis at the time of the power panic.
   // The current position after power panic is moved to the next closest 0th full step.
-  if(bTiny){    
-    current_position[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z))
-     + float((1024 - eeprom_read_word((uint16_t*)(EEPROM_UVLO_TINY_Z_MICROSTEPS)) 
-    + 7) >> 4) / cs.axis_steps_per_unit[Z_AXIS];
-
-    //after multiple power panics the print is slightly in the air so get it little bit down. 
-    //Not exactly sure why is this happening, but it has something to do with bed leveling and world2machine coordinates 
-    current_position[Z_AXIS] -= 0.4*mbl.get_z(current_position[X_AXIS], current_position[Y_AXIS]); 
-  }
-  else{
-    current_position[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z)) + 
-    UVLO_Z_AXIS_SHIFT + float((1024 - eeprom_read_word((uint16_t*)(EEPROM_UVLO_Z_MICROSTEPS)) 
-    + 7) >> 4) / cs.axis_steps_per_unit[Z_AXIS];
-  }
-  if (eeprom_read_byte((uint8_t*)EEPROM_UVLO_E_ABS)) {
-	  current_position[E_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E));
-	  sprintf_P(cmd, PSTR("G92 E"));
-	  dtostrf(current_position[E_AXIS], 6, 3, cmd + strlen(cmd));
-	  enquecommand(cmd);
-  }
+  current_position[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_TINY_CURRENT_POSITION_Z));
+
+  // Recover last E axis position
+  current_position[E_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E));
 
   memcpy(destination, current_position, sizeof(destination));
 
@@ -9968,20 +11000,16 @@ void recover_machine_state_after_power_panic(bool bTiny)
   // The baby stepping value is used to reset the physical Z axis when rehoming the Z axis.
   babystep_load();
 
-  // 5) Set the physical positions from the logical positions using the world2machine transformation and the active bed leveling.
-  plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+  // 5) Set the physical positions from the logical positions using the world2machine transformation
+  // This is only done to inizialize Z/E axes with physical locations, since X/Y are unknown.
+  plan_set_position_curposXYZE();
 
-  // 6) Power up the motors, mark their positions as known.
-  //FIXME Verfiy, whether the X and Y axes should be powered up here, as they will later be re-homed anyway.
-  axis_known_position[X_AXIS] = true; enable_x();
-  axis_known_position[Y_AXIS] = true; enable_y();
-  axis_known_position[Z_AXIS] = true; enable_z();
-  
-  SERIAL_ECHOPGM("recover_machine_state_after_power_panic, initial ");
-  print_physical_coordinates();
+  // 6) Power up the Z motors, mark their positions as known.
+  axis_known_position[Z_AXIS] = true;
+  enable_z();
 
   // 7) Recover the target temperatures.
-  target_temperature[active_extruder] = eeprom_read_byte((uint8_t*)EEPROM_UVLO_TARGET_HOTEND);
+  target_temperature[active_extruder] = eeprom_read_word((uint16_t*)EEPROM_UVLO_TARGET_HOTEND);
   target_temperature_bed = eeprom_read_byte((uint8_t*)EEPROM_UVLO_TARGET_BED);
 
   // 8) Recover extruder multipilers
@@ -9999,9 +11027,15 @@ void recover_machine_state_after_power_panic(bool bTiny)
   saved_target[Y_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+1*4));
   saved_target[Z_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+2*4));
   saved_target[E_AXIS] = eeprom_read_float((float*)(EEPROM_UVLO_SAVED_TARGET+3*4));
+
+#ifdef LIN_ADVANCE
+  extruder_advance_K = eeprom_read_float((float*)EEPROM_UVLO_LA_K);
+#endif
+
+  return mbl_was_active;
 }
 
-void restore_print_from_eeprom() {
+void restore_print_from_eeprom(bool mbl_was_active) {
 	int feedrate_rec;
 	int feedmultiply_rec;
 	uint8_t fan_speed_rec;
@@ -10012,7 +11046,7 @@ void restore_print_from_eeprom() {
 
 	fan_speed_rec = eeprom_read_byte((uint8_t*)EEPROM_UVLO_FAN_SPEED);
     feedrate_rec = eeprom_read_word((uint16_t*)EEPROM_UVLO_FEEDRATE);
-	EEPROM_read_B(EEPROM_UVLO_FEEDMULTIPLY, &feedmultiply_rec);
+    feedmultiply_rec = eeprom_read_word((uint16_t*)EEPROM_UVLO_FEEDMULTIPLY);
 	SERIAL_ECHOPGM("Feedrate:");
 	MYSERIAL.print(feedrate_rec);
 	SERIAL_ECHOPGM(", feedmultiply:");
@@ -10042,30 +11076,38 @@ void restore_print_from_eeprom() {
 	enquecommand(cmd);
 	uint32_t position = eeprom_read_dword((uint32_t*)(EEPROM_FILE_POSITION));
 	SERIAL_ECHOPGM("Position read from eeprom:");
-	MYSERIAL.println(position);	
-  // E axis relative mode.
-	enquecommand_P(PSTR("M83"));
-  // Move to the XY print position in logical coordinates, where the print has been killed.
-	strcpy_P(cmd, PSTR("G1 X")); strcat(cmd, ftostr32(eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0))));
-	strcat_P(cmd, PSTR(" Y"));   strcat(cmd, ftostr32(eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4))));
-	strcat_P(cmd, PSTR(" F2000"));
+	MYSERIAL.println(position);
+
+    // Move to the XY print position in logical coordinates, where the print has been killed, but
+    // without shifting Z along the way. This requires performing the move without mbl.
+	sprintf_P(cmd, PSTR("G1 X%f Y%f F3000"),
+              eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 0)),
+              eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION + 4)));
 	enquecommand(cmd);
-  //moving on Z axis ahead, set EEPROM_UVLO to 1, so normal uvlo can fire
-  eeprom_update_byte((uint8_t*)EEPROM_UVLO,1);
-  // Move the Z axis down to the print, in logical coordinates.
-	strcpy_P(cmd, PSTR("G1 Z")); strcat(cmd, ftostr32(eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z))));
+
+    // Enable MBL and switch to logical positioning
+    if (mbl_was_active)
+        enquecommand_P(PSTR("PRUSA MBL V1"));
+
+    // Move the Z axis down to the print, in logical coordinates.
+    sprintf_P(cmd, PSTR("G1 Z%f"), eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_Z)));
 	enquecommand(cmd);
+
   // Unretract.
-	enquecommand_P(PSTR("G1 E"  STRINGIFY(2*default_retraction)" F480"));
+    sprintf_P(cmd, PSTR("G1 E%0.3f F2700"), default_retraction);
+    enquecommand(cmd);
+  // Recover final E axis position and mode
+    float pos_e = eeprom_read_float((float*)(EEPROM_UVLO_CURRENT_POSITION_E));
+    sprintf_P(cmd, PSTR("G92 E"));
+    dtostrf(pos_e, 6, 3, cmd + strlen(cmd));
+    enquecommand(cmd);
+    if (eeprom_read_byte((uint8_t*)EEPROM_UVLO_E_ABS))
+        enquecommand_P(PSTR("M82")); //E axis abslute mode
   // Set the feedrates saved at the power panic.
 	sprintf_P(cmd, PSTR("G1 F%d"), feedrate_rec);
 	enquecommand(cmd);
 	sprintf_P(cmd, PSTR("M220 S%d"), feedmultiply_rec);
 	enquecommand(cmd);
-	if (eeprom_read_byte((uint8_t*)EEPROM_UVLO_E_ABS))
-	{
-	  enquecommand_P(PSTR("M82")); //E axis abslute mode
-	}
   // Set the fan speed saved at the power panic.
 	strcpy_P(cmd, PSTR("M106 S"));
 	strcat(cmd, itostr3(int(fan_speed_rec)));
@@ -10214,7 +11256,7 @@ void stop_and_save_print_to_ram(float z_move, float e_move)
 #endif
 
   // save the global state at planning time
-  if (blocks_queued())
+  if (current_block)
   {
       memcpy(saved_target, current_block->gcode_target, sizeof(saved_target));
       saved_feedrate2 = current_block->gcode_feedrate;
@@ -10230,9 +11272,7 @@ void stop_and_save_print_to_ram(float z_move, float e_move)
     saved_feedmultiply2 = feedmultiply; //save feedmultiply
 	saved_active_extruder = active_extruder; //save active_extruder
 	saved_extruder_temperature = degTargetHotend(active_extruder);
-
-	saved_extruder_under_pressure = extruder_under_pressure; //extruder under pressure flag - currently unused
-	saved_extruder_relative_mode = axis_relative_modes[E_AXIS];
+	saved_extruder_relative_mode = axis_relative_modes & E_AXIS_MASK;
 	saved_fanSpeed = fanSpeed;
 	cmdqueue_reset(); //empty cmdqueue
 	card.sdprinting = false;
@@ -10248,23 +11288,29 @@ void stop_and_save_print_to_ram(float z_move, float e_move)
     // move away from the print.
     char buf[48];
 
-	// First unretract (relative extrusion)
-	if(!saved_extruder_relative_mode){
-		enquecommand(PSTR("M83"), true);
-	}
-	//retract 45mm/s
-	// A single sprintf may not be faster, but is definitely 20B shorter
-	// than a sequence of commands building the string piece by piece
-	// A snprintf would have been a safer call, but since it is not used
-	// in the whole program, its implementation would bring more bytes to the total size
-	// The behavior of dtostrf 8,3 should be roughly the same as %-0.3
-	sprintf_P(buf, PSTR("G1 E%-0.3f F2700"), e_move);
-	enquecommand(buf, false);
-
-	// Then lift Z axis
-	sprintf_P(buf, PSTR("G1 Z%-0.3f F%-0.3f"), saved_pos[Z_AXIS] + z_move, homing_feedrate[Z_AXIS]); 
-    // At this point the command queue is empty.
-    enquecommand(buf, false);
+    if(e_move)
+    {
+        // First unretract (relative extrusion)
+        if(!saved_extruder_relative_mode){
+            enquecommand(PSTR("M83"), true);
+        }
+        //retract 45mm/s
+        // A single sprintf may not be faster, but is definitely 20B shorter
+        // than a sequence of commands building the string piece by piece
+        // A snprintf would have been a safer call, but since it is not used
+        // in the whole program, its implementation would bring more bytes to the total size
+        // The behavior of dtostrf 8,3 should be roughly the same as %-0.3
+        sprintf_P(buf, PSTR("G1 E%-0.3f F2700"), e_move);
+        enquecommand(buf, false);
+    }
+
+    if(z_move)
+    {
+        // Then lift Z axis
+        sprintf_P(buf, PSTR("G1 Z%-0.3f F%-0.3f"), saved_pos[Z_AXIS] + z_move, homing_feedrate[Z_AXIS]);
+        enquecommand(buf, false);
+    }
+
     // If this call is invoked from the main Arduino loop() function, let the caller know that the command
     // in the command queue is not the original command, but a new one, so it should not be removed from the queue.
     repeatcommand_front();
@@ -10308,7 +11354,7 @@ void restore_print_from_ram_and_continue(float e_move)
 		wait_for_heater(_millis(), saved_active_extruder);
 		heating_status = 2;
 	}
-	axis_relative_modes[E_AXIS] = saved_extruder_relative_mode;
+	axis_relative_modes ^= (-saved_extruder_relative_mode ^ axis_relative_modes) & E_AXIS_MASK;
 	float e = saved_pos[E_AXIS] - e_move;
 	plan_set_e_position(e);
   
@@ -10318,12 +11364,10 @@ void restore_print_from_ram_and_continue(float e_move)
 
 	//first move print head in XY to the saved position:
 	plan_buffer_line(saved_pos[X_AXIS], saved_pos[Y_AXIS], current_position[Z_AXIS], saved_pos[E_AXIS] - e_move, homing_feedrate[Z_AXIS]/13, active_extruder);
-	st_synchronize();
 	//then move Z
 	plan_buffer_line(saved_pos[X_AXIS], saved_pos[Y_AXIS], saved_pos[Z_AXIS], saved_pos[E_AXIS] - e_move, homing_feedrate[Z_AXIS]/13, active_extruder);
-	st_synchronize();
 	//and finaly unretract (35mm/s)
-	plan_buffer_line(saved_pos[X_AXIS], saved_pos[Y_AXIS], saved_pos[Z_AXIS], saved_pos[E_AXIS], 35, active_extruder);
+	plan_buffer_line(saved_pos[X_AXIS], saved_pos[Y_AXIS], saved_pos[Z_AXIS], saved_pos[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder);
 	st_synchronize();
 
   #ifdef FANCHECK
@@ -10360,6 +11404,7 @@ void restore_print_from_ram_and_continue(float e_move)
 // Cancel the state related to a currently saved print
 void cancel_saved_printing()
 {
+    eeprom_update_byte((uint8_t*)EEPROM_UVLO, 0);
     saved_target[0] = SAVED_TARGET_UNSET;
     saved_printing_type = PRINTING_TYPE_NONE;
     saved_printing = false;
@@ -10381,9 +11426,9 @@ void print_mesh_bed_leveling_table()
   for (int8_t y = 0; y < MESH_NUM_Y_POINTS; ++ y)
     for (int8_t x = 0; x < MESH_NUM_Y_POINTS; ++ x) {
       MYSERIAL.print(mbl.z_values[y][x], 3);
-      SERIAL_ECHOPGM(" ");
+      SERIAL_ECHO(' ');
     }
-  SERIAL_ECHOLNPGM("");
+  SERIAL_ECHOLN();
 }
 
 uint16_t print_time_remaining() {
@@ -10431,7 +11476,7 @@ static void print_time_remaining_init()
 void load_filament_final_feed()
 {
 	current_position[E_AXIS]+= FILAMENTCHANGE_FINALFEED;
-	plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FINAL, active_extruder);
+	plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FINAL);
 }
 
 //! @brief Wait for user to check the state
@@ -10576,7 +11621,7 @@ void M600_load_filament_movements()
 	plan_buffer_line_curposXYZE(50, active_extruder);
 #else
 	current_position[E_AXIS]+= FILAMENTCHANGE_FIRSTFEED ;
-	plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST, active_extruder); 
+	plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST);
 #endif                
 	load_filament_final_feed();
 	lcd_loading_filament();
@@ -10671,8 +11716,6 @@ if(!(bEnableForce_z||eeprom_read_byte((uint8_t*)EEPROM_SILENT)))
 
 void disable_force_z()
 {
-    uint16_t z_microsteps=0;
-
     if(!bEnableForce_z) return;   // motor already disabled (may be ;-p )
 
     bEnableForce_z=false;
@@ -10683,11 +11726,8 @@ void disable_force_z()
     update_mode_profile();
     tmc2130_init(true);
 #endif // TMC2130
-
-    axis_known_position[Z_AXIS]=false;
 }
 
-
 void enable_force_z()
 {
 if(bEnableForce_z)

+ 4 - 4
Firmware/bootapp.c

@@ -9,6 +9,8 @@
 extern FILE _uartout;
 #define uartout (&_uartout)
 
+extern void softReset();
+
 void bootapp_print_vars(void)
 {
 	fprintf_P(uartout, PSTR("boot_src_addr  =0x%08lx\n"), boot_src_addr);
@@ -39,8 +41,7 @@ void bootapp_ram2flash(uint16_t rptr, uint16_t fptr, uint16_t size)
 	boot_src_addr = (uint32_t)rptr;
 	boot_dst_addr = (uint32_t)fptr;
 	bootapp_print_vars();
-	wdt_enable(WDTO_15MS);
-	while(1);
+	softReset();
 }
 
 void bootapp_reboot_user0(uint8_t reserved)
@@ -50,6 +51,5 @@ void bootapp_reboot_user0(uint8_t reserved)
 	boot_app_flags = BOOT_APP_FLG_USER0;
 	boot_reserved = reserved;
 	bootapp_print_vars();
-	wdt_enable(WDTO_15MS);
-	while(1);
+	softReset();
 }

+ 27 - 20
Firmware/cardreader.cpp

@@ -136,8 +136,17 @@ void CardReader::lsDive(const char *prepend, SdFile parent, const char * const m
 						SERIAL_ECHOPGM("Access date: ");
 						MYSERIAL.println(p.lastAccessDate);
 						SERIAL_ECHOLNPGM("");*/
-						modificationDate = p.lastWriteDate;
-						modificationTime = p.lastWriteTime;
+						crmodDate = p.lastWriteDate;
+						crmodTime = p.lastWriteTime;
+						// There are scenarios when simple modification time is not enough (on MS Windows)
+						// For example - extract an old g-code from an archive onto the SD card.
+						// In such case the creation time is current time (which is correct), but the modification time
+						// stays the same - i.e. old.
+						// Therefore let's pick the most recent timestamp from both creation and modification timestamps
+						if( crmodDate < p.creationDate || ( crmodDate == p.creationDate && crmodTime < p.creationTime ) ){
+							crmodDate = p.creationDate;
+							crmodTime = p.creationTime;
+						}
 						//writeDate = p.lastAccessDate;
 						if (match != NULL) {
 							if (strcasecmp(match, filename) == 0) return;
@@ -322,7 +331,7 @@ void CardReader::diveSubfolder (const char *fileName, SdFile& dir)
                 {
                     SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
                     SERIAL_PROTOCOL(subdirname);
-                    SERIAL_PROTOCOLLNPGM(".");
+                    SERIAL_PROTOCOLLN('.');
                     return;
                 }
                 else
@@ -421,7 +430,7 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
     {
       SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
       SERIAL_PROTOCOL(fname);
-      SERIAL_PROTOCOLLNPGM(".");
+      SERIAL_PROTOCOLLN('.');
     }
   }
   else 
@@ -430,7 +439,7 @@ void CardReader::openFile(const char* name,bool read, bool replace_current/*=tru
     {
       SERIAL_PROTOCOLRPGM(MSG_SD_OPEN_FILE_FAIL);
       SERIAL_PROTOCOL(fname);
-      SERIAL_PROTOCOLLNPGM(".");
+      SERIAL_PROTOCOLLN('.');
     }
     else
     {
@@ -487,17 +496,15 @@ void CardReader::getStatus()
           SERIAL_PROTOCOLLNPGM("Print saved");
       }
       else {
-          SERIAL_PROTOCOL(longFilename);
-          SERIAL_PROTOCOLPGM("\n");
+          SERIAL_PROTOCOLLN(longFilename);
           SERIAL_PROTOCOLRPGM(_N("SD printing byte "));////MSG_SD_PRINTING_BYTE
           SERIAL_PROTOCOL(sdpos);
-          SERIAL_PROTOCOLPGM("/");
+          SERIAL_PROTOCOL('/');
           SERIAL_PROTOCOLLN(filesize);
-          uint16_t time = _millis()/60000 - starttime/60000;
+          uint16_t time = ( _millis() - starttime ) / 60000U;
           SERIAL_PROTOCOL(itostr2(time/60));
           SERIAL_PROTOCOL(':');
-          SERIAL_PROTOCOL(itostr2(time%60));
-          SERIAL_PROTOCOLPGM("\n");
+          SERIAL_PROTOCOLLN(itostr2(time%60));
       }
   }
   else {
@@ -726,7 +733,7 @@ void CardReader::presort() {
 		// Never sort more than the max allowed
 		// If you use folders to organize, 20 may be enough
 		if (fileCnt > SDSORT_LIMIT) {
-			lcd_show_fullscreen_message_and_wait_P(_i("Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."));////MSG_FILE_CNT c=20 r=4
+			lcd_show_fullscreen_message_and_wait_P(_i("Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."));////MSG_FILE_CNT c=20 r=6
 			fileCnt = SDSORT_LIMIT;
 		}
 		lcd_clear();
@@ -773,8 +780,8 @@ void CardReader::presort() {
 		// retaining only two filenames at a time. This is very
 		// slow but is safest and uses minimal RAM.
 		char name1[LONG_FILENAME_LENGTH + 1];
-		uint16_t modification_time_bckp;
-		uint16_t modification_date_bckp;
+		uint16_t crmod_time_bckp;
+		uint16_t crmod_date_bckp;
 
 		#endif
 		position = 0;
@@ -800,8 +807,8 @@ void CardReader::presort() {
 				#else
 				// Copy filenames into the static array
 				strcpy(sortnames[i], LONGEST_FILENAME);
-				modification_time[i] = modificationTime;
-				modification_date[i] = modificationDate;
+				modification_time[i] = crmodTime;
+				modification_date[i] = crmodDate;
 				#if SDSORT_CACHE_NAMES
 				strcpy(sortshort[i], filename);
 				#endif
@@ -830,8 +837,8 @@ void CardReader::presort() {
 																	(modification_date[o1] < modification_date [o2]))
 			#else
 			#define _SORT_CMP_NODIR() (strcasecmp(name1, name2) > 0) //true if lowercase(name1) > lowercase(name2)
-			#define _SORT_CMP_TIME_NODIR() (((modification_date_bckp == modificationDate) && (modification_time_bckp > modificationTime)) || \
-																	(modification_date_bckp > modificationDate))
+			#define _SORT_CMP_TIME_NODIR() (((crmod_date_bckp == crmodDate) && (crmod_time_bckp > crmodTime)) || \
+																	(crmod_date_bckp > crmodDate))
 
 			#endif
 
@@ -882,8 +889,8 @@ void CardReader::presort() {
 					counter++;
 					getfilename_simple(positions[o1]);
 					strcpy(name1, LONGEST_FILENAME); // save (or getfilename below will trounce it)
-					modification_date_bckp = modificationDate;
-					modification_time_bckp = modificationTime;
+					crmod_date_bckp = crmodDate;
+					crmod_time_bckp = crmodTime;
 					#if HAS_FOLDER_SORTING
 					bool dir1 = filenameIsDir;
 					#endif

+ 3 - 1
Firmware/cardreader.h

@@ -75,7 +75,9 @@ public:
   bool sdprinting ;  
   bool cardOK ;
   char filename[13];
-  uint16_t modificationTime, modificationDate;
+  // There are scenarios when simple modification time is not enough (on MS Windows)
+  // Therefore these timestamps hold the most recent one of creation/modification date/times
+  uint16_t crmodTime, crmodDate;
   uint32_t cluster, position;
   char longFilename[LONG_FILENAME_LENGTH];
   bool filenameIsDir;

+ 7 - 4
Firmware/config.h

@@ -5,10 +5,12 @@
 #include "Configuration_prusa.h"
 #include "pins.h"
 
-#define IR_SENSOR_ANALOG (defined(VOLT_IR_PIN) && defined(IR_SENSOR))
+#if (defined(VOLT_IR_PIN) && defined(IR_SENSOR))
+# define IR_SENSOR_ANALOG
+#endif
 
 //ADC configuration
-#if !IR_SENSOR_ANALOG
+#ifndef IR_SENSOR_ANALOG
 #define ADC_CHAN_MSK      0b0000001001011111 //used AD channels bit mask (0,1,2,3,4,6,9)
 #define ADC_DIDR_MSK      0b0000001001011111 //AD channels DIDR mask (1 ~ disabled digital input)
 #define ADC_CHAN_CNT      7         //number of used channels)
@@ -34,7 +36,8 @@
 //#define PAT9125_I2C_ADDR  0x79  //ID=HI
 //#define PAT9125_I2C_ADDR  0x73  //ID=NC
 #define PAT9125_XRES      0
-#define PAT9125_YRES      240
+#define PAT9125_YRES      240                   // maximum resolution (5*X cpi)
+#define PAT9124_YRES_MM   (5*PAT9125_YRES/25.4) // counts per mm
 
 //SM4 configuration
 #define SM4_DEFDELAY      500       //default step delay [us]
@@ -55,7 +58,7 @@
 #define W25X20CL_SPSR          SPI_SPSR(W25X20CL_SPI_RATE)
 
 //LANG - Multi-language support
-//define LANG_MODE              0 // primary language only
+//#define LANG_MODE              0 // primary language only
 #define LANG_MODE              1 // sec. language support
 
 #define LANG_SIZE_RESERVED     0x3000 // reserved space for secondary language (12288 bytes)

+ 367 - 10
Firmware/eeprom.h

@@ -1,3 +1,13 @@
+
+/**
+ * @file
+ * @author 3d-gussner
+ */
+ /** \ingroup eeprom_table */
+ 
+ //! _This is a EEPROM table of currently implemented in Prusa firmware (dynamically generated from doxygen)._
+
+
 #ifndef EEPROM_H
 #define EEPROM_H
 
@@ -26,6 +36,346 @@ typedef struct
 #ifdef __cplusplus
 static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEPROM_SHEETS_SIZEOF.");
 #endif
+/** @defgroup eeprom_table EEPROM Table
+ *  
+ 
+  ---------------------------------------------------------------------------------
+  EEPROM 8-bit Empty value = 0xFFh 255
+  
+  EEPROM 16-bit Empty value = 0xFFFFh 65535
+  
+  _Italic = unused or default_
+  
+  __Bold = Status__
+  
+  In Default/FactoryReset column the 
+  
+   - __L__		Language
+   - __S__ 		Statistics
+   - __P__ 		Shipping prep
+   - __S/P__	Statistics and Shipping prep
+   
+  will overwrite existing values to 0 or default.
+  A FactoryReset All Data will overwrite the whole EEPROM with ffh and some values will be initialized automatically,
+  others need a reset / reboot.
+  
+  ---------------------------------------------------------------------------------
+  How can you use the debug codes?
+  - Serial terminal like Putty.
+  - Octoprint does support D-codes
+  - _Pronterface_ does __not__ support D-codes
+
+  ### !!! D-codes are case sensitive so please don't use upper case A,C or X in the address you want to read !!!
+   
+  #### Useful tools/links:
+  To convert hex to ascii 		https://www.rapidtables.com/convert/number/hex-to-ascii.html
+  
+  To convert hex to dec 		https://www.rapidtables.com/convert/number/hex-to-decimal.html
+  
+  Version: 1.0.1
+  
+  ---------------------------------------------------------------------------------
+  
+  
+| Address begin		| Bit/Type 	| Name 									| Valid values	| Default/FactoryReset	| Description 										| Gcode/Function| Debug code
+| :--				| :-- 		| :-- 									| :--:			| :--:					| :--												| :--:			| :--:
+| 0x0FFFh 4095		| uchar    	| EEPROM_SILENT 						| 00h 0			| ffh 255				| TMC Stealth mode: __off__ / miniRambo Power mode	| LCD menu		| D3 Ax0fff C1
+| ^ 				| ^ 		| ^										| 01h 1			| ^						| TMC Stealth mode: __on__ / miniRambo Silent mode	| ^				| ^ 
+| ^ 				| ^ 		| ^										| 02h 2			| ^						| miniRambo Auto mode								| ^				| ^ 
+| 0x0FFEh 4094		| uchar    	| EEPROM_LANG 							| 00h 0			| ffh 255		__L__	| English / LANG_ID_PRI								| LCD menu		| D3 Ax0ffe C1 
+| ^ 				| ^ 		| ^										| 01h 1			| ^						| Other language LANG_ID_SEC						| ^ 			| ^
+| 0x0FFCh 4092		| uint16	| EEPROM_BABYSTEP_X						| ???			| ff ffh 65535			| Babystep for X axis _unsued_						| ??? 			| D3 Ax0ffc C2
+| 0x0FFAh 4090		| uint16	| EEPROM_BABYSTEP_Y						| ???			| ff ffh 65535			| Babystep for Y axis _unsued_						| ^ 			| D3 Ax0ffa C2
+| 0x0FF8h 4088		| uint16	| EEPROM_BABYSTEP_Z						| ???			| ff ffh 65535			| Babystep for Z axis _lagacy_						| ^ 			| D3 Ax0ff8 C2
+| ^ 				| ^ 		| ^										| ^				| ^						| multiple values stored now in EEPROM_Sheets_base	| ^ 			| ^
+| 0x0FF7h 4087		| uint8		| EEPROM_CALIBRATION_STATUS				| ffh 255		| ffh 255				| Assembled _default_								| ??? 			| D3 Ax0ff7 C1
+| ^ 				| ^ 		| ^										| 01h 1			| ^						| Calibrated										| ^ 			| ^
+| ^ 				| ^ 		| ^										| e6h 230		| ^						| needs Live Z adjustment							| ^ 			| ^
+| ^ 				| ^ 		| ^										| f0h 240		| ^				__P__	| needs Z calibration								| ^ 			| ^
+| ^ 				| ^ 		| ^										| fah 250		| ^						| needs XYZ calibration								| ^ 			| ^ 
+| ^ 				| ^ 		| ^										| 00h 0			| ^						| Unknown											| ^ 			| ^
+| 0x0FF5h 4085		| uint16	| EEPROM_BABYSTEP_Z0					| ???			| ff ffh 65535			| Babystep for Z ???								| ??? 			| D3 Ax0ff5 C2
+| 0x0FF1h 4081		| uint32	| EEPROM_FILAMENTUSED					| ???			| 00 00 00 00h 0 __S/P__| Filament used in meters							| ??? 			| D3 Ax0ff1 C4
+| 0x0FEDh 4077		| uint32	| EEPROM_TOTALTIME						| ???			| 00 00 00 00h 0 __S/P__| Total print time									| ??? 			| D3 Ax0fed C4
+| 0x0FE5h 4069		| float		| EEPROM_BED_CALIBRATION_CENTER			| ???			| ff ff ff ffh			| ???											 	| ??? 			| D3 Ax0fe5 C8
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| 0x0FDDh 4061		| float		| EEPROM_BED_CALIBRATION_VEC_X			| ???			| ff ff ff ffh			| ???											 	| ??? 			| D3 Ax0fdd C8
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^	
+| 0x0FD5h 4053		| float		| EEPROM_BED_CALIBRATION_VEC_Y			| ???			| ff ff ff ffh			| ???											 	| ??? 			| D3 Ax0fd5 C8
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| 0x0FC5h 4037		| int16		| EEPROM_BED_CALIBRATION_Z_JITTER		| ???			| ff ffh 65535			| ???											 	| ??? 			| D3 Ax0fc5 C16
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^	
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| 0x0FC4h 4036		| bool		| EEPROM_FARM_MODE						| 00h 0			| ffh 255 		__P__	| Prusa farm mode: __off__							| G99 			| D3 Ax0fc4 C1
+| ^					| ^			| ^										| 01h 1			| ^						| Prusa farm mode: __on__							| G98			| ^
+| 0x0FC3h 4035		| free		| _EEPROM_FREE_NR1_						| ???			| ffh 255				| _Free EEPROM space_								| _free space_	| D3 Ax0fc3 C1
+| 0x0FC1h 4033		| ???		| EEPROM_FARM_NUMBER					| 000-999		| ff ffh / 000	__P__	| Prusa farm number	_only 0-9 are allowed: 000-999_	| LCD menu		| D3 Ax0fc1 C2
+| 0x0FC0h 4032		| bool		| EEPROM_BED_CORRECTION_VALID			| 00h 0			| 00h 0					| Bed correction invalid							| ??? 			| D3 Ax0fc0 C1
+| ^					| ^			| ^										| ffh 255		| 						| Bed correction valid								| ??? 			| ^
+| 0x0FBFh 4031		| char		| EEPROM_BED_CORRECTION_LEFT			| 00h ffh		| 00h 0					| Bed manual correction left						| LCD menu 		| D3 Ax0fbf C1
+| ^					| ^			| ^										| ^				| ^						| At this moment limited to +-100um					| G80 Lxxx 			| ^
+| 0x0FBEh 4030		| char		| EEPROM_BED_CORRECTION_RIGHT			| 00h ffh		| 00h 0					| Bed manual correction right						| LCD menu 		| D3 Ax0fbe C1
+| ^					| ^			| ^										| ^				| ^						| At this moment limited to +-100um					| G80 Rxxx 			| ^
+| 0x0FBDh 4029		| char		| EEPROM_BED_CORRECTION_FRONT			| 00h ffh		| 00h 0					| Bed manual correction front						| LCD menu 		| D3 Ax0fbd C1
+| ^					| ^			| ^										| ^				| ^						| At this moment limited to +-100um					| G80 Fxxx 			| ^
+| 0x0FBCh 4028		| char		| EEPROM_BED_CORRECTION_BACK			| 00h ffh		| 00h 0					| Bed manual correction back						| LCD menu 		| D3 Ax0fbc C1
+| ^					| ^			| ^										| ^				| ^						| At this moment limited to +-100um					| G80 Bxxx 			| ^
+| 0x0FBBh 4027		| bool		| EEPROM_TOSHIBA_FLASH_AIR_COMPATIBLITY	| 00h 0			| ffh 255				| Toshiba Air: __off__								| LCD menu 		| D3 Ax0fbb C1
+| ^					| ^			| ^										| 01h 1			| ^						| Toshiba Air: __on__								| ^ 			| ^	
+| 0x0FBAh 4026		| uchar		| EEPROM_PRINT_FLAG						| ???			| ???					| _unsued_											| ??? 			| D3 Ax0fba C1
+| 0x0FB0h 4016		| int16		| EEPROM_PROBE_TEMP_SHIFT				| ???			| ???					| ???												| ??? 			| D3 Ax0fb0 C10
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| 0x0FAFh 4015		| bool		| EEPROM_TEMP_CAL_ACTIVE				| 00h 0			| 00h 0					| PINDA Temp cal.: __inactive__						| LCD menu		| D3 Ax0faf C1
+| ^					| ^			| ^										| ffh 255		| ^						| PINDA Temp cal.: __active__						| ^ 			| ^
+| 0x0FA7h 4007		| uint32	| EEPROM_BOWDEN_LENGTH					| ???			| ff 00 00 00h			| Bowden length										| ??? 			| D3 Ax0fae C8
+| ^					| ^			| ^										| ^				| 00 00 00 00h			| ^													| ^ 			| ^
+| 0x0FA6h 4006		| uint8		| EEPROM_CALIBRATION_STATUS_PINDA		| 00h 0			| ffh 255				| PINDA Temp: __not calibrated__					| ??? 			| D3 Ax0fa6 C1
+| ^					| ^			| ^										| 01h 1			| ^						| PINDA Temp: __calibrated__						| ^ 			| ^
+| 0x0FA5h 4005		| uint8		| EEPROM_UVLO							| 00h 0			| ffh 255				| Power Panic flag: __inactive__					| ??? 			| D3 Ax0fa5 C1
+| ^					| ^			| ^										| 01h 1			| ^						| Power Panic flag: __active__						| ^ 			| ^
+| ^					| ^			| ^										| 02h 2			| ^						| Power Panic flag: __???__							| ^ 			| ^
+| 0x0F9Dh 3997		| float		| EEPROM_UVLO_CURRENT_POSITION			| ???			| ffh 255				| Power Panic position 								| ??? 			| D3 Ax0f9d C8
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| 0x0F95h 3989		| char		| EEPROM_FILENAME						| ???			| ffh 255				| Power Panic Filename 								| ??? 			| D3 Ax0f95 C8
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| 0x0F91h 39851		| uint32	| EEPROM_FILE_POSITION					| ???			| ff ff ff ffh			| Power Panic File Position							| ??? 			| D3 Ax0f91 C4
+| 0x0F8Dh 3981		| float		| EEPROM_UVLO_CURRENT_POSITION_Z		| ???			| ff ff ff ffh			| Power Panic Z Position	 						| ^ 			| D3 Ax0f8d C4
+| 0x0F8Ch 3980		| ???		| EEPROM_UVLO_UNUSED_001				| ??? 			| ffh 255				| Power Panic _unused_								| ^ 			| D3 Ax0f8c C1
+| 0x0F8Bh 3979		| uint8		| EEPROM_UVLO_TARGET_BED				| ???			| ffh 255				| Power Panic Bed temperature						| ^ 			| D3 Ax0f8b C1
+| 0x0F89h 3977		| uint16	| EEPROM_UVLO_FEEDRATE					| ???			| ff ffh 65535			| Power Panic Feedrate								| ^ 			| D3 Ax0f89 C2
+| 0x0F88h 3976		| uint8		| EEPROM_UVLO_FAN_SPEED					| ???			| ffh 255				| Power Panic Fan speed								| ^ 			| D3 Ax0f88 C1
+| 0x0F87h 3975		| uint8		| EEPROM_FAN_CHECK_ENABLED				| 00h 0			| ???					| Fan Check __disabled__							| LCD menu		| D3 Ax0f87 C1
+| ^					| ^			| ^										| 01h 1			| ffh 255				| Fan Check __enabled__ 							| ^ 			| ^
+| 0x0F75h 3957		| uint16	| EEPROM_UVLO_MESH_BED_LEVELING			| ???			| ff ffh 65535			| Power Panic Mesh Bed Leveling						| ???			| D3 Ax0f75 C18 
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| ^					| ^			| ^										| ^				| ^						| ^													| ^ 			| ^
+| 0x0F73h 3955		| uint16	| EEPROM_UVLO_Z_MICROSTEPS				| ???			| ff ffh 65535			| Power Panic Z microsteps							| ???			| D3 Ax0f73 C2 
+| 0x0F72h 3954		| uint8		| EEPROM_UVLO_E_ABS						| ???			| ffh 255				| Power Panic ??? position							| ???			| D3 Ax0f72 C1
+| 0x0F6Eh 3950		| foat		| EEPROM_UVLO_CURRENT_POSITION_E		| ???			| ff ff ff ffh			| Power Panic E position							| ???			| D3 Ax0f6e C4
+| 0x0F6Dh 3949		| ???		| _EEPROM_FREE_NR2_						| ???			| ffh 255				| _Free EEPROM space_								| _free space_	| D3 Ax0f6d C1
+| 0x0F6Ch 3948		| ???		| _EEPROM_FREE_NR3_						| ???			| ffh 255				| _Free EEPROM space_								| _free space_	| D3 Ax0f6c C1
+| 0x0F6Bh 3947		| ???		| _EEPROM_FREE_NR4_						| ???			| ffh 255				| _Free EEPROM space_								| _free space_	| D3 Ax0f6b C1
+| 0x0F6Ah 3946		| ???		| _EEPROM_FREE_NR5_						| ???			| ffh 255				| _Free EEPROM space_								| _free space_	| D3 Ax0f6a C1
+| 0x0F69h 3945		| uint8		| EEPROM_CRASH_DET						| ffh 255		| ffh 255				| Crash detection: __enabled__						| LCD menu		| D3 Ax0f69 C1
+| ^					| ^			| ^										| 00h 0			| ^						| Crash detection: __disabled__						| LCD menu		| ^
+| 0x0F68h 3944		| uint8		| EEPROM_CRASH_COUNT_Y					| 00h-ffh 0-255	| ffh 255		__S/P__	| Crashes detected on y axis						| ???			| D3 Ax0f68 C1
+| 0x0F67h 3943		| uint8		| EEPROM_FSENSOR						| 01h 1			| ffh 255		__P__	| Filament sensor: __enabled__						| LCD menu		| D3 Ax0f67 C1
+| ^					| ^			| ^										| 00h 0			| ^						| Filament sensor: __disabled__						| LCD menu		| ^
+| 0x0F65h 3942		| uint8		| EEPROM_CRASH_COUNT_X					| 00h-ffh 0-255	| ffh 255		__S/P__	| Crashes detected on x axis						| ???			| D3 Ax0f66 C1
+| 0x0F65h 3941		| uint8		| EEPROM_FERROR_COUNT					| 00h-ffh 0-255	| ffh 255		__S/P__	| Filament sensor error counter						| ???			| D3 Ax0f65 C1
+| 0x0F64h 3940		| uint8		| EEPROM_POWER_COUNT					| 00h-ffh 0-255	| ffh 255		__S/P__	| Power failure counter								| ???			| D3 Ax0f64 C1
+| 0x0F60h 3936		| float		| EEPROM_XYZ_CAL_SKEW					| ???			| ff ff ff ffh			| XYZ skew value									| ???			| D3 Ax0f60 C4
+| 0x0F5Fh 3935		| uint8		| EEPROM_WIZARD_ACTIVE					| 01h 1			| 01h 1			__P__	| Wizard __active__									| ???			| D3 Ax0f5f C1
+| ^					| ^			| ^										| 00h 0			| ^						| Wizard __inactive__								| ^ 			| ^
+| 0x0F5Dh 3933		| uint16	| EEPROM_BELTSTATUS_X					| ???			| ff ffh				| X Beltstatus 										| ???			| D3 Ax0f5d C2
+| 0x0F5Bh 3931		| uint16	| EEPROM_BELTSTATUS_Y					| ???			| ff ffh				| Y Beltstatus 										| ???			| D3 Ax0f5b C2
+| 0x0F5Ah 3930		| uint8		| EEPROM_DIR_DEPTH						| 00h-ffh 0-255	| ffh 255				| Directory depth									| ???			| D3 Ax0f5a C1
+| 0x0F0Ah 3850		| uint8		| EEPROM_DIRS							| ???			| ffh 255				| Directories ???									| ???			| D3 Ax0f0a C80
+| 0x0F09h 3849		| uint8		| EEPROM_SD_SORT						| 00h 0			| ffh 255				| SD card sort by: 	__time__						| LCD menu		| D3 Ax0f09 C1
+| ^					| ^			| ^										| 01h 1			| ^						| SD card sort by: 	__alphabet__					| LCD menu		| ^
+| ^					| ^			| ^										| 02h 1			| ^						| SD card:			__not sorted__					| LCD menu		| ^
+| 0x0F08h 3848		| uint8		| EEPROM_SECOND_SERIAL_ACTIVE			| 00h 0			| ffh 255				| RPi Port: __disabled__							| LCD menu		| D3 Ax0f08 C1
+| ^					| ^			| ^										| 01h 1			| ^						| RPi Port: __enabled__								| LCD menu		| ^
+| 0x0F07h 3847		| uint8		| EEPROM_FSENS_AUTOLOAD_ENABLED			| 01h 1			| ffh 255		__P__	| Filament autoload: __enabled__					| LCD menu		| D3 Ax0f07 C1
+| ^					| ^			| ^										| 00h 0			| ^						| Filament autoload: __disabled__					| LCD menu		| ^
+| 0x0F05h 3845		| uint16	| EEPROM_CRASH_COUNT_X_TOT				| 0000-fffe		| ff ffh		__S/P__	| Total crashes on x axis	  						| ???			| D3 Ax0f05 C2
+| 0x0F03h 3843		| uint16	| EEPROM_CRASH_COUNT_Y_TOT				| 0000-fffe		| ff ffh		__S/P__	| Total crashes on y axis  							| ???			| D3 Ax0f03 C2
+| 0x0F01h 3841		| uint16	| EEPROM_FERROR_COUNT_TOT				| 0000-fffe		| ff ffh		__S/P__	| Total filament sensor errors 						| ???			| D3 Ax0f01 C2
+| 0x0EFFh 3839		| uint16	| EEPROM_POWER_COUNT_TOT				| 0000-fffe		| ff ffh		__S/P__	| Total power failures		  						| ???			| D3 Ax0eff C2
+| 0x0EFEh 3838		| uint8		| EEPROM_TMC2130_HOME_X_ORIGIN			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0efe C1
+| 0x0EFDh 3837		| uint8		| EEPROM	MC2130_HOME_X_BSTEPS			| ???			| ffh 255			| ???						  						| ???			| D3 Ax0efd C1
+| 0x0EFCh 3836		| uint8		| EEPROM_TMC2130_HOME_X_FSTEPS			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0efc C1
+| 0x0EFBh 3835		| uint8		| EEPROM_TMC2130_HOME_Y_ORIGIN			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0efb C1
+| 0x0EFAh 3834		| uint8		| EEPROM_TMC2130_HOME_Y_BSTEPS			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0efa C1
+| 0x0EF9h 3833		| uint8		| EEPROM_TMC2130_HOME_Y_FSTEPS			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef9 C1
+| 0x0EF8h 3832		| uint8		| EEPROM_TMC2130_HOME_ENABLED			| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef8 C1
+| 0x0EF7h 3831		| uint8		| EEPROM_TMC2130_WAVE_X_FAC				| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef7 C1
+| 0x0EF6h 3830		| uint8		| EEPROM_TMC2130_WAVE_Y_FAC				| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef6 C1
+| 0x0EF5h 3829		| uint8		| EEPROM_TMC2130_WAVE_Z_FAC				| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef5 C1
+| 0x0EF4h 3828		| uint8		| EEPROM_TMC2130_WAVE_E_FAC				| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef4 C1
+| 0x0EF3h 3827		| uint8		| EEPROM_TMC2130_X_MRES					| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef3 C1
+| 0x0EF2h 3826		| uint8		| EEPROM_TMC2130_Y_MRES					| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef2 C1
+| 0x0EF1h 3825		| uint8		| EEPROM_TMC2130_Z_MRES					| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef1 C1
+| 0x0EF0h 3824		| uint8		| EEPROM_TMC2130_E_MRES					| ???			| ffh 255				| ???						  						| ???			| D3 Ax0ef0 C1
+| 0x0EEE 3822		| uint16 	| EEPROM_PRINTER_TYPE					| ???			| ff ffh 65535			| Printer Type										| ???			| D3 Ax0eee C2
+| ^					| ^			| ^										| 64 00h 100	| ^						| PRINTER_MK1										| ???			| ^
+| ^					| ^			| ^										| c8 00h 200	| ^						| PRINTER_MK2										| ???			| ^
+| ^					| ^			| ^										| c9 00h 201	| ^						| PRINTER_MK2 with MMU1								| ???			| ^
+| ^					| ^			| ^										| ca 00h 202	| ^						| PRINTER_MK2S										| ???			| ^
+| ^					| ^			| ^										| cb 00h 203	| ^						| PRINTER_MK2S with MMU1							| ???			| ^
+| ^					| ^			| ^										| fa 00h 250	| ^						| PRINTER_MK2.5										| ???			| ^
+| ^					| ^			| ^										| 1a 4fh 20250	| ^						| PRINTER_MK2.5 with MMU2							| ???			| ^
+| ^					| ^			| ^										| fc 00h 252	| ^						| PRINTER_MK2.5S									| ???			| ^
+| ^					| ^			| ^										| 1c 4fh 20252	| ^						| PRINTER_MK2.5S with MMU2S							| ???			| ^
+| ^					| ^			| ^										| 2c 01h 300	| ^						| PRINTER_MK3										| ???			| ^
+| ^					| ^			| ^										| 4c 4fh 20300	| ^						| PRINTER_MK3 with MMU2								| ???			| ^
+| ^					| ^			| ^										| 2e 01h 302	| ^						| PRINTER_MK3S										| ???			| ^
+| ^					| ^			| ^										| 4e 4fh 20302	| ^						| PRINTER_MK3S with MMU2S							| ???			| ^
+| 0x0EEC 3820		| uint16	| EEPROM_BOARD_TYPE						| ???			| ff ffh 65535			| Board Type										| ???			| D3 Ax0eec C2
+| ^					| ^			| ^										| c8 00h 200	| ^						| BOARD_RAMBO_MINI_1_0								| ???			| ^
+| ^					| ^			| ^										| cb 00h 203	| ^						| BOARD_RAMBO_MINI_1_3								| ???			| ^
+| ^					| ^			| ^										| 36 01h 310	| ^						| BOARD_EINSY_1_0a									| ???			| ^
+| 0x0EE8 3816		| float		| EEPROM_EXTRUDER_MULTIPLIER_0			| ???			| ff ff ff ffh			| Power panic Extruder 0 multiplier					| ???			| D3 Ax0ee8 C4
+| 0x0EE4 3812		| float		| EEPROM_EXTRUDER_MULTIPLIER_1			| ???			| ff ff ff ffh			| Power panic Extruder 1 multiplier					| ???			| D3 Ax0ee4 C4
+| 0x0EE0 3808		| float		| EEPROM_EXTRUDER_MULTIPLIER_2			| ???			| ff ff ff ffh			| Power panic Extruder 2 multiplier					| ???			| D3 Ax0ee0 C4
+| 0x0EDE 3806		| uint16	| EEPROM_EXTRUDEMULTIPLY				| ???			| ff ffh 65535			| Power panic Extruder multiplier					| ???			| D3 Ax0ede C2
+| 0x0EDA 3802		| float		| EEPROM_UVLO_TINY_CURRENT_POSITION_Z	| ???			| ff ff ff ffh			| Power panic Z position							| ???			| D3 Ax0eda C4
+| 0x0ED8 3800		| uint16	| EEPROM_UVLO_TARGET_HOTEND				| ???			| ff ffh 65535			| Power panic target Hotend temperature				| ???			| D3 Ax0ed8 C2
+| 0x0ED7 3799		| uint8		| EEPROM_SOUND_MODE						| 00h 0			| ffh 255				| Sound mode: __loud__								| ???			| D3 Ax0ed7 C1
+| ^					| ^			| ^										| 01h 1			| ^						| Sound mode: __once__								| ^				| ^
+| ^					| ^			| ^										| 02h 1			| ^						| Sound mode: __silent__							| ^				| ^
+| ^					| ^			| ^										| 03h 1			| ^						| Sound mode: __assist__							| ^				| ^
+| 0x0ED6 3798		| bool		| EEPROM_AUTO_DEPLETE					| 01h 1			| ffh 255				| MMU2/s autodeplete: __on__						| ???			| D3 Ax0ed6 C1
+| ^					| ^			| ^										| 00h 0			| ^						| MMU2/s autodeplete: __off__						| ^				| ^
+| 0x0ED5 3797		| bool		| EEPROM_FSENS_OQ_MEASS_ENABLED			| ???			| ffh 255				| PAT1925 ???										| ???			| D3 Ax0ed5 C1
+| ^					| ^			| ^										| ???			| ^						| PAT1925 ???										| ^				| ^
+| 0x0ED3 3795		| uint16	| EEPROM_MMU_FAIL_TOT					| ???			| ff ffh 65535	__S/P__	| MMU2/s total failures								| ???			| D3 Ax0ed3 C2
+| 0x0ED2 3794		| uint8		| EEPROM_MMU_FAIL						| ???			| ffh 255		__S/P__	| MMU2/s fails during print							| ???			| D3 Ax0ed2 C1
+| 0x0ED0 3792		| uint16	| EEPROM_MMU_LOAD_FAIL_TOT				| ???			| ff ffh 65535	__S/P__	| MMU2/s total load failures						| ???			| D3 Ax0ed0 C2
+| 0x0ECF 3791		| uint8		| EEPROM_MMU_LOAD_FAIL					| ???			| ffh 255		__S/P__	| MMU2/s load failures during print					| ???			| D3 Ax0ecf C1
+| 0x0ECE 3790		| uint8		| EEPROM_MMU_CUTTER_ENABLED				| 00h 0			| ffh 255				| MMU2/s cutter: __disabled__						| LCD menu		| D3 Ax0ece C1
+| ^					| ^			| ^										| 01h 1			| ^						| MMU2/s cutter: __enabled__						| ^				| ^
+| ^					| ^			| ^										| 02h 2			| ^						| MMU2/s cutter: __always__							| ^				| ^
+| 0x0DAE 3502		| uint16	| EEPROM_UVLO_MESH_BED_LEVELING_FULL	| ???			| ff ffh 65535			| Power panic Mesh bed leveling points 				| ???			| D3 Ax0dae C288
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| ^					| ^			| ^										| ???			| ^						| ^													| ^				| ^
+| 0x0DAD 3501		| uint8		| EEPROM_MBL_TYPE						| ???			| ffh 255				| Mesh bed leveling precision 		_unused atm_	| ???			| D3 Ax0dad C1
+| 0x0DAC 3500		| bool		| EEPROM_MBL_MAGNET_ELIMINATION			| 01h 1			| ffh 255				| Mesh bed leveling does: __ignores__ magnets		| LCD menu		| D3 Ax0dac C1
+| ^					| ^			| ^										| 00h 0			| ^						| Mesh bed leveling does: __NOT ignores__ magnets	| ^				| ^
+| 0x0DAB 3499		| uint8		| EEPROM_MBL_POINTS_NR					| 03h 3			| ffh 255				| Mesh bed leveling points: __3x3__					| LCD menu		| D3 Ax0dab C1
+| ^					| ^			| ^										| 07h 7			| ^						| Mesh bed leveling points: __7x7__					| ^				| ^
+| 0x0DAA 3498		| uint8		| EEPROM_MBL_PROBE_NR					| 03h 3			| ffh 255				| MBL times measurements for each point: __3__ 		| LCD menu		| D3 Ax0daa C1
+| ^					| ^			| ^										| 05h 5			| ^						| MBL times measurements for each point: __5__		| ^				| ^
+| ^					| ^			| ^										| 01h 1			| ^						| MBL times measurements for each point: __1__		| ^				| ^
+| 0x0DA9 3497		| uint8		| EEPROM_MMU_STEALTH					| 01h 1			| ffh 255				| MMU2/s Silent mode: __on__						| ???			| D3 Ax0da9 C1
+| ^					| ^			| ^										| 00h 0			| ^						| MMU2/s Silent mode: __off__						| ^				| ^
+| 0x0DA8 3496		| uint8		| EEPROM_CHECK_MODE						| 01h 1			| ffh 255				| Check mode for nozzle is: __warn__				| LCD menu		| D3 Ax0da8 C1
+| ^					| ^			| ^										| 02h 0			| ^						| Check mode for nozzle is: __strict__				| ^				| ^
+| ^					| ^			| ^										| 00h 0			| ^						| Check mode for nozzle is: __none__				| ^				| ^
+| 0x0DA7 3495		| uint8		| EEPROM_NOZZLE_DIAMETER				| 28h 40		| ffh 255				| Nozzle diameter is: __40 or 0.40mm__				| LCD menu		| D3 Ax0da7 C1
+| ^					| ^			| ^										| 3ch 60		| ^						| Nozzle diameter is: __60 or 0.60mm__				| ^				| ^
+| ^					| ^			| ^										| 19h 25		| ^						| Nozzle diameter is: __25 or 0.25mm__				| ^				| ^
+| 0x0DA5 3493		| uint16	| EEPROM_NOZZLE_DIAMETER_uM				| 9001h			| ff ffh 65535			| Nozzle diameter is: __400um__						| LCD menu		| D3 Ax0da5 C2
+| ^					| ^			| ^										| 5802h			| ^						| Nozzle diameter is: __600um__						| ^				| ^
+| ^					| ^			| ^										| fa00h			| ^						| Nozzle diameter is: __250um__						| ^				| ^
+| 0x0DA4 3492		| uint8		| EEPROM_CHECK_MODEL					| 01h 1			| ffh 255				| Check mode for printer model is: __warn__			| LCD menu		| D3 Ax0da4 C1
+| ^					| ^			| ^										| 02h 0			| ^						| Check mode for printer model is: __strict__		| ^				| ^
+| ^					| ^			| ^										| 00h 0			| ^						| Check mode for printer model is: __none__			| ^				| ^
+| 0x0DA3 3491		| uint8		| EEPROM_CHECK_VERSION					| 01h 1			| ffh 255				| Check mode for firmware is: __warn__				| LCD menu		| D3 Ax0da3 C1
+| ^					| ^			| ^										| 02h 0			| ^						| Check mode for firmware is: __strict__			| ^				| ^
+| ^					| ^			| ^										| 00h 0			| ^						| Check mode for firmware is: __none__				| ^				| ^
+| 0x0DA2 3490		| uint8		| EEPROM_CHECK_GCODE					| 01h 1			| ffh 255				| Check mode for gcode is: __warn__ _unused atm_	| LCD menu		| D3 Ax0da2 C1
+| ^					| ^			| ^										| 02h 0			| ^						| Check mode for gcode is: __strict__ _unused atm_	| ^				| ^
+| ^					| ^			| ^										| 00h 0			| ^						| Check mode for gcode is: __none__ _unused atm_	| ^				| ^
+| 0x0D49 3401		| uint16	| EEPROM_SHEETS_BASE					| ???			| ffh 255				| ???												| LCD menu		| D3 Ax0d49 C89
+| 0x0D49 3401		| char		| _1st Sheet block_						| 536d6f6f746831| ffffffffffffff		| 1st sheet - Name: 	_Smooth1_					| ^				| D3 Ax0d49 C7
+| 0x0D50 3408		| uint16	| ^										| 00 00h 0		| ff ffh 65535			| 1st sheet - Z offset 								| ^				| D3 Ax0d50 C2	
+| 0x0D52 3410		| uint8		| ^										| 00h 0			| ffh 255				| 1st sheet - bed temp 								| ^				| D3 Ax0d52 C1	
+| 0x0D53 3411		| uint8		| ^										| 00h 0			| ffh 255				| 1st sheet - PINDA temp 							| ^				| D3 Ax0d53 C1	
+| 0x0D54 3412		| char		| _2nd Sheet block_						| 536d6f6f746832| ffffffffffffff		| 2nd sheet - Name: 	_Smooth2_					| ^				| D3 Ax0d54 C7
+| 0x0D5B 3419		| uint16	| ^										| 00 00h 0		| ff ffh 65535			| 2nd sheet - Z offset 								| ^				| D3 Ax0d5b C2	
+| 0x0D5D 3421		| uint8		| ^										| 00h 0			| ffh 255				| 2nd sheet - bed temp 								| ^				| D3 Ax0d5d C1	
+| 0x0D5E 3422		| uint8		| ^										| 00h 0			| ffh 255				| 2nd sheet - PINDA temp 							| ^				| D3 Ax0d5e C1	
+| 0x0D5F 3423		| char		| _3rd Sheet block_						| 54657874757231| ffffffffffffff		| 3rd sheet - Name: 	_Textur1_					| ^				| D3 Ax0d5f C7
+| 0x0D66 3430		| uint16	| ^										| 00 00h 0		| ff ffh 65535			| 3rd sheet - Z offset 								| ^				| D3 Ax0d66 C2	
+| 0x0D68 3432		| uint8		| ^										| 00h 0			| ffh 255				| 3rd sheet - bed temp 								| ^				| D3 Ax0d68 C1	
+| 0x0D69 3433		| uint8		| ^										| 00h 0			| ffh 255				| 3rd sheet - PINDA temp 							| ^				| D3 Ax0d69 C1	
+| 0x0D6A 3434		| char		| _4th Sheet block_						| 54657874757232| ffffffffffffff		| 4th sheet - Name: 	_Textur2_					| ^				| D3 Ax0d6a C7
+| 0x0D71 3441		| uint16	| ^										| 00 00h 0		| ff ffh 65535			| 4th sheet - Z offset 								| ^				| D3 Ax0d71 C2	
+| 0x0D73 3443		| uint8		| ^										| 00h 0			| ffh 255				| 4th sheet - bed temp 								| ^				| D3 Ax0d73 C1	
+| 0x0D74 3444		| uint8		| ^										| 00h 0			| ffh 255				| 4th sheet - PINDA temp 							| ^				| D3 Ax0d74 C1	
+| 0x0D75 3445		| char		| _5th Sheet block_						| 437573746f6d31| ffffffffffffff		| 5th sheet - Name: 	_Custom1_					| ^				| D3 Ax0d75 C7
+| 0x0D7C 3452		| uint16	| ^										| 00 00h 0		| ff ffh 65535			| 5th sheet - Z offset 								| ^				| D3 Ax0d7c C2	
+| 0x0D7E 3454		| uint8		| ^										| 00h 0			| ffh 255				| 5th sheet - bed temp 								| ^				| D3 Ax0d7e C1	
+| 0x0D7F 3455		| uint8		| ^										| 00h 0			| ffh 255				| 5th sheet - PINDA temp 							| ^				| D3 Ax0d7f C1	
+| 0x0D80 3456		| char		| _6th Sheet block_						| 437573746f6d32| ffffffffffffff		| 6th sheet - Name: 	_Custom2_					| ^				| D3 Ax0d80 C7
+| 0x0D87 3463		| uint16	| ^										| 00 00h 0		| ff ffh 65535			| 6th sheet - Z offset 								| ^				| D3 Ax0d87 C2	
+| 0x0D89 3465		| uint8		| ^										| 00h 0			| ffh 255				| 6th sheet - bed temp 								| ^				| D3 Ax0d89 C1	
+| 0x0D8A 3466		| uint8		| ^										| 00h 0			| ffh 255				| 6th sheet - PINDA temp 							| ^				| D3 Ax0d8a C1	
+| 0x0D8B 3467		| char		| _7th Sheet block_						| 437573746f6d33| ffffffffffffff		| 7th sheet - Name: 	_Custom3_					| ^				| D3 Ax0d8b C7
+| 0x0D92 3474		| uint16	| ^										| 00 00h 0		| ff ffh 65535			| 7th sheet - Z offset 								| ^				| D3 Ax0d92 C2	
+| 0x0D94 3476		| uint8		| ^										| 00h 0			| ffh 255				| 7th sheet - bed temp 								| ^				| D3 Ax0d94 C1	
+| 0x0D95 3477		| uint8		| ^										| 00h 0			| ffh 255				| 7th sheet - PINDA temp 							| ^				| D3 Ax0d95 C1	
+| 0x0D96 3478		| char		| _8th Sheet block_						| 437573746f6d34| ffffffffffffff		| 8th sheet - Name: 	_Custom4_					| ^				| D3 Ax0d96 C7
+| 0x0D9D 3485		| uint16	| ^										| 00 00h 0		| ff ffh 65535			| 8th sheet - Z offset 								| ^				| D3 Ax0d9d C2	
+| 0x0D9F 3487		| uint8		| ^										| 00h 0			| ffh 255				| 8th sheet - bed temp 								| ^				| D3 Ax0d9f C1	
+| 0x0DA0 3488		| uint8		| ^										| 00h 0			| ffh 255				| 8th sheet - PINDA temp 							| ^				| D3 Ax0da0 C1	
+| 0x0DA1 3489		| uint8		| ???									| 00h 0			| ffh 255				| ???												| ???			| D3 Ax0da1 C1
+| 0x0D48 3400		| uint8		| EEPROM_FSENSOR_PCB					| ffh 255		| ffh 255				| Filament Sensor type IR unknown					| LCD Support	| D3 Ax0d48 C1
+| ^					| ^			| ^										| 00h 0			| ^						| Filament Sensor type IR 0.3 or older				| ^				| ^
+| ^					| ^			| ^										| 01h 1			| ^						| Filament Sensor type IR 0.4 or newer				| ^				| ^
+| 0x0D47 3399		| uint8		| EEPROM_FSENSOR_ACTION_NA				| 00h 0			| ffh 255				| Filament Sensor action: __Continue__				| LCD menu		| D3 Ax0d47 C1
+| ^					| ^			| ^										| 01h 1			| ^						| Filament Sensor action: __Pause__					| ^				| ^
+| 0x0D37 3383		| float		| EEPROM_UVLO_SAVED_TARGET				| ???			| ff ff ff ffh			| Power panic saved target all-axis					| ???			| D3 Ax0d37 C16
+| ^					| ^			| ^										| ???			| ^						| Power panic saved target e-axis					| ^				| D3 Ax0d43 C4
+| ^					| ^			| ^										| ???			| ^						| Power panic saved target z-axis					| ^				| D3 Ax0d3f C4
+| ^					| ^			| ^										| ???			| ^						| Power panic saved target y-axis					| ^				| D3 Ax0d3b C4
+| ^					| ^			| ^										| ???			| ^						| Power panic saved target x-axis					| ^				| D3 Ax0d37 C4
+| 0x0D35 3381		| uint16	| EEPROM_UVLO_FEEDMULTIPLY				| ???			| ff ffh 65355			| Power panic saved feed multiplier					| ???			| D3 Ax0d35 C2
+| 0x0D34 3380		| uint8		| EEPROM_BACKLIGHT_LEVEL_HIGH			| 00h - ffh 	| 82h 130				| LCD backlight bright:	__128__	Dim value to 255	| LCD menu		| D3 Ax0d34 C1
+| 0x0D33 3379		| uint8		| EEPROM_BACKLIGHT_LEVEL_LOW			| 00h - ffh		| 32h 50				| LCD backlight dim:	__50__ 	0 to Bright value	| LCD menu		| D3 Ax0d33 C1
+| 0x0D32 3378		| uint8		| EEPROM_BACKLIGHT_MODE					| 02h 2			| ffh 255				| LCD backlight mode: __Auto__						| LCD menu		| D3 Ax0d32 C1
+| ^					| ^			| ^										| 01h 1			| ^						| LCD backlight mode: __Bright__					| ^				| ^
+| ^					| ^			| ^										| 00h 0			| ^						| LCD backlight mode: __Dim__						| ^				| ^
+| 0x0D30 3376		| uint16	| EEPROM_BACKLIGHT_TIMEOUT				| 01 00 - ff ff | 0a 00h 65535			| LCD backlight timeout: __10__ seconds				| LCD menu		| D3 Ax0d30 C2
+| 0x0D2C 3372		| float		| EEPROM_UVLO_LA_K						| ???			| ff ff ff ffh			| Power panic saved Linear Advanced K value			| ???			| D3 Ax0d2c C4
+| 0x0D2B 3371		| uint8		| EEPROM_ALTFAN_OVERRIDE				| ffh 255		| ffh 255				| ALTFAN override unknown state						| LCD menu		| D3 Ax0d2b C1
+| ^					| ^			| ^										| 00h 0			| ^						| ALTFAN override deactivated						| ^				| ^
+| ^					| ^			| ^										| 01h 1			| ^						| ALTFAN override activated 						| ^				| ^
+| 0x0D2A 3370		| uint8		| EEPROM_EXPERIMENTAL_VISIBILITY		| ffh 255		| ffh 255				| Experimental menu visibility unknown state		| LCD menu		| D3 Ax0d2a C1
+| ^					| ^			| ^										| 00h 0			| ^						| Experimental menu visibility hidden				| ^				| ^
+| ^					| ^			| ^										| 01h 1			| ^						| Experimental menu visibility visible				| ^				| ^
+
+  
+| Address begin		| Bit/Type 	| Name 									| Valid values	| Default/FactoryReset	| Description 										| Gcode/Function| Debug code
+| :--:				| :--: 		| :--: 									| :--:			| :--:					| :--:												| :--:			| :--:
+| 0x0012 18			| uint16	| EEPROM_FIRMWARE_VERSION_END			| ???			| ff ffh 65535			| ???												| ???			| D3 Ax0012 C2
+| 0x0010 16			| uint16	| EEPROM_FIRMWARE_VERSION_FLAVOR		| ???			| ff ffh 65535			| ???												| ???			| D3 Ax0010 C2
+| 0x000E 14			| uint16	| EEPROM_FIRMWARE_VERSION_REVISION		| ???			| ff ffh 65535			| Firmware version revision number DEV/ALPHA/BETA/RC| ???			| D3 Ax000e C2
+| 0x000C 12			| uint16	| EEPROM_FIRMWARE_VERSION_MINOR			| ???			| ff ffh 65535			| Firmware version minor number						| ???			| D3 Ax000c C2
+| 0x000A 10			| uint16	| EEPROM_FIRMWARE_VERSION_MAJOR			| ???			| ff ffh 65535			| Firmware version major number 					| ???			| D3 Ax000a C2
+| 0x0000 0			| char		| FW_PRUSA3D_MAGIC						| ???			| ffffffffffffffffffff	| __`PRUSA3DFW`__				 					| ???			| D3 Ax0000 C10
+*/
 
 #define EEPROM_EMPTY_VALUE 0xFF
 #define EEPROM_EMPTY_VALUE16 0xFFFF
@@ -51,7 +401,8 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 // The offsets are saved as 16bit signed int, scaled to tenths of microns.
 #define EEPROM_BED_CALIBRATION_Z_JITTER   (EEPROM_BED_CALIBRATION_VEC_Y-2*8)
 #define EEPROM_FARM_MODE (EEPROM_BED_CALIBRATION_Z_JITTER-1)
-#define EEPROM_FARM_NUMBER (EEPROM_FARM_MODE-3)
+#define EEPROM_FREE_NR1 (EEPROM_FARM_MODE-1)
+#define EEPROM_FARM_NUMBER (EEPROM_FREE_NR1-2)
 
 // Correction of the bed leveling, in micrometers.
 // Maximum 50 micrometers allowed.
@@ -72,19 +423,23 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 #define EEPROM_FILENAME (EEPROM_UVLO_CURRENT_POSITION - 8) //8chars to store filename without extension
 #define EEPROM_FILE_POSITION (EEPROM_FILENAME - 4) //32 bit for uint32_t file position 
 #define EEPROM_UVLO_CURRENT_POSITION_Z	(EEPROM_FILE_POSITION - 4) //float for current position in Z
-#define EEPROM_UVLO_TARGET_HOTEND		(EEPROM_UVLO_CURRENT_POSITION_Z - 1)
-#define EEPROM_UVLO_TARGET_BED			(EEPROM_UVLO_TARGET_HOTEND - 1)
+#define EEPROM_UVLO_UNUSED_001		(EEPROM_UVLO_CURRENT_POSITION_Z - 1) // uint8_t (unused)
+#define EEPROM_UVLO_TARGET_BED			(EEPROM_UVLO_UNUSED_001 - 1)
 #define EEPROM_UVLO_FEEDRATE			(EEPROM_UVLO_TARGET_BED - 2) //uint16_t
 #define EEPROM_UVLO_FAN_SPEED			(EEPROM_UVLO_FEEDRATE - 1) 
 #define EEPROM_FAN_CHECK_ENABLED		(EEPROM_UVLO_FAN_SPEED - 1)
 #define EEPROM_UVLO_MESH_BED_LEVELING     (EEPROM_FAN_CHECK_ENABLED - 9*2)
 
-#define EEPROM_UVLO_Z_MICROSTEPS     (EEPROM_UVLO_MESH_BED_LEVELING - 2)
+#define EEPROM_UVLO_Z_MICROSTEPS     (EEPROM_UVLO_MESH_BED_LEVELING - 2) // uint16_t (could be removed)
 #define EEPROM_UVLO_E_ABS            (EEPROM_UVLO_Z_MICROSTEPS - 1)
 #define EEPROM_UVLO_CURRENT_POSITION_E	(EEPROM_UVLO_E_ABS - 4)                 //float for current position in E
 
+#define EEPROM_FREE_NR2         (EEPROM_UVLO_CURRENT_POSITION_E - 1)			// FREE EEPROM SPACE
+#define EEPROM_FREE_NR3         (EEPROM_FREE_NR2 - 1)							// FREE EEPROM SPACE
+#define EEPROM_FREE_NR4         (EEPROM_FREE_NR3 - 1)							// FREE EEPROM SPACE
+#define EEPROM_FREE_NR5         (EEPROM_FREE_NR4 - 1)							// FREE EEPROM SPACE
 // Crash detection mode EEPROM setting 
-#define EEPROM_CRASH_DET         (EEPROM_UVLO_CURRENT_POSITION_E - 5)           // float (orig EEPROM_UVLO_MESH_BED_LEVELING-12) 
+#define EEPROM_CRASH_DET         (EEPROM_FREE_NR5 - 1)       				    // uint8 (orig EEPROM_UVLO_MESH_BED_LEVELING-12) 
 // Crash detection counter Y (last print)
 #define EEPROM_CRASH_COUNT_Y       (EEPROM_CRASH_DET - 1)                       // uint8 (orig EEPROM_UVLO_MESH_BED_LEVELING-15)
 // Filament sensor on/off EEPROM setting 
@@ -165,13 +520,11 @@ static_assert(sizeof(Sheets) == EEPROM_SHEETS_SIZEOF, "Sizeof(Sheets) is not EEP
 #define EEPROM_EXTRUDER_MULTIPLIER_2 (EEPROM_EXTRUDER_MULTIPLIER_1 - 4)                        //float
 #define EEPROM_EXTRUDEMULTIPLY (EEPROM_EXTRUDER_MULTIPLIER_2 - 2)                              // uint16
 
-//
 #define EEPROM_UVLO_TINY_CURRENT_POSITION_Z (EEPROM_EXTRUDEMULTIPLY-4) // float
-#define EEPROM_UVLO_TINY_Z_MICROSTEPS (EEPROM_UVLO_TINY_CURRENT_POSITION_Z-2) // uint16
+#define EEPROM_UVLO_TARGET_HOTEND (EEPROM_UVLO_TINY_CURRENT_POSITION_Z-2) // uint16
 
 // Sound Mode
-//#define EEPROM_SOUND_MODE (EEPROM_EXTRUDEMULTIPLY-1) // uint8
-#define EEPROM_SOUND_MODE (EEPROM_UVLO_TINY_Z_MICROSTEPS-1) // uint8
+#define EEPROM_SOUND_MODE (EEPROM_UVLO_TARGET_HOTEND-1) // uint8
 #define EEPROM_AUTO_DEPLETE (EEPROM_SOUND_MODE-1) //bool
 
 #define EEPROM_FSENS_OQ_MEASS_ENABLED (EEPROM_AUTO_DEPLETE - 1) //bool
@@ -212,9 +565,13 @@ static Sheets * const EEPROM_Sheets_base = (Sheets*)(EEPROM_SHEETS_BASE);
 #define EEPROM_BACKLIGHT_MODE (EEPROM_BACKLIGHT_LEVEL_LOW-1) // uint8
 #define EEPROM_BACKLIGHT_TIMEOUT (EEPROM_BACKLIGHT_MODE-2) // uint16
 
+#define EEPROM_UVLO_LA_K (EEPROM_BACKLIGHT_TIMEOUT-4) // float
+
+#define EEPROM_ALTFAN_OVERRIDE (EEPROM_UVLO_LA_K-1) //uint8
+#define EEPROM_EXPERIMENTAL_VISIBILITY (EEPROM_ALTFAN_OVERRIDE-1) //uint8
 
 //This is supposed to point to last item to allow EEPROM overrun check. Please update when adding new items.
-#define EEPROM_LAST_ITEM EEPROM_BACKLIGHT_TIMEOUT
+#define EEPROM_LAST_ITEM EEPROM_EXPERIMENTAL_VISIBILITY
 // !!!!!
 // !!!!! this is end of EEPROM section ... all updates MUST BE inserted before this mark !!!!!
 // !!!!!

+ 1 - 1
Firmware/fastio.h

@@ -58,7 +58,7 @@
 #define	_GET_OUTPUT(IO)  ((DIO ## IO ## _DDR & MASK(DIO ## IO ## _PIN)) != 0)
 
 /// check if pin is an timer
-#define	_GET_TIMER(IO)  ((DIO ## IO ## _PWM)
+#define	_GET_TIMER(IO)  (DIO ## IO ## _PWM)
 
 //  why double up on these macros? see http://gcc.gnu.org/onlinedocs/cpp/Stringification.html
 

+ 336 - 241
Firmware/fsensor.cpp

@@ -6,12 +6,9 @@
 #include <avr/pgmspace.h>
 #include "pat9125.h"
 #include "stepper.h"
-#include "planner.h"
-#include "fastio.h"
 #include "io_atmega2560.h"
 #include "cmdqueue.h"
 #include "ultralcd.h"
-#include "ConfigurationStore.h"
 #include "mmu.h"
 #include "cardreader.h"
 
@@ -21,19 +18,19 @@
 
 //! @name Basic parameters
 //! @{
-#define FSENSOR_CHUNK_LEN    0.64F  //!< filament sensor chunk length 0.64mm
-#define FSENSOR_ERR_MAX         17  //!< filament sensor maximum error count for runout detection
+#define FSENSOR_CHUNK_LEN      1.25 //!< filament sensor chunk length (mm)
+#define FSENSOR_ERR_MAX           4 //!< filament sensor maximum error/chunk count for runout detection
+
+#define FSENSOR_SOFTERR_CMAX      3 //!< number of contiguous soft failures before a triggering a runout
+#define FSENSOR_SOFTERR_DELTA 30000 //!< maximum interval (ms) to consider soft failures contiguous
 //! @}
 
 //! @name Optical quality measurement parameters
 //! @{
-#define FSENSOR_OQ_MAX_ES      6    //!< maximum error sum while loading (length ~64mm = 100chunks)
-#define FSENSOR_OQ_MAX_EM      2    //!< maximum error counter value while loading
-#define FSENSOR_OQ_MIN_YD      2    //!< minimum yd per chunk (applied to avg value)
-#define FSENSOR_OQ_MAX_YD      200  //!< maximum yd per chunk (applied to avg value)
-#define FSENSOR_OQ_MAX_PD      4    //!< maximum positive deviation (= yd_max/yd_avg)
-#define FSENSOR_OQ_MAX_ND      5    //!< maximum negative deviation (= yd_avg/yd_min)
-#define FSENSOR_OQ_MAX_SH      13   //!< maximum shutter value
+#define FSENSOR_OQ_MAX_ES      2    //!< maximum sum of error blocks during filament recheck
+#define FSENSOR_OQ_MIN_YD      2    //!< minimum yd sum during filament check (counts per inch)
+#define FSENSOR_OQ_MIN_BR      80   //!< minimum brightness value
+#define FSENSOR_OQ_MAX_SH      10   //!< maximum shutter value
 //! @}
 
 const char ERRMSG_PAT9125_NOT_RESP[] PROGMEM = "PAT9125 not responding (%d)!\n";
@@ -47,28 +44,35 @@ const char ERRMSG_PAT9125_NOT_RESP[] PROGMEM = "PAT9125 not responding (%d)!\n";
 #define FSENSOR_INT_PIN_PCMSK_BIT PCINT13         // PinChange Interrupt / PinChange Enable Mask @ PJ4
 #define FSENSOR_INT_PIN_PCICR_BIT PCIE1           // PinChange Interrupt Enable / Flag @ PJ4
 
-//uint8_t fsensor_int_pin = FSENSOR_INT_PIN;
-uint8_t fsensor_int_pin_old = 0;
-int16_t fsensor_chunk_len = 0;
-
 //! enabled = initialized and sampled every chunk event
 bool fsensor_enabled = true;
 //! runout watching is done in fsensor_update (called from main loop)
 bool fsensor_watch_runout = true;
 //! not responding - is set if any communication error occurred during initialization or readout
 bool fsensor_not_responding = false;
+
+#ifdef PAT9125
+uint8_t fsensor_int_pin_old = 0;
+//! optical checking "chunk lenght" (already in steps)
+int16_t fsensor_chunk_len = 0;
 //! enable/disable quality meassurement
 bool fsensor_oq_meassure_enabled = false;
-
 //! number of errors, updated in ISR
 uint8_t fsensor_err_cnt = 0;
 //! variable for accumulating step count (updated callbacks from stepper and ISR)
 int16_t fsensor_st_cnt = 0;
-//! last dy value from pat9125 sensor (used in ISR)
-int16_t fsensor_dy_old = 0;
+//! count of total sensor "soft" failures (filament status checks)
+uint8_t fsensor_softfail = 0;
+//! timestamp of last soft failure
+unsigned long fsensor_softfail_last = 0;
+//! count of soft failures within the configured time
+uint8_t fsensor_softfail_ccnt = 0;
+#endif
 
+#ifdef DEBUG_FSENSOR_LOG
 //! log flag: 0=log disabled, 1=log enabled
 uint8_t fsensor_log = 1;
+#endif //DEBUG_FSENSOR_LOG
 
 
 //! @name filament autoload variables
@@ -78,6 +82,8 @@ uint8_t fsensor_log = 1;
 bool fsensor_autoload_enabled = true;
 //! autoload watching enable/disable flag
 bool fsensor_watch_autoload = false;
+
+#ifdef PAT9125
 //
 uint16_t fsensor_autoload_y;
 //
@@ -87,6 +93,7 @@ uint32_t fsensor_autoload_last_millis;
 //
 uint8_t fsensor_autoload_sum;
 //! @}
+#endif
 
 
 //! @name filament optical quality measurement variables
@@ -114,7 +121,7 @@ int16_t fsensor_oq_yd_max;
 uint16_t fsensor_oq_sh_sum;
 //! @}
 
-#if IR_SENSOR_ANALOG
+#ifdef IR_SENSOR_ANALOG
 ClFsensorPCB oFsensorPCB;
 ClFsensorActionNA oFsensorActionNA;
 bool bIRsensorStateFlag=false;
@@ -124,14 +131,34 @@ unsigned long nIRsensorLastTime;
 void fsensor_stop_and_save_print(void)
 {
     printf_P(PSTR("fsensor_stop_and_save_print\n"));
-    stop_and_save_print_to_ram(0, 0); //XYZE - no change
+    stop_and_save_print_to_ram(0, 0);
+    fsensor_watch_runout = false;
+}
+
+#ifdef PAT9125
+// Reset all internal counters to zero, including stepper callbacks
+void fsensor_reset_err_cnt()
+{
+    fsensor_err_cnt = 0;
+    pat9125_y = 0;
+    st_reset_fsensor();
+}
+
+void fsensor_set_axis_steps_per_unit(float u)
+{
+    fsensor_chunk_len = (int16_t)(FSENSOR_CHUNK_LEN * u);
 }
+#endif
+
 
 void fsensor_restore_print_and_continue(void)
 {
     printf_P(PSTR("fsensor_restore_print_and_continue\n"));
-	fsensor_err_cnt = 0;
-    restore_print_from_ram_and_continue(0); //XYZ = orig, E - no change
+    fsensor_watch_runout = true;
+#ifdef PAT9125
+    fsensor_reset_err_cnt();
+#endif
+    restore_print_from_ram_and_continue(0);
 }
 
 // fsensor_checkpoint_print cuts the current print job at the current position,
@@ -143,43 +170,65 @@ void fsensor_checkpoint_print(void)
     restore_print_from_ram_and_continue(0);
 }
 
+#ifdef IR_SENSOR_ANALOG
+const char* FsensorIRVersionText()
+{
+	switch(oFsensorPCB)
+	{
+		case ClFsensorPCB::_Old:
+			return _T(MSG_IR_03_OR_OLDER);
+		case ClFsensorPCB::_Rev04:
+			return _T(MSG_IR_04_OR_NEWER);
+		default:
+			return _T(MSG_IR_UNKNOWN);
+	}
+}
+#endif //IR_SENSOR_ANALOG
+
 void fsensor_init(void)
 {
 #ifdef PAT9125
 	uint8_t pat9125 = pat9125_init();
-     printf_P(PSTR("PAT9125_init:%hhu\n"), pat9125);
+	printf_P(PSTR("PAT9125_init:%hhu\n"), pat9125);
 #endif //PAT9125
-	uint8_t fsensor = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR);
+	uint8_t fsensor_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENSOR);
 	fsensor_autoload_enabled=eeprom_read_byte((uint8_t*)EEPROM_FSENS_AUTOLOAD_ENABLED);
-     fsensor_not_responding = false;
+	fsensor_not_responding = false;
 #ifdef PAT9125
 	uint8_t oq_meassure_enabled = eeprom_read_byte((uint8_t*)EEPROM_FSENS_OQ_MEASS_ENABLED);
 	fsensor_oq_meassure_enabled = (oq_meassure_enabled == 1)?true:false;
-	fsensor_chunk_len = (int16_t)(FSENSOR_CHUNK_LEN * cs.axis_steps_per_unit[E_AXIS]);
-
-	if (!pat9125)
-	{
-		fsensor = 0; //disable sensor
+	fsensor_set_axis_steps_per_unit(cs.axis_steps_per_unit[E_AXIS]);
+	
+	if (!pat9125){
+		fsensor_enabled = 0; //disable sensor
 		fsensor_not_responding = true;
 	}
 #endif //PAT9125
-#if IR_SENSOR_ANALOG
-     bIRsensorStateFlag=false;
-     oFsensorPCB=(ClFsensorPCB)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB);
-     oFsensorActionNA=(ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA);
+#ifdef IR_SENSOR_ANALOG
+	bIRsensorStateFlag=false;
+	oFsensorPCB = (ClFsensorPCB)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_PCB);
+	oFsensorActionNA = (ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA);
+
+	// If the fsensor is not responding even at the start of the printer,
+	// set this flag accordingly to show N/A in Settings->Filament sensor.
+	// This is even valid for both fsensor board revisions (0.3 or older and 0.4).
+	// Must be done after reading what type of fsensor board we have
+	fsensor_not_responding = ! fsensor_IR_check();
 #endif //IR_SENSOR_ANALOG
-	if (fsensor)
+	if (fsensor_enabled){
 		fsensor_enable(false);                  // (in this case) EEPROM update is not necessary
-	else
+	} else {
 		fsensor_disable(false);                 // (in this case) EEPROM update is not necessary
+	}
 	printf_P(PSTR("FSensor %S"), (fsensor_enabled?PSTR("ENABLED"):PSTR("DISABLED")));
-#if IR_SENSOR_ANALOG
-     printf_P(PSTR(" (sensor board revision: %S)\n"),(oFsensorPCB==ClFsensorPCB::_Rev03b)?PSTR("03b or newer"):PSTR("03 or older"));
+#ifdef IR_SENSOR_ANALOG
+	printf_P(PSTR(" (sensor board revision:%S)\n"), FsensorIRVersionText());
 #else //IR_SENSOR_ANALOG
-     printf_P(PSTR("\n"));
+	MYSERIAL.println();
 #endif //IR_SENSOR_ANALOG
-	if (check_for_ir_sensor()) ir_sensor_detected = true;
-
+	if (check_for_ir_sensor()){
+		ir_sensor_detected = true;
+	}
 }
 
 bool fsensor_enable(bool bUpdateEEPROM)
@@ -195,8 +244,7 @@ bool fsensor_enable(bool bUpdateEEPROM)
 		fsensor_enabled = pat9125 ? true : false;
 		fsensor_watch_runout = true;
 		fsensor_oq_meassure = false;
-		fsensor_err_cnt = 0;
-		fsensor_dy_old = 0;
+        fsensor_reset_err_cnt();
 		eeprom_update_byte((uint8_t*)EEPROM_FSENSOR, fsensor_enabled ? 0x01 : 0x00);
 		FSensorStateMenu = fsensor_enabled ? 1 : 0;
 	}
@@ -207,7 +255,7 @@ bool fsensor_enable(bool bUpdateEEPROM)
 		FSensorStateMenu = 1;
 	}
 #else // PAT9125
-#if IR_SENSOR_ANALOG
+#ifdef IR_SENSOR_ANALOG
      if(!fsensor_IR_check())
           {
           bUpdateEEPROM=true;
@@ -220,7 +268,7 @@ bool fsensor_enable(bool bUpdateEEPROM)
      fsensor_enabled=true;
      fsensor_not_responding=false;
      FSensorStateMenu=1;
-#if IR_SENSOR_ANALOG
+#ifdef IR_SENSOR_ANALOG
           }
 #endif //IR_SENSOR_ANALOG
      if(bUpdateEEPROM)
@@ -261,7 +309,7 @@ void fsensor_autoload_check_start(void)
 	if (!fsensor_enabled) return;
 	if (!fsensor_autoload_enabled) return;
 	if (fsensor_watch_autoload) return;
-	if (!pat9125_update_y()) //update sensor
+	if (!pat9125_update()) //update sensor
 	{
 		fsensor_disable();
 		fsensor_not_responding = true;
@@ -276,12 +324,11 @@ void fsensor_autoload_check_start(void)
 	fsensor_autoload_last_millis = _millis();
 	fsensor_watch_runout = false;
 	fsensor_watch_autoload = true;
-	fsensor_err_cnt = 0;
 }
 
+
 void fsensor_autoload_check_stop(void)
 {
-
 //	puts_P(_N("fsensor_autoload_check_stop\n"));
 	if (!fsensor_enabled) return;
 //	puts_P(_N("fsensor_autoload_check_stop 1\n"));
@@ -292,7 +339,7 @@ void fsensor_autoload_check_stop(void)
 	fsensor_autoload_sum = 0;
 	fsensor_watch_autoload = false;
 	fsensor_watch_runout = true;
-	fsensor_err_cnt = 0;
+    fsensor_reset_err_cnt();
 }
 #endif //PAT9125
 
@@ -357,6 +404,7 @@ bool fsensor_check_autoload(void)
 	return false;
 }
 
+#ifdef PAT9125
 void fsensor_oq_meassure_set(bool State)
 {
 	fsensor_oq_meassure_enabled = State;
@@ -374,12 +422,11 @@ void fsensor_oq_meassure_start(uint8_t skip)
 	fsensor_oq_yd_sum = 0;
 	fsensor_oq_er_sum = 0;
 	fsensor_oq_er_max = 0;
-	fsensor_oq_yd_min = FSENSOR_OQ_MAX_YD;
+	fsensor_oq_yd_min = INT16_MAX;
 	fsensor_oq_yd_max = 0;
 	fsensor_oq_sh_sum = 0;
 	pat9125_update();
 	pat9125_y = 0;
-	fsensor_watch_runout = false;
 	fsensor_oq_meassure = true;
 }
 
@@ -391,10 +438,9 @@ void fsensor_oq_meassure_stop(void)
 	printf_P(_N(" st_sum=%u yd_sum=%u er_sum=%u er_max=%hhu\n"), fsensor_oq_st_sum, fsensor_oq_yd_sum, fsensor_oq_er_sum, fsensor_oq_er_max);
 	printf_P(_N(" yd_min=%u yd_max=%u yd_avg=%u sh_avg=%u\n"), fsensor_oq_yd_min, fsensor_oq_yd_max, (uint16_t)((uint32_t)fsensor_oq_yd_sum * fsensor_chunk_len / fsensor_oq_st_sum), (uint16_t)(fsensor_oq_sh_sum / fsensor_oq_samples));
 	fsensor_oq_meassure = false;
-	fsensor_watch_runout = true;
-	fsensor_err_cnt = 0;
 }
 
+#ifdef FSENSOR_QUALITY
 const char _OK[] PROGMEM = "OK";
 const char _NG[] PROGMEM = "NG!";
 
@@ -430,18 +476,10 @@ bool fsensor_oq_result(void)
 	printf_P(_N("fsensor_oq_result %S\n"), (res?_OK:_NG));
 	return res;
 }
-#ifdef PAT9125
-ISR(FSENSOR_INT_PIN_VECT)
+#endif //FSENSOR_QUALITY
+
+FORCE_INLINE static void fsensor_isr(int st_cnt)
 {
-	if (mmu_enabled || ir_sensor_detected) return;
-	if (!((fsensor_int_pin_old ^ FSENSOR_INT_PIN_PIN_REG) & FSENSOR_INT_PIN_MASK)) return;
-	fsensor_int_pin_old = FSENSOR_INT_PIN_PIN_REG;
-	static bool _lock = false;
-	if (_lock) return;
-	_lock = true;
-	int st_cnt = fsensor_st_cnt;
-	fsensor_st_cnt = 0;
-	sei();
 	uint8_t old_err_cnt = fsensor_err_cnt;
 	uint8_t pat9125_res = fsensor_oq_meassure?pat9125_update():pat9125_update_y();
 	if (!pat9125_res)
@@ -450,56 +488,71 @@ ISR(FSENSOR_INT_PIN_VECT)
 		fsensor_not_responding = true;
 		printf_P(ERRMSG_PAT9125_NOT_RESP, 1);
 	}
+
 	if (st_cnt != 0)
-	{ //movement
-		if (st_cnt > 0) //positive movement
-		{
-			if (pat9125_y < 0)
-			{
-				if (fsensor_err_cnt)
-					fsensor_err_cnt += 2;
-				else
-					fsensor_err_cnt++;
-			}
-			else if (pat9125_y > 0)
-			{
-				if (fsensor_err_cnt)
-					fsensor_err_cnt--;
-			}
-			else //(pat9125_y == 0)
-				if (((fsensor_dy_old <= 0) || (fsensor_err_cnt)) && (st_cnt > (fsensor_chunk_len >> 1)))
-					fsensor_err_cnt++;
-			if (fsensor_oq_meassure)
-			{
-				if (fsensor_oq_skipchunk)
-				{
-					fsensor_oq_skipchunk--;
-					fsensor_err_cnt = 0;
-				}
-				else
-				{
-					if (st_cnt == fsensor_chunk_len)
-					{
-						if (pat9125_y > 0) if (fsensor_oq_yd_min > pat9125_y) fsensor_oq_yd_min = (fsensor_oq_yd_min + pat9125_y) / 2;
-						if (pat9125_y >= 0) if (fsensor_oq_yd_max < pat9125_y) fsensor_oq_yd_max = (fsensor_oq_yd_max + pat9125_y) / 2;
-					}
-					fsensor_oq_samples++;
-					fsensor_oq_st_sum += st_cnt;
-					if (pat9125_y > 0) fsensor_oq_yd_sum += pat9125_y;
-					if (fsensor_err_cnt > old_err_cnt)
-						fsensor_oq_er_sum += (fsensor_err_cnt - old_err_cnt);
-					if (fsensor_oq_er_max < fsensor_err_cnt)
-						fsensor_oq_er_max = fsensor_err_cnt;
-					fsensor_oq_sh_sum += pat9125_s;
-				}
-			}
-		}
-		else //negative movement
-		{
-		}
-	}
-	else
-	{ //no movement
+	{
+        // movement was planned, check for sensor movement
+        int8_t st_dir = st_cnt >= 0;
+        int8_t pat9125_dir = pat9125_y >= 0;
+
+        if (pat9125_y == 0)
+        {
+            if (st_dir)
+            {
+                // no movement detected: we might be within a blind sensor range,
+                // update the frame and shutter parameters we didn't earlier
+                if (!fsensor_oq_meassure)
+                    pat9125_update_bs();
+
+                // increment the error count only if underexposed: filament likely missing
+                if ((pat9125_b < FSENSOR_OQ_MIN_BR) && (pat9125_s > FSENSOR_OQ_MAX_SH))
+                {
+                    // check for a dark frame (<30% avg brightness) with long exposure
+                    ++fsensor_err_cnt;
+                }
+                else
+                {
+                    // good frame, filament likely present
+                    if(fsensor_err_cnt) --fsensor_err_cnt;
+                }
+            }
+        }
+        else if (pat9125_dir != st_dir)
+        {
+            // detected direction opposite of motor movement
+            if (st_dir) ++fsensor_err_cnt;
+        }
+        else if (pat9125_dir == st_dir)
+        {
+            // direction agreeing with planned movement
+            if (fsensor_err_cnt) --fsensor_err_cnt;
+        }
+
+        if (st_dir && fsensor_oq_meassure)
+        {
+            // extruding with quality assessment
+            if (fsensor_oq_skipchunk)
+            {
+                fsensor_oq_skipchunk--;
+                fsensor_err_cnt = 0;
+            }
+            else
+            {
+                if (st_cnt == fsensor_chunk_len)
+                {
+                    if (pat9125_y > 0) if (fsensor_oq_yd_min > pat9125_y) fsensor_oq_yd_min = (fsensor_oq_yd_min + pat9125_y) / 2;
+                    if (pat9125_y >= 0) if (fsensor_oq_yd_max < pat9125_y) fsensor_oq_yd_max = (fsensor_oq_yd_max + pat9125_y) / 2;
+                }
+                fsensor_oq_samples++;
+                fsensor_oq_st_sum += st_cnt;
+                if (pat9125_y > 0) fsensor_oq_yd_sum += pat9125_y;
+                if (fsensor_err_cnt > old_err_cnt)
+                    fsensor_oq_er_sum += (fsensor_err_cnt - old_err_cnt);
+                if (fsensor_oq_er_max < fsensor_err_cnt)
+                    fsensor_oq_er_max = fsensor_err_cnt;
+                fsensor_oq_sh_sum += pat9125_s;
+            }
+        }
 	}
 
 #ifdef DEBUG_FSENSOR_LOG
@@ -510,11 +563,29 @@ ISR(FSENSOR_INT_PIN_VECT)
 	}
 #endif //DEBUG_FSENSOR_LOG
 
-	fsensor_dy_old = pat9125_y;
 	pat9125_y = 0;
+}
 
-	_lock = false;
-	return;
+ISR(FSENSOR_INT_PIN_VECT)
+{
+    if (mmu_enabled || ir_sensor_detected) return;
+    if (!((fsensor_int_pin_old ^ FSENSOR_INT_PIN_PIN_REG) & FSENSOR_INT_PIN_MASK)) return;
+    fsensor_int_pin_old = FSENSOR_INT_PIN_PIN_REG;
+
+    // prevent isr re-entry
+    static bool _lock = false;
+    if (!_lock)
+    {
+        // fetch fsensor_st_cnt atomically
+        int st_cnt = fsensor_st_cnt;
+        fsensor_st_cnt = 0;
+
+        _lock = true;
+        sei();
+        fsensor_isr(st_cnt);
+        cli();
+        _lock = false;
+    }
 }
 
 void fsensor_setup_interrupt(void)
@@ -532,31 +603,16 @@ void fsensor_setup_interrupt(void)
      PCICR |= bit(FSENSOR_INT_PIN_PCICR_BIT);     // enable corresponding PinChangeInterrupt (set of pins)
 }
 
-#endif //PAT9125
-
-void fsensor_st_block_begin(block_t* bl)
+void fsensor_st_block_chunk(int cnt)
 {
 	if (!fsensor_enabled) return;
-	if (((fsensor_st_cnt > 0) && (bl->direction_bits & 0x8)) || 
-		((fsensor_st_cnt < 0) && !(bl->direction_bits & 0x8)))
-	{
-// !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins
-		if (PIN_GET(FSENSOR_INT_PIN)) {PIN_VAL(FSENSOR_INT_PIN, LOW);}
-		else {PIN_VAL(FSENSOR_INT_PIN, HIGH);}
-	}
-}
+	fsensor_st_cnt += cnt;
 
-void fsensor_st_block_chunk(block_t* bl, int cnt)
-{
-	if (!fsensor_enabled) return;
-	fsensor_st_cnt += (bl->direction_bits & 0x8)?-cnt:cnt;
-	if ((fsensor_st_cnt >= fsensor_chunk_len) || (fsensor_st_cnt <= -fsensor_chunk_len))
-	{
-// !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins
-		if (PIN_GET(FSENSOR_INT_PIN)) {PIN_VAL(FSENSOR_INT_PIN, LOW);}
-		else {PIN_VAL(FSENSOR_INT_PIN, HIGH);}
-	}
+    // !!! bit toggling (PINxn <- 1) (for PinChangeInterrupt) does not work for some MCU pins
+    if (PIN_GET(FSENSOR_INT_PIN)) {PIN_VAL(FSENSOR_INT_PIN, LOW);}
+    else {PIN_VAL(FSENSOR_INT_PIN, HIGH);}
 }
+#endif //PAT9125
 
 
 //! Common code for enqueing M600 and supplemental codes into the command queue.
@@ -576,119 +632,158 @@ void fsensor_enque_M600(){
 void fsensor_update(void)
 {
 #ifdef PAT9125
-		if (fsensor_enabled && fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX))
-		{
-			bool autoload_enabled_tmp = fsensor_autoload_enabled;
-			fsensor_autoload_enabled = false;
-			bool oq_meassure_enabled_tmp = fsensor_oq_meassure_enabled;
-			fsensor_oq_meassure_enabled = true;
-
-			fsensor_stop_and_save_print();
-
-			fsensor_err_cnt = 0;
-			fsensor_oq_meassure_start(0);
-
-			enquecommand_front_P((PSTR("G1 E-3 F200")));
-			process_commands();
-			KEEPALIVE_STATE(IN_HANDLER);
-			cmdqueue_pop_front();
-			st_synchronize();
-
-			enquecommand_front_P((PSTR("G1 E3 F200")));
-			process_commands();
-			KEEPALIVE_STATE(IN_HANDLER);
-			cmdqueue_pop_front();
-			st_synchronize();
-
-			uint8_t err_cnt = fsensor_err_cnt;
-			fsensor_oq_meassure_stop();
-
-			bool err = false;
-			err |= (err_cnt > 1);
-
-			err |= (fsensor_oq_er_sum > 2);
-			err |= (fsensor_oq_yd_sum < (4 * FSENSOR_OQ_MIN_YD));
+    if (fsensor_watch_runout && (fsensor_err_cnt > FSENSOR_ERR_MAX))
+        {
+            fsensor_stop_and_save_print();
+            KEEPALIVE_STATE(IN_HANDLER);
+
+            bool autoload_enabled_tmp = fsensor_autoload_enabled;
+            fsensor_autoload_enabled = false;
+            bool oq_meassure_enabled_tmp = fsensor_oq_meassure_enabled;
+            fsensor_oq_meassure_enabled = true;
+
+            // move the nozzle away while checking the filament
+            current_position[Z_AXIS] += 0.8;
+            if(current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
+            plan_buffer_line_curposXYZE(max_feedrate[Z_AXIS]);
+            st_synchronize();
+
+            // check the filament in isolation
+            fsensor_reset_err_cnt();
+            fsensor_oq_meassure_start(0);
+            float e_tmp = current_position[E_AXIS];
+            current_position[E_AXIS] -= 3;
+            plan_buffer_line_curposXYZE(250/60);
+            current_position[E_AXIS] = e_tmp;
+            plan_buffer_line_curposXYZE(200/60);
+            st_synchronize();
+            fsensor_oq_meassure_stop();
+
+            bool err = false;
+            err |= (fsensor_err_cnt > 0);                   // final error count is non-zero
+            err |= (fsensor_oq_er_sum > FSENSOR_OQ_MAX_ES); // total error count is above limit
+            err |= (fsensor_oq_yd_sum < FSENSOR_OQ_MIN_YD); // total measured distance is below limit
 
             fsensor_restore_print_and_continue();
-			fsensor_autoload_enabled = autoload_enabled_tmp;
-			fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp;
-
-			if (!err)
-				printf_P(PSTR("fsensor_err_cnt = 0\n"));
-			else
-				fsensor_enque_M600();
-		}
+            fsensor_autoload_enabled = autoload_enabled_tmp;
+            fsensor_oq_meassure_enabled = oq_meassure_enabled_tmp;
+            unsigned long now = _millis();
+            if (!err && (now - fsensor_softfail_last) > FSENSOR_SOFTERR_DELTA)
+                fsensor_softfail_ccnt = 0;
+            if (!err && fsensor_softfail_ccnt <= FSENSOR_SOFTERR_CMAX)
+            {
+                printf_P(PSTR("fsensor_err_cnt = 0\n"));
+                ++fsensor_softfail;
+                ++fsensor_softfail_ccnt;
+                fsensor_softfail_last = now;
+            }
+            else
+            {
+                fsensor_softfail_ccnt = 0;
+                fsensor_softfail_last = 0;
+                fsensor_enque_M600();
+            }
+        }
 #else //PAT9125
-		if (CHECK_FSENSOR && fsensor_enabled && ir_sensor_detected)
+        if (CHECK_FSENSOR && ir_sensor_detected)
         {
-               if(digitalRead(IR_SENSOR_PIN))
-               {                                  // IR_SENSOR_PIN ~ H
-#if IR_SENSOR_ANALOG
-                    if(!bIRsensorStateFlag)
+            if(digitalRead(IR_SENSOR_PIN))
+            {                                  // IR_SENSOR_PIN ~ H
+#ifdef IR_SENSOR_ANALOG
+                if(!bIRsensorStateFlag)
+                {
+                    bIRsensorStateFlag=true;
+                    nIRsensorLastTime=_millis();
+                }
+                else
+                {
+                    if((_millis()-nIRsensorLastTime)>IR_SENSOR_STEADY)
                     {
-                         bIRsensorStateFlag=true;
-                         nIRsensorLastTime=_millis();
-                    }
-                    else
-                    {
-                         if((_millis()-nIRsensorLastTime)>IR_SENSOR_STEADY)
-                         {
-                              uint8_t nMUX1,nMUX2;
-                              uint16_t nADC;
-                              bIRsensorStateFlag=false;
-                              // sequence for direct data reading from AD converter
-                              DISABLE_TEMPERATURE_INTERRUPT();
-                              nMUX1=ADMUX;        // ADMUX saving
-                              nMUX2=ADCSRB;
-                              adc_setmux(VOLT_IR_PIN);
-                              ADCSRA|=(1<<ADSC);  // first conversion after ADMUX change discarded (preventively)
-                              while(ADCSRA&(1<<ADSC))
-                                   ;
-                              ADCSRA|=(1<<ADSC);  // second conversion used
-                              while(ADCSRA&(1<<ADSC))
-                                   ;
-                              nADC=ADC;
-                              ADMUX=nMUX1;        // ADMUX restoring
-                              ADCSRB=nMUX2;
-                              ENABLE_TEMPERATURE_INTERRUPT();
-                              // end of sequence for ...
-                              if((oFsensorPCB==ClFsensorPCB::_Rev03b)&&((nADC*OVERSAMPLENR)>((int)IRsensor_Hopen_TRESHOLD)))
-                              {
-                                   fsensor_disable();
-                                   fsensor_not_responding = true;
-                                   printf_P(PSTR("IR sensor not responding (%d)!\n"),1);
-                                   if((ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA)==ClFsensorActionNA::_Pause)
-                                   if(oFsensorActionNA==ClFsensorActionNA::_Pause)
-                                        lcd_pause_print();
-                              }
-                              else
-                              {
+                        uint8_t nMUX1,nMUX2;
+                        uint16_t nADC;
+                        bIRsensorStateFlag=false;
+                        // sequence for direct data reading from AD converter
+                        DISABLE_TEMPERATURE_INTERRUPT();
+                        nMUX1=ADMUX;        // ADMUX saving
+                        nMUX2=ADCSRB;
+                        adc_setmux(VOLT_IR_PIN);
+                        ADCSRA|=(1<<ADSC);  // first conversion after ADMUX change discarded (preventively)
+                        while(ADCSRA&(1<<ADSC))
+                            ;
+                        ADCSRA|=(1<<ADSC);  // second conversion used
+                        while(ADCSRA&(1<<ADSC))
+                            ;
+                        nADC=ADC;
+                        ADMUX=nMUX1;        // ADMUX restoring
+                        ADCSRB=nMUX2;
+                        ENABLE_TEMPERATURE_INTERRUPT();
+                        // end of sequence for ...
+                        // Detection of correct function of fsensor v04 - it must NOT read >4.6V
+                        // If it does, it means a disconnected cables or faulty board
+                        if( (oFsensorPCB == ClFsensorPCB::_Rev04) && ( (nADC*OVERSAMPLENR) > IRsensor_Hopen_TRESHOLD ) )
+                        {
+                            fsensor_disable();
+                            fsensor_not_responding = true;
+                            printf_P(PSTR("IR sensor not responding (%d)!\n"),1);
+                            if((ClFsensorActionNA)eeprom_read_byte((uint8_t*)EEPROM_FSENSOR_ACTION_NA)==ClFsensorActionNA::_Pause)
+
+                            // if we are printing and FS action is set to "Pause", force pause the print
+                            if(oFsensorActionNA==ClFsensorActionNA::_Pause)
+                                lcd_pause_print();
+                        }
+                        else
+                        {
 #endif //IR_SENSOR_ANALOG
-                                  fsensor_checkpoint_print();
-                                  fsensor_enque_M600();
-#if IR_SENSOR_ANALOG
-                              }
-                         }
+                            fsensor_checkpoint_print();
+                            fsensor_enque_M600();
+#ifdef IR_SENSOR_ANALOG
+                        }
                     }
-               }
-               else
-               {                                  // IR_SENSOR_PIN ~ L
-                    bIRsensorStateFlag=false;
+                }
+                   }
+                   else
+                   {                                  // IR_SENSOR_PIN ~ L
+                        bIRsensorStateFlag=false;
 #endif //IR_SENSOR_ANALOG
-               }
-		}
+            }
+        }
 #endif //PAT9125
 }
 
-#if IR_SENSOR_ANALOG
-bool fsensor_IR_check()
-{
-uint16_t volt_IR_int;
-bool bCheckResult;
-
-volt_IR_int=current_voltage_raw_IR;
-bCheckResult=(volt_IR_int<((int)IRsensor_Lmax_TRESHOLD))||(volt_IR_int>((int)IRsensor_Hmin_TRESHOLD));
-bCheckResult=bCheckResult&&(!((oFsensorPCB==ClFsensorPCB::_Rev03b)&&(volt_IR_int>((int)IRsensor_Hopen_TRESHOLD))));
-return(bCheckResult);
+#ifdef IR_SENSOR_ANALOG
+/// This is called only upon start of the printer or when switching the fsensor ON in the menu
+/// We cannot do temporal window checks here (aka the voltage has been in some range for a period of time)
+bool fsensor_IR_check(){
+    if( IRsensor_Lmax_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_Hmin_TRESHOLD ){
+        /// If the voltage is in forbidden range, the fsensor is ok, but the lever is mounted improperly.
+        /// Or the user is so creative so that he can hold a piece of fillament in the hole in such a genius way,
+        /// that the IR fsensor reading is within 1.5 and 3V ... this would have been highly unusual
+        /// and would have been considered more like a sabotage than normal printer operation
+        printf_P(PSTR("fsensor in forbidden range 1.5-3V - check sensor\n"));
+        return false; 
+    }
+    if( oFsensorPCB == ClFsensorPCB::_Rev04 ){
+        /// newer IR sensor cannot normally produce 4.6-5V, this is considered a failure/bad mount
+        if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){
+            printf_P(PSTR("fsensor v0.4 in fault range 4.6-5V - unconnected\n"));
+            return false;
+        }
+        /// newer IR sensor cannot normally produce 0-0.3V, this is considered a failure 
+#if 0	//Disabled as it has to be decided if we gonna use this or not.
+        if( IRsensor_Hopen_TRESHOLD <= current_voltage_raw_IR && current_voltage_raw_IR <= IRsensor_VMax_TRESHOLD ){
+            printf_P(PSTR("fsensor v0.4 in fault range 0.0-0.3V - wrong IR sensor\n"));
+            return false;
+        }
+#endif
+    }
+    /// If IR sensor is "uknown state" and filament is not loaded > 1.5V return false
+#if 0
+    if( (oFsensorPCB == ClFsensorPCB::_Undef) && ( current_voltage_raw_IR > IRsensor_Lmax_TRESHOLD ) ){
+        printf_P(PSTR("Unknown IR sensor version and no filament loaded detected.\n"));
+        return false;
+    }
+#endif
+    // otherwise the IR fsensor is considered working correctly
+    return true;
 }
 #endif //IR_SENSOR_ANALOG

+ 40 - 11
Firmware/fsensor.h

@@ -6,15 +6,16 @@
 #include "config.h"
 
 
-//! minimum meassured chunk length in steps
-extern int16_t fsensor_chunk_len;
 // enable/disable flag
 extern bool fsensor_enabled;
 // not responding flag
 extern bool fsensor_not_responding;
-//enable/disable quality meassurement
-extern bool fsensor_oq_meassure_enabled;
-
+#ifdef PAT9125
+// optical checking "chunk lenght" (already in steps)
+extern int16_t fsensor_chunk_len;
+// count of soft failures
+extern uint8_t fsensor_softfail;
+#endif
 
 //! @name save restore printing
 //! @{
@@ -28,6 +29,11 @@ extern void fsensor_checkpoint_print(void);
 //! initialize
 extern void fsensor_init(void);
 
+#ifdef PAT9125
+//! update axis resolution
+extern void fsensor_set_axis_steps_per_unit(float u);
+#endif
+
 //! @name enable/disable
 //! @{
 extern bool fsensor_enable(bool bUpdateEEPROM=true);
@@ -52,30 +58,40 @@ extern void fsensor_autoload_check_stop(void);
 extern bool fsensor_check_autoload(void);
 //! @}
 
+#ifdef PAT9125
 //! @name optical quality measurement support
 //! @{
+extern bool fsensor_oq_meassure_enabled;
 extern void fsensor_oq_meassure_set(bool State);
 extern void fsensor_oq_meassure_start(uint8_t skip);
 extern void fsensor_oq_meassure_stop(void);
 extern bool fsensor_oq_result(void);
 //! @}
 
-
-#include "planner.h"
 //! @name callbacks from stepper
 //! @{
-extern void fsensor_st_block_begin(block_t* bl);
-extern void fsensor_st_block_chunk(block_t* bl, int cnt);
+extern void fsensor_st_block_chunk(int cnt);
+
+// debugging
+extern uint8_t fsensor_log;
+
+// There's really nothing to do in block_begin: the stepper ISR likely has
+// called us already at the end of the last block, making this integration
+// redundant. LA1.5 might not always do that during a coasting move, so attempt
+// to drain fsensor_st_cnt anyway at the beginning of the new block.
+#define fsensor_st_block_begin(rev) fsensor_st_block_chunk(0)
 //! @}
+#endif //PAT9125
 
+#define VOLT_DIV_REF 5
 
-#if IR_SENSOR_ANALOG
+#ifdef IR_SENSOR_ANALOG
 #define IR_SENSOR_STEADY 10                       // [ms]
 
 enum class ClFsensorPCB:uint_least8_t
 {
     _Old=0,
-    _Rev03b=1,
+    _Rev04=1,
     _Undef=EEPROM_EMPTY_VALUE
 };
 
@@ -88,8 +104,21 @@ enum class ClFsensorActionNA:uint_least8_t
 
 extern ClFsensorPCB oFsensorPCB;
 extern ClFsensorActionNA oFsensorActionNA;
+extern const char* FsensorIRVersionText();
 
 extern bool fsensor_IR_check();
+constexpr uint16_t Voltage2Raw(float V){
+	return ( V * 1023 * OVERSAMPLENR / VOLT_DIV_REF ) + 0.5F;
+}
+constexpr float Raw2Voltage(uint16_t raw){
+	return VOLT_DIV_REF*(raw / (1023.F * OVERSAMPLENR) );
+}
+constexpr uint16_t IRsensor_Ldiode_TRESHOLD = Voltage2Raw(0.3F); // ~0.3V, raw value=982
+constexpr uint16_t IRsensor_Lmax_TRESHOLD = Voltage2Raw(1.5F); // ~1.5V (0.3*Vcc), raw value=4910
+constexpr uint16_t IRsensor_Hmin_TRESHOLD = Voltage2Raw(3.0F); // ~3.0V (0.6*Vcc), raw value=9821
+constexpr uint16_t IRsensor_Hopen_TRESHOLD = Voltage2Raw(4.6F); // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k), raw value=15059
+constexpr uint16_t IRsensor_VMax_TRESHOLD = Voltage2Raw(5.F); // ~5V, raw value=16368
+
 #endif //IR_SENSOR_ANALOG
 
 #endif //FSENSOR_H

+ 184 - 180
Firmware/heatbed_pwm.cpp

@@ -1,180 +1,184 @@
-#include <avr/io.h>
-#include <avr/interrupt.h>
-#include "io_atmega2560.h"
-
-// All this is about silencing the heat bed, as it behaves like a loudspeaker.
-// Basically, we want the PWM heating switched at 30Hz (or so) which is a well ballanced
-// frequency for both power supply units (i.e. both PSUs are reasonably silent).
-// The only trouble is the rising or falling edge of bed heating - that creates an audible click.
-// This audible click may be suppressed by making the rising or falling edge NOT sharp.
-// Of course, making non-sharp edges in digital technology is not easy, but there is a solution.
-// It is possible to do a fast PWM sequence with duty starting from 0 to 255.
-// Doing this at higher frequency than the bed "loudspeaker" can handle makes the click barely audible.
-// Technically:
-// timer0 is set to fast PWM mode at 62.5kHz (timer0 is linked to the bed heating pin) (zero prescaler)
-// To keep the bed switching at 30Hz - we don't want the PWM running at 62kHz all the time 
-// since it would burn the heatbed's MOSFET:
-// 16MHz/256 levels of PWM duty gives us 62.5kHz
-// 62.5kHz/256 gives ~244Hz, that is still too fast - 244/8 gives ~30Hz, that's what we need
-// So the automaton runs atop of inner 8 (or 16) cycles.
-// The finite automaton is running in the ISR(TIMER0_OVF_vect)
-
-// 2019-08-14 update: the original algorithm worked very well, however there were 2 regressions:
-// 1. 62kHz ISR requires considerable amount of processing power, 
-//    USB transfer speed dropped by 20%, which was most notable when doing short G-code segments.
-// 2. Some users reported TLed PSU started clicking when running at 120V/60Hz. 
-//    This looks like the original algorithm didn't maintain base PWM 30Hz, but only 15Hz
-// To address both issues, there is an improved approach based on the idea of leveraging
-// different CLK prescalers in some automaton states - i.e. when holding LOW or HIGH on the output pin,
-// we don't have to clock 62kHz, but we can increase the CLK prescaler for these states to 8 (or even 64).
-// That shall result in the ISR not being called that much resulting in regained performance
-// Theoretically this is relatively easy, however one must be very carefull handling the AVR's timer
-// control registers correctly, especially setting them in a correct order.
-// Some registers are double buffered, some changes are applied in next cycles etc.
-// The biggest problem was with the CLK prescaler itself - this circuit is shared among almost all timers,
-// we don't want to reset the prescaler counted value when transiting among automaton states.
-// Resetting the prescaler would make the PWM more precise, right now there are temporal segments
-// of variable period ranging from 0 to 7 62kHz ticks - that's logical, the timer must "sync"
-// to the new slower CLK after setting the slower prescaler value.
-// In our application, this isn't any significant problem and may be ignored.
-// Doing changes in timer's registers non-correctly results in artefacts on the output pin
-// - it can toggle unnoticed, which will result in bed clicking again.
-// That's why there are special transition states ZERO_TO_RISE and ONE_TO_FALL, which enable the
-// counter change its operation atomically and without artefacts on the output pin.
-// The resulting signal on the output pin was checked with an osciloscope. 
-// If there are any change requirements in the future, the signal must be checked with an osciloscope again,
-// ad-hoc changes may completely screw things up!
-
-///! Definition off finite automaton states
-enum class States : uint8_t {
-	ZERO_START = 0,///< entry point of the automaton - reads the soft_pwm_bed value for the next whole PWM cycle
-	ZERO,          ///< steady 0 (OFF), no change for the whole period
-	ZERO_TO_RISE,  ///< metastate allowing the timer change its state atomically without artefacts on the output pin
-	RISE,          ///< 16 fast PWM cycles with increasing duty up to steady ON
-	RISE_TO_ONE,   ///< metastate allowing the timer change its state atomically without artefacts on the output pin
-	ONE,           ///< steady 1 (ON), no change for the whole period 
-	ONE_TO_FALL,   ///< metastate allowing the timer change its state atomically without artefacts on the output pin
-	FALL,          ///< 16 fast PWM cycles with decreasing duty down to steady OFF
-	FALL_TO_ZERO   ///< metastate allowing the timer change its state atomically without artefacts on the output pin
-};
-
-///! Inner states of the finite automaton
-static States state = States::ZERO_START;
-
-///! Fast PWM counter is used in the RISE and FALL states (62.5kHz)
-static uint8_t slowCounter = 0;
-///! Slow PWM counter is used in the ZERO and ONE states (62.5kHz/8 or 64)
-static uint8_t fastCounter = 0;
-///! PWM counter for the whole cycle - a cache for soft_pwm_bed
-static uint8_t pwm = 0;
-
-///! The slow PWM duty for the next 30Hz cycle
-///! Set in the whole firmware at various places
-extern unsigned char soft_pwm_bed;
-
-/// fastMax - how many fast PWM steps to do in RISE and FALL states
-/// 16 is a good compromise between silenced bed ("smooth" edges)
-/// and not burning the switching MOSFET
-static const uint8_t fastMax = 16;
-
-/// Scaler 16->256 for fast PWM
-static const uint8_t fastShift = 4;
-
-/// Increment slow PWM counter by slowInc every ZERO or ONE state
-/// This allows for fine-tuning the basic PWM switching frequency
-/// A possible further optimization - use a 64 prescaler (instead of 8)
-/// increment slowCounter by 1
-/// but use less bits of soft PWM - something like soft_pwm_bed >> 2
-/// that may further reduce the CPU cycles required by the bed heating automaton
-/// Due to the nature of bed heating the reduced PID precision may not be a major issue, however doing 8x less ISR(timer0_ovf) may significantly improve the performance 
-static const uint8_t slowInc = 1;
-
-ISR(TIMER0_OVF_vect)          // timer compare interrupt service routine
-{
-	switch(state){
-	case States::ZERO_START:
-		pwm = soft_pwm_bed << 1;// expecting soft_pwm_bed to be 7bit!
-		if( pwm != 0 ){
-			state = States::ZERO;     // do nothing, let it tick once again after the 30Hz period
-		}
-		break;
-	case States::ZERO: // end of state ZERO - we'll either stay in ZERO or change to RISE
-		// In any case update our cache of pwm value for the next whole cycle from soft_pwm_bed
-		slowCounter += slowInc; // this does software timer_clk/256 or less (depends on slowInc)
-		if( slowCounter > pwm ){
-			return;
-		} // otherwise moving towards RISE
-		state = States::ZERO_TO_RISE; // and finalize the change in a transitional state RISE0
-		break;
-	// even though it may look like the ZERO state may be glued together with the ZERO_TO_RISE, don't do it
-	// the timer must tick once more in order to get rid of occasional output pin toggles.
-	case States::ZERO_TO_RISE:  // special state for handling transition between prescalers and switching inverted->non-inverted fast-PWM without toggling the output pin.
-		// It must be done in consequent steps, otherwise the pin will get flipped up and down during one PWM cycle.
-		// Also beware of the correct sequence of the following timer control registers initialization - it really matters!
-		state = States::RISE;     // prepare for standard RISE cycles
-		fastCounter = fastMax - 1;// we'll do 16-1 cycles of RISE
-		TCNT0 = 255;              // force overflow on the next clock cycle
-		TCCR0B = (1 << CS00);     // change prescaler to 1, i.e. 62.5kHz
-		TCCR0A &= ~(1 << COM0B0); // Clear OC0B on Compare Match, set OC0B at BOTTOM (non-inverting mode)
-		break;
-	case States::RISE:
-		OCR0B = (fastMax - fastCounter) << fastShift;
-		if( fastCounter ){
-			--fastCounter;
-		} else { // end of RISE cycles, changing into state ONE
-			state = States::RISE_TO_ONE;
-			OCR0B = 255;          // full duty
-			TCNT0 = 254;          // make the timer overflow in the next cycle
-			// @@TODO these constants are still subject to investigation
-		}
-		break;
-	case States::RISE_TO_ONE:
-		state = States::ONE;
-		OCR0B = 255;              // full duty
-		TCNT0 = 255;              // make the timer overflow in the next cycle
-		TCCR0B = (1 << CS01);     // change prescaler to 8, i.e. 7.8kHz
-		break;
-	case States::ONE:             // state ONE - we'll either stay in ONE or change to FALL
-		OCR0B = 255;
-		slowCounter += slowInc;   // this does software timer_clk/256 or less
-		if( slowCounter < pwm ){
-			return;
-		}
-		if( (soft_pwm_bed << 1) >= (255 - slowInc - 1) ){  //@@TODO simplify & explain
-			// if slowInc==2, soft_pwm == 251 will be the first to do short drops to zero. 252 will keep full heating
-			return;           // want full duty for the next ONE cycle again - so keep on heating and just wait for the next timer ovf
-		}
-		// otherwise moving towards FALL
-		// @@TODO it looks like ONE_TO_FALL isn't necessary, there are no artefacts at all
-		state = States::ONE;//_TO_FALL;
-//		TCCR0B = (1 << CS00);      // change prescaler to 1, i.e. 62.5kHz
-//		break;
-//	case States::ONE_TO_FALL:
-//		OCR0B = 255;              // zero duty
-		state=States::FALL;
-		fastCounter = fastMax - 1;// we'll do 16-1 cycles of RISE
-		TCNT0 = 255;              // force overflow on the next clock cycle
-		TCCR0B = (1 << CS00);     // change prescaler to 1, i.e. 62.5kHz
-		// must switch to inverting mode already here, because it takes a whole PWM cycle and it would make a "1" at the end of this pwm cycle
-		// COM0B1 remains set both in inverting and non-inverting mode
-		TCCR0A |= (1 << COM0B0);  // inverting mode
-		break;
-	case States::FALL:
-		OCR0B = (fastMax - fastCounter) << fastShift; // this is the same as in RISE, because now we are setting the zero part of duty due to inverting mode
-		//TCCR0A |= (1 << COM0B0); // already set in ONE_TO_FALL
-		if( fastCounter ){
-			--fastCounter;
-		} else {   // end of FALL cycles, changing into state ZERO
-			state = States::FALL_TO_ZERO;
-			TCNT0 = 128; //@@TODO again - need to wait long enough to propagate the timer state changes
-			OCR0B = 255;
-		}
-		break;
-	case States::FALL_TO_ZERO:
-		state = States::ZERO_START; // go to read new soft_pwm_bed value for the next cycle
-		TCNT0 = 128;
-		OCR0B = 255;
-		TCCR0B = (1 << CS01); // change prescaler to 8, i.e. 7.8kHz
-		break;		
-    }
-}
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include "io_atmega2560.h"
+
+// All this is about silencing the heat bed, as it behaves like a loudspeaker.
+// Basically, we want the PWM heating switched at 30Hz (or so) which is a well ballanced
+// frequency for both power supply units (i.e. both PSUs are reasonably silent).
+// The only trouble is the rising or falling edge of bed heating - that creates an audible click.
+// This audible click may be suppressed by making the rising or falling edge NOT sharp.
+// Of course, making non-sharp edges in digital technology is not easy, but there is a solution.
+// It is possible to do a fast PWM sequence with duty starting from 0 to 255.
+// Doing this at higher frequency than the bed "loudspeaker" can handle makes the click barely audible.
+// Technically:
+// timer0 is set to fast PWM mode at 62.5kHz (timer0 is linked to the bed heating pin) (zero prescaler)
+// To keep the bed switching at 30Hz - we don't want the PWM running at 62kHz all the time 
+// since it would burn the heatbed's MOSFET:
+// 16MHz/256 levels of PWM duty gives us 62.5kHz
+// 62.5kHz/256 gives ~244Hz, that is still too fast - 244/8 gives ~30Hz, that's what we need
+// So the automaton runs atop of inner 8 (or 16) cycles.
+// The finite automaton is running in the ISR(TIMER0_OVF_vect)
+
+// 2019-08-14 update: the original algorithm worked very well, however there were 2 regressions:
+// 1. 62kHz ISR requires considerable amount of processing power, 
+//    USB transfer speed dropped by 20%, which was most notable when doing short G-code segments.
+// 2. Some users reported TLed PSU started clicking when running at 120V/60Hz. 
+//    This looks like the original algorithm didn't maintain base PWM 30Hz, but only 15Hz
+// To address both issues, there is an improved approach based on the idea of leveraging
+// different CLK prescalers in some automaton states - i.e. when holding LOW or HIGH on the output pin,
+// we don't have to clock 62kHz, but we can increase the CLK prescaler for these states to 8 (or even 64).
+// That shall result in the ISR not being called that much resulting in regained performance
+// Theoretically this is relatively easy, however one must be very carefull handling the AVR's timer
+// control registers correctly, especially setting them in a correct order.
+// Some registers are double buffered, some changes are applied in next cycles etc.
+// The biggest problem was with the CLK prescaler itself - this circuit is shared among almost all timers,
+// we don't want to reset the prescaler counted value when transiting among automaton states.
+// Resetting the prescaler would make the PWM more precise, right now there are temporal segments
+// of variable period ranging from 0 to 7 62kHz ticks - that's logical, the timer must "sync"
+// to the new slower CLK after setting the slower prescaler value.
+// In our application, this isn't any significant problem and may be ignored.
+// Doing changes in timer's registers non-correctly results in artefacts on the output pin
+// - it can toggle unnoticed, which will result in bed clicking again.
+// That's why there are special transition states ZERO_TO_RISE and ONE_TO_FALL, which enable the
+// counter change its operation atomically and without artefacts on the output pin.
+// The resulting signal on the output pin was checked with an osciloscope. 
+// If there are any change requirements in the future, the signal must be checked with an osciloscope again,
+// ad-hoc changes may completely screw things up!
+
+// 2020-01-29 update: we are introducing a new option to the automaton that will allow us to force the output state
+// to either full ON or OFF. This is so that interference during the MBL probing is minimal.
+// To accomplish this goal we use bedPWMDisabled. It is only supposed to be used for brief periods of time as to
+// not make the bed temperature too unstable. Also, careful consideration should be used when using this
+// option as leaving this enabled will also keep the bed output in the state it stopped in.
+
+///! Definition off finite automaton states
+enum class States : uint8_t {
+	ZERO_START = 0,///< entry point of the automaton - reads the soft_pwm_bed value for the next whole PWM cycle
+	ZERO,          ///< steady 0 (OFF), no change for the whole period
+	ZERO_TO_RISE,  ///< metastate allowing the timer change its state atomically without artefacts on the output pin
+	RISE,          ///< 16 fast PWM cycles with increasing duty up to steady ON
+	RISE_TO_ONE,   ///< metastate allowing the timer change its state atomically without artefacts on the output pin
+	ONE,           ///< steady 1 (ON), no change for the whole period 
+	FALL,          ///< 16 fast PWM cycles with decreasing duty down to steady OFF
+	FALL_TO_ZERO   ///< metastate allowing the timer change its state atomically without artefacts on the output pin
+};
+
+///! Inner states of the finite automaton
+static States state = States::ZERO_START;
+
+bool bedPWMDisabled = 0;
+
+///! Fast PWM counter is used in the RISE and FALL states (62.5kHz)
+static uint8_t slowCounter = 0;
+///! Slow PWM counter is used in the ZERO and ONE states (62.5kHz/8 or 64)
+static uint8_t fastCounter = 0;
+///! PWM counter for the whole cycle - a cache for soft_pwm_bed
+static uint8_t pwm = 0;
+
+///! The slow PWM duty for the next 30Hz cycle
+///! Set in the whole firmware at various places
+extern unsigned char soft_pwm_bed;
+
+/// fastMax - how many fast PWM steps to do in RISE and FALL states
+/// 16 is a good compromise between silenced bed ("smooth" edges)
+/// and not burning the switching MOSFET
+static const uint8_t fastMax = 16;
+
+/// Scaler 16->256 for fast PWM
+static const uint8_t fastShift = 4;
+
+/// Increment slow PWM counter by slowInc every ZERO or ONE state
+/// This allows for fine-tuning the basic PWM switching frequency
+/// A possible further optimization - use a 64 prescaler (instead of 8)
+/// increment slowCounter by 1
+/// but use less bits of soft PWM - something like soft_pwm_bed >> 2
+/// that may further reduce the CPU cycles required by the bed heating automaton
+/// Due to the nature of bed heating the reduced PID precision may not be a major issue, however doing 8x less ISR(timer0_ovf) may significantly improve the performance 
+static const uint8_t slowInc = 1;
+
+ISR(TIMER0_OVF_vect)          // timer compare interrupt service routine
+{
+	switch(state){
+	case States::ZERO_START:
+		if (bedPWMDisabled) return; // stay in the OFF state and do not change the output pin
+		pwm = soft_pwm_bed << 1;// expecting soft_pwm_bed to be 7bit!
+		if( pwm != 0 ){
+			state = States::ZERO;     // do nothing, let it tick once again after the 30Hz period
+		}
+		break;
+	case States::ZERO: // end of state ZERO - we'll either stay in ZERO or change to RISE
+		// In any case update our cache of pwm value for the next whole cycle from soft_pwm_bed
+		slowCounter += slowInc; // this does software timer_clk/256 or less (depends on slowInc)
+		if( slowCounter > pwm ){
+			return;
+		} // otherwise moving towards RISE
+		state = States::ZERO_TO_RISE; // and finalize the change in a transitional state RISE0
+		break;
+	// even though it may look like the ZERO state may be glued together with the ZERO_TO_RISE, don't do it
+	// the timer must tick once more in order to get rid of occasional output pin toggles.
+	case States::ZERO_TO_RISE:  // special state for handling transition between prescalers and switching inverted->non-inverted fast-PWM without toggling the output pin.
+		// It must be done in consequent steps, otherwise the pin will get flipped up and down during one PWM cycle.
+		// Also beware of the correct sequence of the following timer control registers initialization - it really matters!
+		state = States::RISE;     // prepare for standard RISE cycles
+		fastCounter = fastMax - 1;// we'll do 16-1 cycles of RISE
+		TCNT0 = 255;              // force overflow on the next clock cycle
+		TCCR0B = (1 << CS00);     // change prescaler to 1, i.e. 62.5kHz
+		TCCR0A &= ~(1 << COM0B0); // Clear OC0B on Compare Match, set OC0B at BOTTOM (non-inverting mode)
+		break;
+	case States::RISE:
+		OCR0B = (fastMax - fastCounter) << fastShift;
+		if( fastCounter ){
+			--fastCounter;
+		} else { // end of RISE cycles, changing into state ONE
+			state = States::RISE_TO_ONE;
+			OCR0B = 255;          // full duty
+			TCNT0 = 254;          // make the timer overflow in the next cycle
+			// @@TODO these constants are still subject to investigation
+		}
+		break;
+	case States::RISE_TO_ONE:
+		state = States::ONE;
+		OCR0B = 255;              // full duty
+		TCNT0 = 255;              // make the timer overflow in the next cycle
+		TCCR0B = (1 << CS01);     // change prescaler to 8, i.e. 7.8kHz
+		break;
+	case States::ONE:             // state ONE - we'll either stay in ONE or change to FALL
+		OCR0B = 255;
+		if (bedPWMDisabled) return; // stay in the ON state and do not change the output pin
+		slowCounter += slowInc;   // this does software timer_clk/256 or less
+		if( slowCounter < pwm ){
+			return;
+		}
+		if( (soft_pwm_bed << 1) >= (255 - slowInc - 1) ){  //@@TODO simplify & explain
+			// if slowInc==2, soft_pwm == 251 will be the first to do short drops to zero. 252 will keep full heating
+			return;           // want full duty for the next ONE cycle again - so keep on heating and just wait for the next timer ovf
+		}
+		// otherwise moving towards FALL
+		state = States::ONE;//_TO_FALL;
+		state=States::FALL;
+		fastCounter = fastMax - 1;// we'll do 16-1 cycles of RISE
+		TCNT0 = 255;              // force overflow on the next clock cycle
+		TCCR0B = (1 << CS00);     // change prescaler to 1, i.e. 62.5kHz
+		// must switch to inverting mode already here, because it takes a whole PWM cycle and it would make a "1" at the end of this pwm cycle
+		// COM0B1 remains set both in inverting and non-inverting mode
+		TCCR0A |= (1 << COM0B0);  // inverting mode
+		break;
+	case States::FALL:
+		OCR0B = (fastMax - fastCounter) << fastShift; // this is the same as in RISE, because now we are setting the zero part of duty due to inverting mode
+		//TCCR0A |= (1 << COM0B0); // already set in ONE_TO_FALL
+		if( fastCounter ){
+			--fastCounter;
+		} else {   // end of FALL cycles, changing into state ZERO
+			state = States::FALL_TO_ZERO;
+			TCNT0 = 128; //@@TODO again - need to wait long enough to propagate the timer state changes
+			OCR0B = 255;
+		}
+		break;
+	case States::FALL_TO_ZERO:
+		state = States::ZERO_START; // go to read new soft_pwm_bed value for the next cycle
+		TCNT0 = 128;
+		OCR0B = 255;
+		TCCR0B = (1 << CS01); // change prescaler to 8, i.e. 7.8kHz
+		break;		
+    }
+}

+ 91 - 0
Firmware/la10compat.cpp

@@ -0,0 +1,91 @@
+#include "la10compat.h"
+#include "Marlin.h"
+#include <float.h>
+
+
+static LA10C_MODE la10c_mode = LA10C_UNKNOWN; // Current LA compatibility mode
+static float la10c_orig_jerk = 0;             // Unadjusted/saved e-jerk
+
+
+LA10C_MODE la10c_mode_get()
+{
+    return la10c_mode;
+}
+
+
+void la10c_mode_change(LA10C_MODE mode)
+{
+    if(mode == la10c_mode) return;
+
+    // always restore to the last unadjusted E-jerk value
+    if(la10c_orig_jerk)
+        cs.max_jerk[E_AXIS] = la10c_orig_jerk;
+
+    SERIAL_ECHOPGM("LA10C: Linear Advance mode: ");
+    switch(mode)
+    {
+    case LA10C_UNKNOWN: SERIAL_ECHOLNPGM("UNKNOWN"); break;
+    case LA10C_LA15:    SERIAL_ECHOLNPGM("1.5"); break;
+    case LA10C_LA10:    SERIAL_ECHOLNPGM("1.0"); break;
+    }
+    la10c_mode = mode;
+
+    // adjust the E-jerk if needed
+    cs.max_jerk[E_AXIS] = la10c_jerk(cs.max_jerk[E_AXIS]);
+}
+
+
+// Approximate a LA10 value to a LA15 equivalent.
+static float la10c_convert(float k)
+{
+    float new_K = k * 0.004 - 0.05;
+    return new_K < 0? 0:
+           new_K > (LA_K_MAX - FLT_EPSILON)? (LA_K_MAX - FLT_EPSILON):
+           new_K;
+}
+
+
+float la10c_value(float k)
+{
+    if(la10c_mode == LA10C_UNKNOWN)
+    {
+        // do not autodetect until a valid value is seen
+        if(k == 0)
+            return 0;
+        else if(k < 0)
+            return -1;
+
+        la10c_mode_change(k < LA_LA10_MIN? LA10C_LA15: LA10C_LA10);
+    }
+
+    if(la10c_mode == LA10C_LA15)
+        return (k >= 0 && k < LA_K_MAX? k: -1);
+    else
+        return (k >= 0? la10c_convert(k): -1);
+}
+
+
+float la10c_jerk(float j)
+{
+    la10c_orig_jerk = j;
+
+    if(la10c_mode != LA10C_LA10)
+        return j;
+
+    // check for a compatible range of values prior to convert (be sure that
+    // a higher E-jerk would still be compatible wrt the E accell range)
+    if(j < 4.5 && cs.max_acceleration_units_per_sq_second_normal[E_AXIS] < 2000)
+        return j;
+
+    // bring low E-jerk values into equivalent LA 1.5 values by
+    // flattening the response in the (0.3-4.5) range using a piecewise
+    // function. Is it truly worth to preserve the difference between
+    // 1.5/2.5 E-jerk for LA1.0? Probably not, but we try nonetheless.
+    j = j < 0.3? j * 11.5:
+        j < 4.5? j * 0.25 + 3.375:
+        j;
+
+    SERIAL_ECHOPGM("LA10C: Adjusted E-Jerk: ");
+    SERIAL_ECHOLN(j);
+    return j;
+}

+ 46 - 0
Firmware/la10compat.h

@@ -0,0 +1,46 @@
+// la10compat: LA10->LA15 conversion
+//
+// When the current mode is UNKNOWN autodetection is active and any K<10
+// will set the mode to LA15, LA10 is set otherwise. When LA10
+// compatbility mode is active the K factor is converted to a LA15
+// equivalent (that is, the return value is always a LA15 value).
+//
+// E-jerk<2 is also bumped in LA10 mode to restore the the printing speed
+// to values comparable to existing settings.
+//
+// Once the interpretation mode has been set it is kept until the mode
+// is explicitly reset. This is done to handle transparent fallback for
+// old firmware revisions in combination with the following gcode
+// sequence:
+//
+//   M900 K0.01 ; set LA15 value (interpreted by any firmware)
+//   M900 K10   ; set LA10 value (ignored by LA15 firmware)
+//
+// A LA15 firmware without this module will only parse the first
+// correctly, rejecting the second. A LA10 FW will parse both, but keep
+// the last value. Since the LA15 value, if present, corresponds to the
+// truth value, the compatibility stub needs to "lock" onto the first
+// seen value for the current print.
+//
+// The mode needs to be carefully reset for each print in order for
+// diffent versions of M900 to be interpreted independently.
+
+#pragma once
+
+enum __attribute__((packed)) LA10C_MODE
+{
+    LA10C_UNKNOWN = 0,
+    LA10C_LA15    = 1,
+    LA10C_LA10    = 2
+};
+
+// Explicitly set/get/reset the interpretation mode for la10c_value()
+void la10c_mode_change(LA10C_MODE mode);
+LA10C_MODE la10c_mode_get();
+static inline void la10c_reset() { la10c_mode_change(LA10C_UNKNOWN); }
+
+// Return a LA15 K value according to the supplied value and mode
+float la10c_value(float k);
+
+// Return an updated LA15 E-jerk value according to the current mode
+float la10c_jerk(float j);

+ 3 - 1
Firmware/language.h

@@ -6,7 +6,9 @@
 
 #include "config.h"
 #include <inttypes.h>
-//#include <stdio.h>
+#ifdef DEBUG_SEC_LANG
+    #include <stdio.h>
+#endif //DEBUG_SEC_LANG
 
 #define PROTOCOL_VERSION "1.0"
 

+ 3 - 2
Firmware/menu.cpp

@@ -48,6 +48,7 @@ void menu_goto(menu_func_t menu, const uint32_t encoder, const bool feedback, bo
 	{
 		menu_menu = menu;
 		lcd_encoder = encoder;
+		menu_top = 0; //reset menu view. Needed if menu_back() is called from deep inside a menu, such as Support
 		asm("sei");
 		if (reset_menu_state)
 		{
@@ -102,7 +103,7 @@ void menu_back(void)
 menu_back(1);
 }
 
-static void menu_back_no_reset(void)
+void menu_back_no_reset(void)
 {
 	if (menu_depth > 0)
 	{
@@ -136,7 +137,7 @@ void menu_submenu(menu_func_t submenu)
 	}
 }
 
-static void menu_submenu_no_reset(menu_func_t submenu)
+void menu_submenu_no_reset(menu_func_t submenu)
 {
 	if (menu_depth < MENU_DEPTH_MAX)
 	{

+ 2 - 1
Firmware/menu.h

@@ -76,6 +76,7 @@ void menu_start(void);
 extern void menu_end(void);
 
 extern void menu_back(void);
+extern void menu_back_no_reset(void);
 extern void menu_back(uint8_t nLevel);
 
 extern void menu_back_if_clicked(void);
@@ -83,6 +84,7 @@ extern void menu_back_if_clicked(void);
 extern void menu_back_if_clicked_fb(void);
 
 extern void menu_submenu(menu_func_t submenu);
+extern void menu_submenu_no_reset(menu_func_t submenu);
 
 extern uint8_t menu_item_ret(void);
 
@@ -131,7 +133,6 @@ extern const char menu_fmt_int3[];
 extern const char menu_fmt_float31[];
 extern const char menu_fmt_float13[];
 
-
 extern void menu_draw_float31(const char* str, float val);
 
 extern void menu_draw_float13(const char* str, float val);

+ 6 - 2
Firmware/mesh_bed_calibration.cpp

@@ -6,6 +6,7 @@
 #include "mesh_bed_leveling.h"
 #include "stepper.h"
 #include "ultralcd.h"
+#include "temperature.h"
 
 #ifdef TMC2130
 #include "tmc2130.h"
@@ -919,7 +920,7 @@ static inline void go_xy(float x, float y, float fr)
 
 static inline void go_to_current(float fr)
 {
-    plan_buffer_line_curposXYZE(fr, active_extruder);
+    plan_buffer_line_curposXYZE(fr);
     st_synchronize();
 }
 
@@ -928,7 +929,7 @@ static inline void update_current_position_xyz()
       current_position[X_AXIS] = st_get_position_mm(X_AXIS);
       current_position[Y_AXIS] = st_get_position_mm(Y_AXIS);
       current_position[Z_AXIS] = st_get_position_mm(Z_AXIS);
-      plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+      plan_set_position_curposXYZE();
 }
 
 static inline void update_current_position_z()
@@ -946,6 +947,7 @@ inline bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, i
         )
 {
 	bool high_deviation_occured = false; 
+    bedPWMDisabled = 1;
 #ifdef TMC2130
 	FORCE_HIGH_POWER_START;
 #endif
@@ -1044,6 +1046,7 @@ inline bool find_bed_induction_sensor_point_z(float minimum_z, uint8_t n_iter, i
 #ifdef TMC2130
 	FORCE_HIGH_POWER_END;
 #endif
+    bedPWMDisabled = 0;
 	return true;
 
 error:
@@ -1053,6 +1056,7 @@ error:
 #ifdef TMC2130
 	FORCE_HIGH_POWER_END;
 #endif
+    bedPWMDisabled = 0;
 	return false;
 }
 

+ 29 - 20
Firmware/messages.c

@@ -14,14 +14,14 @@ const char MSG_BABYSTEP_Z_NOT_SET[] PROGMEM_I1 = ISTR("Distance between tip of t
 const char MSG_BED[] PROGMEM_I1 = ISTR("Bed"); ////
 const char MSG_BED_DONE[] PROGMEM_I1 = ISTR("Bed done"); ////
 const char MSG_BED_HEATING[] PROGMEM_I1 = ISTR("Bed Heating"); ////
-const char MSG_BED_LEVELING_FAILED_POINT_LOW[] PROGMEM_I1 = ISTR("Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."); ////c=20 r=4
+const char MSG_BED_LEVELING_FAILED_POINT_LOW[] PROGMEM_I1 = ISTR("Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."); ////c=20 r=5
 const char MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED[] PROGMEM_I1 = ISTR("XYZ calibration failed. Please consult the manual."); ////c=20 r=8
 const char MSG_CALIBRATE_Z_AUTO[] PROGMEM_I1 = ISTR("Calibrating Z"); ////c=20 r=2
 const char MSG_CARD_MENU[] PROGMEM_I1 = ISTR("Print from SD"); ////
 const char MSG_CONFIRM_NOZZLE_CLEAN[] PROGMEM_I1 = ISTR("Please clean the nozzle for calibration. Click when done."); ////c=20 r=8
 const char MSG_COOLDOWN[] PROGMEM_I1 = ISTR("Cooldown"); ////
 const char MSG_CRASH_DETECTED[] PROGMEM_I1 = ISTR("Crash detected."); ////c=20 r=1
-const char MSG_CRASHDETECT[] PROGMEM_I1 = ISTR("Crash det."); ////
+const char MSG_CRASHDETECT[] PROGMEM_I1 = ISTR("Crash det."); ////c=13
 const char MSG_ERROR[] PROGMEM_I1 = ISTR("ERROR:"); ////
 const char MSG_EXTRUDER[] PROGMEM_I1 = ISTR("Extruder"); ////c=17 r=1
 const char MSG_FILAMENT[] PROGMEM_I1 = ISTR("Filament"); ////c=17 r=1
@@ -34,10 +34,10 @@ const char MSG_FILAMENT_LOADING_T3[] PROGMEM_I1 = ISTR("Insert filament into ext
 const char MSG_FILAMENTCHANGE[] PROGMEM_I1 = ISTR("Change filament"); ////
 const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE1[] PROGMEM_I1 = ISTR("Searching bed calibration point"); ////c=60
 const char MSG_FIND_BED_OFFSET_AND_SKEW_LINE2[] PROGMEM_I1 = ISTR(" of 4"); ////c=14
-const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20 r=1
+const char MSG_FINISHING_MOVEMENTS[] PROGMEM_I1 = ISTR("Finishing movements"); ////c=20
 const char MSG_FOLLOW_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
-const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=8
-const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////c=17 r=1
+const char MSG_FOLLOW_Z_CALIBRATION_FLOW[] PROGMEM_I1 = ISTR("There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."); ////c=20 r=9
+const char MSG_FSENSOR_AUTOLOAD[] PROGMEM_I1 = ISTR("F. autoload"); ////c=13
 const char MSG_FSENSOR[] PROGMEM_I1 = ISTR("Fil. sensor"); ////
 const char MSG_HEATING[] PROGMEM_I1 = ISTR("Heating"); ////
 const char MSG_HEATING_COMPLETE[] PROGMEM_I1 = ISTR("Heating done."); ////c=20
@@ -48,7 +48,7 @@ const char MSG_LOAD_FILAMENT[] PROGMEM_I1 = ISTR("Load filament"); //// Number 1
 const char MSG_LOADING_FILAMENT[] PROGMEM_I1 = ISTR("Loading filament"); ////c=20
 const char MSG_EJECT_FILAMENT[] PROGMEM_I1 = ISTR("Eject filament"); //// Number 1 to 5 is added behind text e.g. "Eject filament 1" c=16
 const char MSG_CUT_FILAMENT[] PROGMEM_I1 = ISTR("Cut filament"); //// Number 1 to 5 is added behind text e.g. "Cut filament 1" c=16
-const char MSG_M117_V2_CALIBRATION[] PROGMEM_I1 = ISTR("M117 First layer cal."); ////c=25 r=1
+const char MSG_M117_V2_CALIBRATION[] PROGMEM_I1 = ISTR("M117 First layer cal."); ////c=25
 const char MSG_MAIN[] PROGMEM_I1 = ISTR("Main"); ////
 const char MSG_BACK[] PROGMEM_I1 = ISTR("Back"); ////
 const char MSG_SHEET[] PROGMEM_I1 = ISTR("Sheet"); ////c=10
@@ -57,7 +57,7 @@ const char MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2[] PROGMEM_I1 = ISTR(" of 9");
 const char MSG_MENU_CALIBRATION[] PROGMEM_I1 = ISTR("Calibration"); ////
 const char MSG_NO[] PROGMEM_I1 = ISTR("No"); ////
 const char MSG_NOZZLE[] PROGMEM_I1 = ISTR("Nozzle"); ////
-const char MSG_PAPER[] PROGMEM_I1 = ISTR("Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."); ////c=20 r=8
+const char MSG_PAPER[] PROGMEM_I1 = ISTR("Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."); ////c=20 r=10
 const char MSG_PLACE_STEEL_SHEET[] PROGMEM_I1 = ISTR("Please place steel sheet on heatbed."); ////c=20 r=4
 const char MSG_PLEASE_WAIT[] PROGMEM_I1 = ISTR("Please wait"); ////c=20
 const char MSG_PREHEAT_NOZZLE[] PROGMEM_I1 = ISTR("Preheat the nozzle!"); ////c=20
@@ -90,7 +90,7 @@ const char MSG_STEALTH[] PROGMEM_I1 = ISTR("Stealth"); ////
 const char MSG_STEEL_SHEET_CHECK[] PROGMEM_I1 = ISTR("Is steel sheet on heatbed?"); ////c=20 r=2
 const char MSG_STOP_PRINT[] PROGMEM_I1 = ISTR("Stop print"); ////
 const char MSG_STOPPED[] PROGMEM_I1 = ISTR("STOPPED. "); ////
-const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal."); ////c=12 r=1
+const char MSG_TEMP_CALIBRATION[] PROGMEM_I1 = ISTR("Temp. cal."); ////c=14
 const char MSG_TEMP_CALIBRATION_DONE[] PROGMEM_I1 = ISTR("Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."); ////c=20 r=12
 const char MSG_UNLOAD_FILAMENT[] PROGMEM_I1 = ISTR("Unload filament"); ////c=17
 const char MSG_UNLOADING_FILAMENT[] PROGMEM_I1 = ISTR("Unloading filament"); ////c=20 r=1
@@ -100,13 +100,13 @@ const char MSG_WIZARD_DONE[] PROGMEM_I1 = ISTR("All is done. Happy printing!");
 const char MSG_WIZARD_HEATING[] PROGMEM_I1 = ISTR("Preheating nozzle. Please wait."); ////c=20 r=3
 const char MSG_WIZARD_QUIT[] PROGMEM_I1 = ISTR("You can always resume the Wizard from Calibration -> Wizard."); ////c=20 r=8
 const char MSG_YES[] PROGMEM_I1 = ISTR("Yes"); ////
-const char MSG_V2_CALIBRATION[] PROGMEM_I1 = ISTR("First layer cal."); ////c=17 r=1
+const char MSG_V2_CALIBRATION[] PROGMEM_I1 = ISTR("First layer cal."); ////c=18
 const char WELCOME_MSG[] PROGMEM_I1 = ISTR(CUSTOM_MENDEL_NAME " OK."); ////c=20
 const char MSG_OFF[] PROGMEM_I1 = ISTR("Off"); ////
 const char MSG_ON[] PROGMEM_I1 = ISTR("On"); ////
 const char MSG_NA[] PROGMEM_I1 = ISTR("N/A"); ////
 const char MSG_AUTO_DEPLETE[] PROGMEM_I1 = ISTR("SpoolJoin"); ////
-const char MSG_CUTTER[] PROGMEM_I1 = ISTR("Cutter"); ////
+const char MSG_CUTTER[] PROGMEM_I1 = ISTR("Cutter"); ////c=9
 const char MSG_NONE[] PROGMEM_I1 = ISTR("None"); ////
 const char MSG_WARN[] PROGMEM_I1 = ISTR("Warn"); ////
 const char MSG_STRICT[] PROGMEM_I1 = ISTR("Strict"); ////
@@ -128,16 +128,22 @@ const char MSG_SOUND_BLIND[] PROGMEM_I1 = ISTR("Assist"); ////
 const char MSG_MESH[] PROGMEM_I1 = ISTR("Mesh"); ////
 const char MSG_Z_PROBE_NR[] PROGMEM_I1 = ISTR("Z-probe nr."); ////
 const char MSG_MAGNETS_COMP[] PROGMEM_I1 = ISTR("Magnets comp."); ////
-const char MSG_FS_ACTION[] PROGMEM_I1 = ISTR("FS Action"); ////
-const char MSG_FS_CONTINUE[] PROGMEM_I1 = ISTR("Cont."); ////
-const char MSG_FS_PAUSE[] PROGMEM_I1 = ISTR("Pause"); ////
-const char MSG_BRIGHTNESS[] PROGMEM_I1 = ISTR("Brightness"); ////
-const char MSG_BL_HIGH[] PROGMEM_I1 = ISTR("Level Bright"); ////
-const char MSG_BL_LOW[] PROGMEM_I1 = ISTR("Level Dimmed"); ////
-const char MSG_TIMEOUT[] PROGMEM_I1 = ISTR("Timeout"); ////
-const char MSG_BRIGHT[] PROGMEM_I1 = ISTR("Bright"); ////
-const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////
-const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////
+const char MSG_FS_ACTION[] PROGMEM_I1 = ISTR("FS Action"); ////c=10
+const char MSG_FS_CONTINUE[] PROGMEM_I1 = ISTR("Cont."); ////c=5
+const char MSG_FS_PAUSE[] PROGMEM_I1 = ISTR("Pause"); ////c=5
+const char MSG_BRIGHTNESS[] PROGMEM_I1 = ISTR("Brightness"); ////c=18
+const char MSG_BL_HIGH[] PROGMEM_I1 = ISTR("Level Bright"); ////c=12
+const char MSG_BL_LOW[] PROGMEM_I1 = ISTR("Level Dimmed"); ////c=12
+const char MSG_TIMEOUT[] PROGMEM_I1 = ISTR("Timeout"); ////c=12
+const char MSG_BRIGHT[] PROGMEM_I1 = ISTR("Bright"); ////c=6
+const char MSG_DIM[] PROGMEM_I1 = ISTR("Dim"); ////c=6
+const char MSG_AUTO[] PROGMEM_I1 = ISTR("Auto"); ////c=6
+#ifdef IR_SENSOR_ANALOG
+// Beware - the space at the beginning is necessary since it is reused in LCD menu items which are to be with a space
+const char MSG_IR_04_OR_NEWER[] PROGMEM_I1 = ISTR(" 0.4 or newer");////c=18
+const char MSG_IR_03_OR_OLDER[] PROGMEM_I1 = ISTR(" 0.3 or older");////c=18
+const char MSG_IR_UNKNOWN[] PROGMEM_I1 = ISTR("unknown state");////c=18
+#endif
 
 //not internationalized messages
 const char MSG_SD_WORKDIR_FAIL[] PROGMEM_N1 = "workDir open failed"; ////
@@ -168,3 +174,6 @@ const char MSG_OCTOPRINT_CANCEL[] PROGMEM_N1 = "// action:cancel"; ////
 const char MSG_FANCHECK_EXTRUDER[] PROGMEM_N1 = "Err: EXTR. FAN ERROR"; ////c=20
 const char MSG_FANCHECK_PRINT[] PROGMEM_N1 = "Err: PRINT FAN ERROR"; ////c=20
 const char MSG_M112_KILL[] PROGMEM_N1 = "M112 called. Emergency Stop."; ////c=20
+const char MSG_ADVANCE_K[] PROGMEM_N1 = "Advance K:"; ////c=13
+const char MSG_POWERPANIC_DETECTED[] PROGMEM_N1 = "POWER PANIC DETECTED"; ////c=20
+

+ 7 - 0
Firmware/messages.h

@@ -138,6 +138,11 @@ extern const char MSG_TIMEOUT[];
 extern const char MSG_BRIGHT[];
 extern const char MSG_DIM[];
 extern const char MSG_AUTO[];
+#ifdef IR_SENSOR_ANALOG
+extern const char MSG_IR_04_OR_NEWER[];
+extern const char MSG_IR_03_OR_OLDER[];
+extern const char MSG_IR_UNKNOWN[];
+#endif
 
 //not internationalized messages
 extern const char MSG_BROWNOUT_RESET[];
@@ -169,6 +174,8 @@ extern const char MSG_OCTOPRINT_CANCEL[];
 extern const char MSG_FANCHECK_EXTRUDER[];
 extern const char MSG_FANCHECK_PRINT[];
 extern const char MSG_M112_KILL[];
+extern const char MSG_ADVANCE_K[];
+extern const char MSG_POWERPANIC_DETECTED[];
 
 #if defined(__cplusplus)
 }

+ 26 - 24
Firmware/mmu.cpp

@@ -383,8 +383,9 @@ void mmu_loop(void)
 			//printf_P(PSTR("Eact: %d\n"), int(e_active()));
 			if (!mmu_finda && CHECK_FSENSOR && fsensor_enabled) {
 				fsensor_checkpoint_print();
-				ad_markDepleted(mmu_extruder);
-				if (lcd_autoDepleteEnabled() && !ad_allDepleted())
+				if (mmu_extruder != MMU_FILAMENT_UNKNOWN) // Can't deplete unknown extruder.
+                    ad_markDepleted(mmu_extruder);
+				if (lcd_autoDepleteEnabled() && !ad_allDepleted() && mmu_extruder != MMU_FILAMENT_UNKNOWN) // Can't auto if F=?
 				{
 				    enquecommand_front_P(PSTR("M600 AUTO")); //save print and run M600 command
 				}
@@ -539,7 +540,7 @@ void mmu_command(MmuCmd cmd)
 void mmu_load_step(bool synchronize)
 {
 		current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1;
-		plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
+		plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
 		if (synchronize) st_synchronize();
 }
 
@@ -604,7 +605,7 @@ bool mmu_get_response(uint8_t move)
 				    {
                         printf_P(PSTR("Unload 1\n"));
                         current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
-                        plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
+                        plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
                         st_synchronize();
 				    }
 				}
@@ -622,7 +623,7 @@ bool mmu_get_response(uint8_t move)
                     {
                         printf_P(PSTR("Unload 2\n"));
                         current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
-                        plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
+                        plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
                         st_synchronize();
                     }
 				}
@@ -700,13 +701,13 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
 					  //lift z
 					  current_position[Z_AXIS] += Z_PAUSE_LIFT;
 					  if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
-					  plan_buffer_line_curposXYZE(15, active_extruder);
+					  plan_buffer_line_curposXYZE(15);
 					  st_synchronize();
 					  					  
 					  //Move XY to side
 					  current_position[X_AXIS] = X_PAUSE_POS;
 					  current_position[Y_AXIS] = Y_PAUSE_POS;
-					  plan_buffer_line_curposXYZE(50, active_extruder);
+					  plan_buffer_line_curposXYZE(50);
 					  st_synchronize();
 				  }
 				  if (turn_off_nozzle) {
@@ -757,17 +758,17 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
 					lcd_display_message_fullscreen_P(_i("MMU OK. Resuming temperature..."));
 					delay_keep_alive(3000);
 				}
-                mmu_wait_for_heater_blocking();
+				mmu_wait_for_heater_blocking();
 			  }			  
 			  if (move_axes) {
 				  lcd_clear();
 				  lcd_display_message_fullscreen_P(_i("MMU OK. Resuming position..."));
 				  current_position[X_AXIS] = x_position_bckp;
 				  current_position[Y_AXIS] = y_position_bckp;
-				  plan_buffer_line_curposXYZE(50, active_extruder);
+				  plan_buffer_line_curposXYZE(50);
 				  st_synchronize();
 				  current_position[Z_AXIS] = z_position_bckp;
-				  plan_buffer_line_curposXYZE(15, active_extruder);
+				  plan_buffer_line_curposXYZE(15);
 				  st_synchronize();
 			  }
 			  else {
@@ -795,8 +796,8 @@ void mmu_load_to_nozzle()
 {
 	st_synchronize();
 	
-	bool saved_e_relative_mode = axis_relative_modes[E_AXIS];
-	if (!saved_e_relative_mode) axis_relative_modes[E_AXIS] = true;
+	const bool saved_e_relative_mode = axis_relative_modes & E_AXIS_MASK;
+	if (!saved_e_relative_mode) axis_relative_modes |= E_AXIS_MASK;
 	if (ir_sensor_detected)
 	{
 		current_position[E_AXIS] += 3.0f;
@@ -806,21 +807,21 @@ void mmu_load_to_nozzle()
 		current_position[E_AXIS] += 7.2f;
 	}
     float feedrate = 562;
-	plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
+	plan_buffer_line_curposXYZE(feedrate / 60);
     st_synchronize();
 	current_position[E_AXIS] += 14.4f;
 	feedrate = 871;
-	plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
+	plan_buffer_line_curposXYZE(feedrate / 60);
     st_synchronize();
 	current_position[E_AXIS] += 36.0f;
 	feedrate = 1393;
-	plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
+	plan_buffer_line_curposXYZE(feedrate / 60);
     st_synchronize();
 	current_position[E_AXIS] += 14.4f;
 	feedrate = 871;
-	plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
+	plan_buffer_line_curposXYZE(feedrate / 60);
     st_synchronize();
-	if (!saved_e_relative_mode) axis_relative_modes[E_AXIS] = false;
+	if (!saved_e_relative_mode) axis_relative_modes &= ~E_AXIS_MASK;
 }
 
 void mmu_M600_wait_and_beep() {
@@ -829,7 +830,7 @@ void mmu_M600_wait_and_beep() {
 		KEEPALIVE_STATE(PAUSED_FOR_USER);
 
 		int counterBeep = 0;
-		lcd_display_message_fullscreen_P(_i("Remove old filament and press the knob to start loading new filament."));
+		lcd_display_message_fullscreen_P(_i("Remove old filament and press the knob to start loading new filament.")); ////MSG_REMOVE_OLD_FILAMENT c=20 r=5
 		bool bFirst=true;
 
 		while (!lcd_clicked()){
@@ -1071,7 +1072,7 @@ void mmu_filament_ramming()
     for(uint8_t i = 0; i < (sizeof(ramming_sequence)/sizeof(E_step));++i)
     {
         current_position[E_AXIS] += pgm_read_float(&(ramming_sequence[i].extrude));
-        plan_buffer_line_curposXYZE(pgm_read_float(&(ramming_sequence[i].feed_rate)), active_extruder);
+        plan_buffer_line_curposXYZE(pgm_read_float(&(ramming_sequence[i].feed_rate)));
         st_synchronize();
     }
 }
@@ -1384,7 +1385,7 @@ void mmu_cut_filament(uint8_t filament_nr)
     {
         LcdUpdateDisabler disableLcdUpdate;
         lcd_clear();
-        lcd_set_cursor(0, 1); lcd_puts_P(_i("Cutting filament")); //// c=18 r=1
+        lcd_set_cursor(0, 1); lcd_puts_P(_i("Cutting filament")); //// c=18
         lcd_print(" ");
         lcd_print(filament_nr + 1);
         mmu_filament_ramming();
@@ -1445,9 +1446,9 @@ bFilamentAction=false;                            // NOT in "mmu_fil_eject_menu(
 static bool can_load()
 {
     current_position[E_AXIS] += 60;
-    plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
+    plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
     current_position[E_AXIS] -= 52;
-    plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
+    plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
     st_synchronize();
 
     uint_least8_t filament_detected_count = 0;
@@ -1457,7 +1458,7 @@ static bool can_load()
     for(uint_least8_t i = 0; i < steps; ++i)
     {
         current_position[E_AXIS] -= e_increment;
-        plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
+        plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE);
         st_synchronize();
         if(0 == PIN_GET(IR_SENSOR_PIN))
         {
@@ -1547,7 +1548,7 @@ void mmu_continue_loading(bool blocking)
     };
     Ls state = Ls::Enter;
 
-    const uint_least8_t max_retry = 2;
+    const uint_least8_t max_retry = 3;
     uint_least8_t retry = 0;
 
     while (!success)
@@ -1589,6 +1590,7 @@ void mmu_continue_loading(bool blocking)
             if (blocking)
             {
                 marlin_wait_for_click();
+                st_synchronize();
                 restore_print_from_ram_and_continue(0);
                 state = Ls::Retry;
             }

+ 21 - 11
Firmware/optiboot_w25x20cl.cpp

@@ -99,9 +99,11 @@ struct block_t;
 extern struct block_t *block_buffer;
 
 //! @brief Enter an STK500 compatible Optiboot boot loader waiting for flashing the languages to an external flash memory.
-void optiboot_w25x20cl_enter()
+//! @return 1 if "start\n" was not sent. Optiboot was skipped
+//! @return 0 if "start\n" was sent. Optiboot ran normally. No need to send "start\n" in setup()
+uint8_t optiboot_w25x20cl_enter()
 {
-  if (boot_app_flags & BOOT_APP_FLG_USER0) return;
+  if (boot_app_flags & BOOT_APP_FLG_USER0) return 1;
   uint8_t ch;
   uint8_t rampz = 0;
   register uint16_t address = 0;
@@ -120,38 +122,46 @@ void optiboot_w25x20cl_enter()
     unsigned long  boot_timer = 0;
     const char    *ptr = entry_magic_send;
     const char    *end = strlen_P(entry_magic_send) + ptr;
-    // Initialize the serial line.
-    UCSR0A |= (1 << U2X0);
-    UBRR0L = (((float)(F_CPU))/(((float)(115200))*8.0)-1.0+0.5);
-    UCSR0B = (1 << RXEN0) | (1 << TXEN0);
+    const uint8_t selectedSerialPort_bak = selectedSerialPort;
     // Flush the serial line.
     while (RECV_READY) {
       watchdogReset();
       // Dummy register read (discard)
       (void)(*(char *)UDR0);
     }
+    selectedSerialPort = 0; //switch to Serial0
+    MYSERIAL.flush(); //clear RX buffer
+    int SerialHead = rx_buffer.head;
     // Send the initial magic string.
     while (ptr != end)
       putch(pgm_read_byte(ptr ++));
     watchdogReset();
-    // Wait for one second until a magic string (constant entry_magic) is received
+    // Wait for two seconds until a magic string (constant entry_magic) is received
     // from the serial line.
     ptr = entry_magic_receive;
     end = strlen_P(entry_magic_receive) + ptr;
     while (ptr != end) {
-      while (! RECV_READY) {
+      while (rx_buffer.head == SerialHead) {
         watchdogReset();
         delayMicroseconds(1);
         if (++ boot_timer > boot_timeout)
+        {
           // Timeout expired, continue with the application.
-          return;
+          selectedSerialPort = selectedSerialPort_bak; //revert Serial setting
+          return 0;
+        }
       }
-      ch = UDR0;
+      ch = rx_buffer.buffer[SerialHead];
+      SerialHead = (unsigned int)(SerialHead + 1) % RX_BUFFER_SIZE;
       if (pgm_read_byte(ptr ++) != ch)
+      {
           // Magic was not received correctly, continue with the application
-          return;
+          selectedSerialPort = selectedSerialPort_bak; //revert Serial setting
+          return 0;
+      }
       watchdogReset();
     }
+    cbi(UCSR0B, RXCIE0); //disable the MarlinSerial0 interrupt
     // Send the cfm magic string.
     ptr = entry_magic_cfm;
     while (ptr != end)

+ 1 - 1
Firmware/optiboot_w25x20cl.h

@@ -1,6 +1,6 @@
 #ifndef OPTIBOOT_W25X20CL_H
 #define OPTIBOOT_W25X20CL_H
 
-extern void optiboot_w25x20cl_enter();
+extern uint8_t optiboot_w25x20cl_enter();
 
 #endif /* OPTIBOOT_W25X20CL_H */

+ 9 - 14
Firmware/pat9125.c

@@ -183,9 +183,9 @@ uint8_t pat9125_update(void)
 		if (pat9125_PID1 == 0xff) return 0;
 		if (ucMotion & 0x80)
 		{
-			uint8_t ucXL = pat9125_rd_reg(PAT9125_DELTA_XL);
-			uint8_t ucYL = pat9125_rd_reg(PAT9125_DELTA_YL);
-			uint8_t ucXYH = pat9125_rd_reg(PAT9125_DELTA_XYH);
+			uint16_t ucXL = pat9125_rd_reg(PAT9125_DELTA_XL);
+			uint16_t ucYL = pat9125_rd_reg(PAT9125_DELTA_YL);
+			uint16_t ucXYH = pat9125_rd_reg(PAT9125_DELTA_XYH);
 			if (pat9125_PID1 == 0xff) return 0;
 			int16_t iDX = ucXL | ((ucXYH << 4) & 0xf00);
 			int16_t iDY = ucYL | ((ucXYH << 8) & 0xf00);
@@ -207,8 +207,8 @@ uint8_t pat9125_update_y(void)
 		if (pat9125_PID1 == 0xff) return 0;
 		if (ucMotion & 0x80)
 		{
-			uint8_t ucYL = pat9125_rd_reg(PAT9125_DELTA_YL);
-			uint8_t ucXYH = pat9125_rd_reg(PAT9125_DELTA_XYH);
+			uint16_t ucYL = pat9125_rd_reg(PAT9125_DELTA_YL);
+			uint16_t ucXYH = pat9125_rd_reg(PAT9125_DELTA_XYH);
 			if (pat9125_PID1 == 0xff) return 0;
 			int16_t iDY = ucYL | ((ucXYH << 8) & 0xf00);
 			if (iDY & 0x800) iDY -= 4096;
@@ -219,18 +219,13 @@ uint8_t pat9125_update_y(void)
 	return 0;
 }
 
-uint8_t pat9125_update_y2(void)
+uint8_t pat9125_update_bs(void)
 {
 	if ((pat9125_PID1 == 0x31) && (pat9125_PID2 == 0x91))
 	{
-		uint8_t ucMotion = pat9125_rd_reg(PAT9125_MOTION);
-		if (pat9125_PID1 == 0xff) return 0; //NOACK error
-		if (ucMotion & 0x80)
-		{
-			int8_t dy = pat9125_rd_reg(PAT9125_DELTA_YL);
-			if (pat9125_PID1 == 0xff) return 0; //NOACK error
-			pat9125_y -= dy; //negative number, because direction switching does not work
-		}
+		pat9125_b = pat9125_rd_reg(PAT9125_FRAME);
+		pat9125_s = pat9125_rd_reg(PAT9125_SHUTTER);
+		if (pat9125_PID1 == 0xff) return 0;
 		return 1;
 	}
 	return 0;

+ 3 - 3
Firmware/pat9125.h

@@ -19,9 +19,9 @@ extern uint8_t pat9125_b;
 extern uint8_t pat9125_s;
 
 extern uint8_t pat9125_init(void);
-extern uint8_t pat9125_update(void);
-extern uint8_t pat9125_update_y(void);
-extern uint8_t pat9125_update_y2(void);
+extern uint8_t pat9125_update(void);    // update all sensor data
+extern uint8_t pat9125_update_y(void);  // update _y only
+extern uint8_t pat9125_update_bs(void); // update _b/_s only
 
 
 #if defined(__cplusplus)

+ 196 - 69
Firmware/planner.cpp

@@ -126,11 +126,14 @@ float extrude_min_temp=EXTRUDE_MINTEMP;
 #endif
 
 #ifdef LIN_ADVANCE
-    float extruder_advance_k = LIN_ADVANCE_K,
-    advance_ed_ratio = LIN_ADVANCE_E_D_RATIO,
-    position_float[NUM_AXIS] = { 0 };
+float extruder_advance_K = LA_K_DEF;
+float position_float[NUM_AXIS];
 #endif
 
+// Request the next block to start at zero E count
+static bool plan_reset_next_e_queue;
+static bool plan_reset_next_e_sched;
+
 // Returns the index of the next block in the ring buffer
 // NOTE: Removed modulo (%) operator, which uses an expensive divide and multiplication.
 static inline int8_t next_block_index(int8_t block_index) {
@@ -223,11 +226,23 @@ void calculate_trapezoid_for_block(block_t *block, float entry_speed, float exit
   // Size of Plateau of Nominal Rate.
   uint32_t plateau_steps     = 0;
 
+#ifdef LIN_ADVANCE
+  uint16_t final_adv_steps = 0;
+  uint16_t max_adv_steps = 0;
+  if (block->use_advance_lead) {
+      final_adv_steps = final_rate * block->adv_comp;
+  }
+#endif
+
   // Is the Plateau of Nominal Rate smaller than nothing? That means no cruising, and we will
   // have to use intersection_distance() to calculate when to abort acceleration and start braking
   // in order to reach the final_rate exactly at the end of this block.
   if (accel_decel_steps < block->step_event_count.wide) {
     plateau_steps = block->step_event_count.wide - accel_decel_steps;
+#ifdef LIN_ADVANCE
+    if (block->use_advance_lead)
+        max_adv_steps = block->nominal_rate * block->adv_comp;
+#endif
   } else {
     uint32_t acceleration_x4  = acceleration << 2;
     // Avoid negative numbers
@@ -260,6 +275,19 @@ void calculate_trapezoid_for_block(block_t *block, float entry_speed, float exit
             decelerate_steps = block->step_event_count.wide;
         accelerate_steps = block->step_event_count.wide - decelerate_steps;
     }
+
+#ifdef LIN_ADVANCE
+    if (block->use_advance_lead) {
+        if(!accelerate_steps || !decelerate_steps) {
+            // accelerate_steps=0: deceleration-only ramp, max_rate is effectively unused
+            // decelerate_steps=0: acceleration-only ramp, max_rate _is_ final_rate
+            max_adv_steps = final_adv_steps;
+        } else {
+            float max_rate = sqrt(acceleration_x2 * accelerate_steps + initial_rate_sqr);
+            max_adv_steps = max_rate * block->adv_comp;
+        }
+    }
+#endif
   }
 
   CRITICAL_SECTION_START;  // Fill variables used by the stepper in a critical section
@@ -272,6 +300,10 @@ void calculate_trapezoid_for_block(block_t *block, float entry_speed, float exit
     block->decelerate_after = accelerate_steps+plateau_steps;
     block->initial_rate = initial_rate;
     block->final_rate = final_rate;
+#ifdef LIN_ADVANCE
+    block->final_adv_steps = final_adv_steps;
+    block->max_adv_steps = max_adv_steps;
+#endif
   }
   CRITICAL_SECTION_END;
 }
@@ -424,14 +456,16 @@ void plan_init() {
   block_buffer_head = 0;
   block_buffer_tail = 0;
   memset(position, 0, sizeof(position)); // clear position
-#ifdef LIN_ADVANCE
-  memset(position_float, 0, sizeof(position)); // clear position
-#endif
+  #ifdef LIN_ADVANCE
+  memset(position_float, 0, sizeof(position_float)); // clear position
+  #endif
   previous_speed[0] = 0.0;
   previous_speed[1] = 0.0;
   previous_speed[2] = 0.0;
   previous_speed[3] = 0.0;
   previous_nominal_speed = 0.0;
+  plan_reset_next_e_queue = false;
+  plan_reset_next_e_sched = false;
 }
 
 
@@ -639,7 +673,9 @@ void planner_abort_hard()
     // Apply inverse world correction matrix.
     machine2world(current_position[X_AXIS], current_position[Y_AXIS]);
     memcpy(destination, current_position, sizeof(destination));
-
+#ifdef LIN_ADVANCE
+    memcpy(position_float, current_position, sizeof(position_float));
+#endif
     // Resets planner junction speeds. Assumes start from rest.
     previous_nominal_speed = 0.0;
     previous_speed[0] = 0.0;
@@ -647,12 +683,23 @@ void planner_abort_hard()
     previous_speed[2] = 0.0;
     previous_speed[3] = 0.0;
 
+    plan_reset_next_e_queue = false;
+    plan_reset_next_e_sched = false;
+
     // Relay to planner wait routine, that the current line shall be canceled.
     waiting_inside_plan_buffer_line_print_aborted = true;
 }
 
-void plan_buffer_line_curposXYZE(float feed_rate, uint8_t extruder) { 
-	plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feed_rate, extruder );
+void plan_buffer_line_curposXYZE(float feed_rate) {
+    plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feed_rate, active_extruder );
+}
+
+void plan_buffer_line_destinationXYZE(float feed_rate) {
+    plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feed_rate, active_extruder);
+}
+
+void plan_set_position_curposXYZE(){
+    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
 }
 
 float junction_deviation = 0.1;
@@ -710,6 +757,20 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
   // Save the global feedrate at scheduling time
   block->gcode_feedrate = feedrate;
 
+  // Reset the starting E position when requested
+  if (plan_reset_next_e_queue)
+  {
+      position[E_AXIS] = 0;
+#ifdef LIN_ADVANCE
+      position_float[E_AXIS] = 0;
+#endif
+
+      // the block might still be discarded later, but we need to ensure the lower-level
+      // count_position is also reset correctly for consistent results!
+      plan_reset_next_e_queue = false;
+      plan_reset_next_e_sched = true;
+  }
+
 #ifdef ENABLE_AUTO_BED_LEVELING
   apply_rotation_xyz(plan_bed_level_matrix, x, y, z);
 #endif // ENABLE_AUTO_BED_LEVELING
@@ -775,21 +836,15 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
 #endif // ENABLE_MESH_BED_LEVELING
   target[E_AXIS] = lround(e*cs.axis_steps_per_unit[E_AXIS]);
   
-#ifdef LIN_ADVANCE
-    const float mm_D_float = sqrt(sq(x - position_float[X_AXIS]) + sq(y - position_float[Y_AXIS]));
-    float de_float = e - position_float[E_AXIS];
-#endif
-    
   #ifdef PREVENT_DANGEROUS_EXTRUDE
   if(target[E_AXIS]!=position[E_AXIS])
   {
     if(degHotend(active_extruder)<extrude_min_temp)
     {
       position[E_AXIS]=target[E_AXIS]; //behave as if the move really took place, but ignore E part
-#ifdef LIN_ADVANCE
+      #ifdef LIN_ADVANCE
       position_float[E_AXIS] = e;
-      de_float = 0;
-#endif
+      #endif
       SERIAL_ECHO_START;
       SERIAL_ECHOLNRPGM(_n(" cold extrusion prevented"));////MSG_ERR_COLD_EXTRUDE_STOP
     }
@@ -798,10 +853,9 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
     if(labs(target[E_AXIS]-position[E_AXIS])>cs.axis_steps_per_unit[E_AXIS]*EXTRUDE_MAXLENGTH)
     {
       position[E_AXIS]=target[E_AXIS]; //behave as if the move really took place, but ignore E part
-#ifdef LIN_ADVANCE
-        position_float[E_AXIS] = e;
-        de_float = 0;
-#endif
+      #ifdef LIN_ADVANCE
+      position_float[E_AXIS] = e;
+      #endif
       SERIAL_ECHO_START;
       SERIAL_ECHOLNRPGM(_n(" too long extrusion prevented"));////MSG_ERR_LONG_EXTRUDE_STOP
     }
@@ -1012,6 +1066,9 @@ Having the real displacement of the head, we can calculate the total movement le
     block->nominal_rate *= speed_factor;
   }
 
+#ifdef LIN_ADVANCE
+  float e_D_ratio = 0;
+#endif
   // Compute and limit the acceleration rate for the trapezoid generator.  
   // block->step_event_count ... event count of the fastest axis
   // block->millimeters ... Euclidian length of the XYZ movement or the E length, if no XYZ movement.
@@ -1019,10 +1076,59 @@ Having the real displacement of the head, we can calculate the total movement le
   if(block->steps_x.wide == 0 && block->steps_y.wide == 0 && block->steps_z.wide == 0)
   {
     block->acceleration_st = ceil(cs.retract_acceleration * steps_per_mm); // convert to: acceleration steps/sec^2
+    #ifdef LIN_ADVANCE
+    block->use_advance_lead = false;
+    #endif
   }
   else
   {
     block->acceleration_st = ceil(cs.acceleration * steps_per_mm); // convert to: acceleration steps/sec^2
+
+    #ifdef LIN_ADVANCE
+    /**
+     * Use LIN_ADVANCE within this block if all these are true:
+     *
+     * extruder_advance_K       : There is an advance factor set.
+     * delta_mm[E_AXIS] >= 0    : Extruding or traveling, but _not_ retracting.
+     * |delta_mm[Z_AXIS]| < 0.5 : Z is only moved for leveling (_not_ for priming)
+     */
+    block->use_advance_lead = extruder_advance_K > 0
+                              && delta_mm[E_AXIS] >= 0
+                              && abs(delta_mm[Z_AXIS]) < 0.5;
+    if (block->use_advance_lead) {
+#ifdef LA_FLOWADJ
+        // M221/FLOW should change uniformly the extrusion thickness
+        float delta_e = (e - position_float[E_AXIS]) / extruder_multiplier[extruder];
+#else
+        // M221/FLOW only adjusts for an incorrect source diameter
+        float delta_e = (e - position_float[E_AXIS]);
+#endif
+        float delta_D = sqrt(sq(x - position_float[X_AXIS])
+                             + sq(y - position_float[Y_AXIS])
+                             + sq(z - position_float[Z_AXIS]));
+
+        // all extrusion moves with LA require a compression which is proportional to the
+        // extrusion_length to distance ratio (e/D)
+        e_D_ratio = delta_e / delta_D;
+
+        // Check for unusual high e_D ratio to detect if a retract move was combined with the last
+        // print move due to min. steps per segment. Never execute this with advance! This assumes
+        // no one will use a retract length of 0mm < retr_length < ~0.2mm and no one will print
+        // 100mm wide lines using 3mm filament or 35mm wide lines using 1.75mm filament.
+        if (e_D_ratio > 3.0)
+            block->use_advance_lead = false;
+        else if (e_D_ratio > 0) {
+            const float max_accel_per_s2 = cs.max_jerk[E_AXIS] / (extruder_advance_K * e_D_ratio);
+            if (cs.acceleration > max_accel_per_s2) {
+                block->acceleration_st = ceil(max_accel_per_s2 * steps_per_mm);
+                #ifdef LA_DEBUG
+                SERIAL_ECHOLNPGM("LA: Block acceleration limited due to max E-jerk");
+                #endif
+            }
+        }
+    }
+    #endif
+
     // Limit acceleration per axis
     //FIXME Vojtech: One shall rather limit a projection of the acceleration vector instead of using the limit.
     if(((float)block->acceleration_st * (float)block->steps_x.wide / (float)block->step_event_count.wide) > axis_steps_per_sqr_second[X_AXIS])
@@ -1053,7 +1159,7 @@ Having the real displacement of the head, we can calculate the total movement le
     block->acceleration_st = (block->acceleration_st + (bresenham_oversample >> 1)) / bresenham_oversample;
 #endif
 
-  block->acceleration_rate = (long)((float)block->acceleration_st * (16777216.0 / (F_CPU / 8.0)));
+  block->acceleration_rate = ((float)block->acceleration_st * (16777216.0 / (F_CPU / 8.0)));
 
   // Start with a safe speed.
   // Safe speed is the speed, from which the machine may halt to stop immediately.
@@ -1083,6 +1189,13 @@ Having the real displacement of the head, we can calculate the total movement le
   // Reset the block flag.
   block->flag = 0;
 
+  if (plan_reset_next_e_sched)
+  {
+      // finally propagate a pending reset
+      block->flag |= BLOCK_FLAG_E_RESET;
+      plan_reset_next_e_sched = false;
+  }
+
   // Initial limit on the segment entry velocity.
   float vmax_junction;
 
@@ -1171,39 +1284,55 @@ Having the real displacement of the head, we can calculate the total movement le
   previous_nominal_speed = block->nominal_speed;
   previous_safe_speed = safe_speed;
 
+  // Precalculate the division, so when all the trapezoids in the planner queue get recalculated, the division is not repeated.
+  block->speed_factor = block->nominal_rate / block->nominal_speed;
+
 #ifdef LIN_ADVANCE
+  if (block->use_advance_lead) {
+      // calculate the compression ratio for the segment (the required advance steps are computed
+      // during trapezoid planning)
+      float adv_comp = extruder_advance_K * e_D_ratio * cs.axis_steps_per_unit[E_AXIS]; // (step/(mm/s))
+      block->adv_comp = adv_comp / block->speed_factor; // step/(step/min)
+
+      float advance_speed;
+      if (e_D_ratio > 0)
+          advance_speed = (extruder_advance_K * e_D_ratio * block->acceleration * cs.axis_steps_per_unit[E_AXIS]);
+      else
+          advance_speed = cs.max_jerk[E_AXIS] * cs.axis_steps_per_unit[E_AXIS];
+
+      // to save more space we avoid another copy of calc_timer and go through slow division, but we
+      // still need to replicate the *exact* same step grouping policy (see below)
+      if (advance_speed > MAX_STEP_FREQUENCY) advance_speed = MAX_STEP_FREQUENCY;
+      float advance_rate = (F_CPU / 8.0) / advance_speed;
+      if (advance_speed > 20000) {
+          block->advance_rate = advance_rate * 4;
+          block->advance_step_loops = 4;
+      }
+      else if (advance_speed > 10000) {
+          block->advance_rate = advance_rate * 2;
+          block->advance_step_loops = 2;
+      }
+      else
+      {
+          // never overflow the internal accumulator with very low rates
+          if (advance_rate < UINT16_MAX)
+              block->advance_rate = advance_rate;
+          else
+              block->advance_rate = UINT16_MAX;
+          block->advance_step_loops = 1;
+      }
 
-    //
-    // Use LIN_ADVANCE for blocks if all these are true:
-    //
-    // esteps                                          : We have E steps todo (a printing move)
-    //
-    // block->steps[X_AXIS] || block->steps[Y_AXIS]    : We have a movement in XY direction (i.e., not retract / prime).
-    //
-    // extruder_advance_k                              : There is an advance factor set.
-    //
-    // block->steps[E_AXIS] != block->step_event_count : A problem occurs if the move before a retract is too small.
-    //                                                   In that case, the retract and move will be executed together.
-    //                                                   This leads to too many advance steps due to a huge e_acceleration.
-    //                                                   The math is good, but we must avoid retract moves with advance!
-    // de_float > 0.0                                  : Extruder is running forward (e.g., for "Wipe while retracting" (Slic3r) or "Combing" (Cura) moves)
-    //
-    block->use_advance_lead =  block->steps_e.wide
-                           && (block->steps_x.wide || block->steps_y.wide)
-                           && extruder_advance_k
-                           && (uint32_t)block->steps_e.wide != block->step_event_count.wide
-                           && de_float > 0.0;
-    if (block->use_advance_lead)
-        block->abs_adv_steps_multiplier8 = lround(
-                          extruder_advance_k
-                          * ((advance_ed_ratio < 0.000001) ? de_float / mm_D_float : advance_ed_ratio) // Use the fixed ratio, if set
-                          * (block->nominal_speed / (float)block->nominal_rate)
-                          * cs.axis_steps_per_unit[E_AXIS] * 256.0
-                          );
+      #ifdef LA_DEBUG
+      if (block->advance_step_loops > 2)
+          // @wavexx: we should really check for the difference between step_loops and
+          //          advance_step_loops instead. A difference of more than 1 will lead
+          //          to uneven speed and *should* be adjusted here by furthermore
+          //          reducing the speed.
+          SERIAL_ECHOLNPGM("LA: More than 2 steps per eISR loop executed.");
+      #endif
+  }
 #endif
-    
-  // Precalculate the division, so when all the trapezoids in the planner queue get recalculated, the division is not repeated.
-  block->speed_factor = block->nominal_rate / block->nominal_speed;
+
   calculate_trapezoid_for_block(block, block->entry_speed, safe_speed);
 
   if (block->step_event_count.wide <= 32767)
@@ -1215,12 +1344,12 @@ Having the real displacement of the head, we can calculate the total movement le
   // Update position
   memcpy(position, target, sizeof(target)); // position[] = target[]
 
-#ifdef LIN_ADVANCE
+  #ifdef LIN_ADVANCE
   position_float[X_AXIS] = x;
   position_float[Y_AXIS] = y;
   position_float[Z_AXIS] = z;
   position_float[E_AXIS] = e;
-#endif
+  #endif
     
   // Recalculate the trapezoids to maximize speed at the segment transitions while respecting
   // the machine limits (maximum acceleration and maximum jerk).
@@ -1264,14 +1393,7 @@ void plan_set_position(float x, float y, float z, const float &e)
     apply_rotation_xyz(plan_bed_level_matrix, x, y, z);
 #endif // ENABLE_AUTO_BED_LEVELING
 
-    // Apply the machine correction matrix.
-    if (world2machine_correction_mode != WORLD2MACHINE_CORRECTION_NONE)
-    {
-        float tmpx = x;
-        float tmpy = y;
-        x = world2machine_rotation_and_skew[0][0] * tmpx + world2machine_rotation_and_skew[0][1] * tmpy + world2machine_shift[0];
-        y = world2machine_rotation_and_skew[1][0] * tmpx + world2machine_rotation_and_skew[1][1] * tmpy + world2machine_shift[1];
-    }
+    world2machine(x, y);
 
   position[X_AXIS] = lround(x*cs.axis_steps_per_unit[X_AXIS]);
   position[Y_AXIS] = lround(y*cs.axis_steps_per_unit[Y_AXIS]);
@@ -1283,12 +1405,12 @@ void plan_set_position(float x, float y, float z, const float &e)
   position[Z_AXIS] = lround(z*cs.axis_steps_per_unit[Z_AXIS]);
 #endif // ENABLE_MESH_BED_LEVELING
   position[E_AXIS] = lround(e*cs.axis_steps_per_unit[E_AXIS]);
-#ifdef LIN_ADVANCE
+  #ifdef LIN_ADVANCE
   position_float[X_AXIS] = x;
   position_float[Y_AXIS] = y;
   position_float[Z_AXIS] = z;
   position_float[E_AXIS] = e;
-#endif
+  #endif
   st_set_position(position[X_AXIS], position[Y_AXIS], position[Z_AXIS], position[E_AXIS]);
   previous_nominal_speed = 0.0; // Resets planner junction speeds. Assumes start from rest.
   previous_speed[0] = 0.0;
@@ -1300,11 +1422,11 @@ void plan_set_position(float x, float y, float z, const float &e)
 // Only useful in the bed leveling routine, when the mesh bed leveling is off.
 void plan_set_z_position(const float &z)
 {
-	#ifdef LIN_ADVANCE
-	position_float[Z_AXIS] = z;
-	#endif
-    position[Z_AXIS] = lround(z*cs.axis_steps_per_unit[Z_AXIS]);
-    st_set_position(position[X_AXIS], position[Y_AXIS], position[Z_AXIS], position[E_AXIS]);
+  #ifdef LIN_ADVANCE
+  position_float[Z_AXIS] = z;
+  #endif
+  position[Z_AXIS] = lround(z*cs.axis_steps_per_unit[Z_AXIS]);
+  st_set_position(position[X_AXIS], position[Y_AXIS], position[Z_AXIS], position[E_AXIS]);
 }
 
 void plan_set_e_position(const float &e)
@@ -1316,6 +1438,11 @@ void plan_set_e_position(const float &e)
   st_set_e_position(position[E_AXIS]);
 }
 
+void plan_reset_next_e()
+{
+    plan_reset_next_e_queue = true;
+}
+
 #ifdef PREVENT_DANGEROUS_EXTRUDE
 void set_extrude_min_temp(float temp)
 {

+ 26 - 11
Firmware/planner.h

@@ -44,6 +44,8 @@ enum BlockFlag {
     // than 32767, therefore the DDA algorithm may run with 16bit resolution only.
     // In addition, the stepper routine will not do any end stop checking for higher performance.
     BLOCK_FLAG_DDA_LOWRES = 8,
+    // Block starts with Zeroed E counter
+    BLOCK_FLAG_E_RESET = 16,
 };
 
 union dda_isteps_t
@@ -71,12 +73,12 @@ typedef struct {
   // steps_x.y,z, step_event_count, acceleration_rate, direction_bits and active_extruder are set by plan_buffer_line().
   dda_isteps_t steps_x, steps_y, steps_z, steps_e;  // Step count along each axis
   dda_usteps_t step_event_count;            // The number of step events required to complete this block
-  long acceleration_rate;                   // The acceleration rate used for acceleration calculation
+  uint32_t acceleration_rate;               // The acceleration rate used for acceleration calculation
   unsigned char direction_bits;             // The direction bit set for this block (refers to *_DIRECTION_BIT in config.h)
   unsigned char active_extruder;            // Selects the active extruder
   // accelerate_until and decelerate_after are set by calculate_trapezoid_for_block() and they need to be synchronized with the stepper interrupt controller.
-  long accelerate_until;                    // The index of the step event on which to stop acceleration
-  long decelerate_after;                    // The index of the step event on which to start decelerating
+  uint32_t accelerate_until;                // The index of the step event on which to stop acceleration
+  uint32_t decelerate_after;                // The index of the step event on which to start decelerating
 
   // Fields used by the motion planner to manage acceleration
 //  float speed_x, speed_y, speed_z, speed_e;        // Nominal mm/sec for each axis
@@ -98,22 +100,25 @@ typedef struct {
 
   // Settings for the trapezoid generator (runs inside an interrupt handler).
   // Changing the following values in the planner needs to be synchronized with the interrupt handler by disabling the interrupts.
-  //FIXME nominal_rate, initial_rate and final_rate are limited to uint16_t by MultiU24X24toH16 in the stepper interrupt anyway!
   unsigned long nominal_rate;                        // The nominal step rate for this block in step_events/sec 
   unsigned long initial_rate;                        // The jerk-adjusted step rate at start of block  
   unsigned long final_rate;                          // The minimal rate at exit
   unsigned long acceleration_st;                     // acceleration steps/sec^2
-  //FIXME does it have to be unsigned long? Probably uint8_t would be just fine.
-  unsigned long fan_speed;
+  //FIXME does it have to be int? Probably uint8_t would be just fine. Need to change in other places as well
+  int fan_speed;
   volatile char busy;
 
 
   // Pre-calculated division for the calculate_trapezoid_for_block() routine to run faster.
   float speed_factor;
-    
+
 #ifdef LIN_ADVANCE
-  bool use_advance_lead;
-  unsigned long abs_adv_steps_multiplier8; // Factorised by 2^8 to avoid float
+  bool use_advance_lead;            // Whether the current block uses LA
+  uint16_t advance_rate,            // Step-rate for extruder speed
+           max_adv_steps,           // max. advance steps to get cruising speed pressure (not always nominal_speed!)
+           final_adv_steps;         // advance steps due to exit speed
+  uint8_t advance_step_loops;       // Number of stepper ticks for each advance isr
+  float adv_comp;                   // Precomputed E compression factor
 #endif
 
   // Save/recovery state data
@@ -123,7 +128,7 @@ typedef struct {
 } block_t;
 
 #ifdef LIN_ADVANCE
-  extern float extruder_advance_k, advance_ed_ratio;
+extern float extruder_advance_K;    // Linear-advance K factor
 #endif
 
 #ifdef ENABLE_AUTO_BED_LEVELING
@@ -148,7 +153,11 @@ vector_3 plan_get_position();
 /// plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], ...
 /// saves almost 5KB.
 /// The performance penalty is negligible, since these planned lines are usually maintenance moves with the extruder.
-void plan_buffer_line_curposXYZE(float feed_rate, uint8_t extruder);
+void plan_buffer_line_curposXYZE(float feed_rate);
+
+void plan_buffer_line_destinationXYZE(float feed_rate);
+
+void plan_set_position_curposXYZE();
 
 void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder, const float* gcode_target = NULL);
 //void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
@@ -164,6 +173,12 @@ void plan_set_position(float x, float y, float z, const float &e);
 void plan_set_z_position(const float &z);
 void plan_set_e_position(const float &e);
 
+// Reset the E position to zero at the start of the next segment
+void plan_reset_next_e();
+
+inline void set_current_to_destination() { memcpy(current_position, destination, sizeof(current_position)); }
+inline void set_destination_to_current() { memcpy(destination, current_position, sizeof(destination)); }
+
 extern bool e_active();
 
 void check_axes_activity();

+ 147 - 0
Firmware/speed_lookuptable.cpp

@@ -0,0 +1,147 @@
+#include "speed_lookuptable.h"
+
+#if F_CPU == 16000000
+
+const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {\
+{ 62500, 55556}, { 6944, 3268}, { 3676, 1176}, { 2500, 607}, { 1893, 369}, { 1524, 249}, { 1275, 179}, { 1096, 135}, 
+{ 961, 105}, { 856, 85}, { 771, 69}, { 702, 58}, { 644, 49}, { 595, 42}, { 553, 37}, { 516, 32}, 
+{ 484, 28}, { 456, 25}, { 431, 23}, { 408, 20}, { 388, 19}, { 369, 16}, { 353, 16}, { 337, 14}, 
+{ 323, 13}, { 310, 11}, { 299, 11}, { 288, 11}, { 277, 9}, { 268, 9}, { 259, 8}, { 251, 8}, 
+{ 243, 8}, { 235, 7}, { 228, 6}, { 222, 6}, { 216, 6}, { 210, 6}, { 204, 5}, { 199, 5}, 
+{ 194, 5}, { 189, 4}, { 185, 4}, { 181, 4}, { 177, 4}, { 173, 4}, { 169, 4}, { 165, 3}, 
+{ 162, 3}, { 159, 4}, { 155, 3}, { 152, 3}, { 149, 2}, { 147, 3}, { 144, 3}, { 141, 2}, 
+{ 139, 3}, { 136, 2}, { 134, 2}, { 132, 3}, { 129, 2}, { 127, 2}, { 125, 2}, { 123, 2}, 
+{ 121, 2}, { 119, 1}, { 118, 2}, { 116, 2}, { 114, 1}, { 113, 2}, { 111, 2}, { 109, 1}, 
+{ 108, 2}, { 106, 1}, { 105, 2}, { 103, 1}, { 102, 1}, { 101, 1}, { 100, 2}, { 98, 1}, 
+{ 97, 1}, { 96, 1}, { 95, 2}, { 93, 1}, { 92, 1}, { 91, 1}, { 90, 1}, { 89, 1}, 
+{ 88, 1}, { 87, 1}, { 86, 1}, { 85, 1}, { 84, 1}, { 83, 0}, { 83, 1}, { 82, 1}, 
+{ 81, 1}, { 80, 1}, { 79, 1}, { 78, 0}, { 78, 1}, { 77, 1}, { 76, 1}, { 75, 0}, 
+{ 75, 1}, { 74, 1}, { 73, 1}, { 72, 0}, { 72, 1}, { 71, 1}, { 70, 0}, { 70, 1}, 
+{ 69, 0}, { 69, 1}, { 68, 1}, { 67, 0}, { 67, 1}, { 66, 0}, { 66, 1}, { 65, 0}, 
+{ 65, 1}, { 64, 1}, { 63, 0}, { 63, 1}, { 62, 0}, { 62, 1}, { 61, 0}, { 61, 1}, 
+{ 60, 0}, { 60, 0}, { 60, 1}, { 59, 0}, { 59, 1}, { 58, 0}, { 58, 1}, { 57, 0}, 
+{ 57, 1}, { 56, 0}, { 56, 0}, { 56, 1}, { 55, 0}, { 55, 1}, { 54, 0}, { 54, 0}, 
+{ 54, 1}, { 53, 0}, { 53, 0}, { 53, 1}, { 52, 0}, { 52, 0}, { 52, 1}, { 51, 0}, 
+{ 51, 0}, { 51, 1}, { 50, 0}, { 50, 0}, { 50, 1}, { 49, 0}, { 49, 0}, { 49, 1}, 
+{ 48, 0}, { 48, 0}, { 48, 1}, { 47, 0}, { 47, 0}, { 47, 0}, { 47, 1}, { 46, 0}, 
+{ 46, 0}, { 46, 1}, { 45, 0}, { 45, 0}, { 45, 0}, { 45, 1}, { 44, 0}, { 44, 0}, 
+{ 44, 0}, { 44, 1}, { 43, 0}, { 43, 0}, { 43, 0}, { 43, 1}, { 42, 0}, { 42, 0}, 
+{ 42, 0}, { 42, 1}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 1}, { 40, 0}, 
+{ 40, 0}, { 40, 0}, { 40, 0}, { 40, 1}, { 39, 0}, { 39, 0}, { 39, 0}, { 39, 0}, 
+{ 39, 1}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 1}, { 37, 0}, { 37, 0}, 
+{ 37, 0}, { 37, 0}, { 37, 0}, { 37, 1}, { 36, 0}, { 36, 0}, { 36, 0}, { 36, 0}, 
+{ 36, 1}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 1}, 
+{ 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 1}, { 33, 0}, { 33, 0}, 
+{ 33, 0}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 1}, { 32, 0}, { 32, 0}, { 32, 0}, 
+{ 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 1}, { 31, 0}, { 31, 0}, { 31, 0}, 
+{ 31, 0}, { 31, 0}, { 31, 0}, { 31, 1}, { 30, 0}, { 30, 0}, { 30, 0}, { 30, 0}
+};
+
+const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {\
+{ 62500, 12500}, { 50000, 8334}, { 41666, 5952}, { 35714, 4464}, { 31250, 3473}, { 27777, 2777}, { 25000, 2273}, { 22727, 1894}, 
+{ 20833, 1603}, { 19230, 1373}, { 17857, 1191}, { 16666, 1041}, { 15625, 920}, { 14705, 817}, { 13888, 731}, { 13157, 657}, 
+{ 12500, 596}, { 11904, 541}, { 11363, 494}, { 10869, 453}, { 10416, 416}, { 10000, 385}, { 9615, 356}, { 9259, 331}, 
+{ 8928, 308}, { 8620, 287}, { 8333, 269}, { 8064, 252}, { 7812, 237}, { 7575, 223}, { 7352, 210}, { 7142, 198}, 
+{ 6944, 188}, { 6756, 178}, { 6578, 168}, { 6410, 160}, { 6250, 153}, { 6097, 145}, { 5952, 139}, { 5813, 132}, 
+{ 5681, 126}, { 5555, 121}, { 5434, 115}, { 5319, 111}, { 5208, 106}, { 5102, 102}, { 5000, 99}, { 4901, 94}, 
+{ 4807, 91}, { 4716, 87}, { 4629, 84}, { 4545, 81}, { 4464, 79}, { 4385, 75}, { 4310, 73}, { 4237, 71}, 
+{ 4166, 68}, { 4098, 66}, { 4032, 64}, { 3968, 62}, { 3906, 60}, { 3846, 59}, { 3787, 56}, { 3731, 55}, 
+{ 3676, 53}, { 3623, 52}, { 3571, 50}, { 3521, 49}, { 3472, 48}, { 3424, 46}, { 3378, 45}, { 3333, 44}, 
+{ 3289, 43}, { 3246, 41}, { 3205, 41}, { 3164, 39}, { 3125, 39}, { 3086, 38}, { 3048, 36}, { 3012, 36}, 
+{ 2976, 35}, { 2941, 35}, { 2906, 33}, { 2873, 33}, { 2840, 32}, { 2808, 31}, { 2777, 30}, { 2747, 30}, 
+{ 2717, 29}, { 2688, 29}, { 2659, 28}, { 2631, 27}, { 2604, 27}, { 2577, 26}, { 2551, 26}, { 2525, 25}, 
+{ 2500, 25}, { 2475, 25}, { 2450, 23}, { 2427, 24}, { 2403, 23}, { 2380, 22}, { 2358, 22}, { 2336, 22}, 
+{ 2314, 21}, { 2293, 21}, { 2272, 20}, { 2252, 20}, { 2232, 20}, { 2212, 20}, { 2192, 19}, { 2173, 18}, 
+{ 2155, 19}, { 2136, 18}, { 2118, 18}, { 2100, 17}, { 2083, 17}, { 2066, 17}, { 2049, 17}, { 2032, 16}, 
+{ 2016, 16}, { 2000, 16}, { 1984, 16}, { 1968, 15}, { 1953, 16}, { 1937, 14}, { 1923, 15}, { 1908, 15}, 
+{ 1893, 14}, { 1879, 14}, { 1865, 14}, { 1851, 13}, { 1838, 14}, { 1824, 13}, { 1811, 13}, { 1798, 13}, 
+{ 1785, 12}, { 1773, 13}, { 1760, 12}, { 1748, 12}, { 1736, 12}, { 1724, 12}, { 1712, 12}, { 1700, 11}, 
+{ 1689, 12}, { 1677, 11}, { 1666, 11}, { 1655, 11}, { 1644, 11}, { 1633, 10}, { 1623, 11}, { 1612, 10}, 
+{ 1602, 10}, { 1592, 10}, { 1582, 10}, { 1572, 10}, { 1562, 10}, { 1552, 9}, { 1543, 10}, { 1533, 9}, 
+{ 1524, 9}, { 1515, 9}, { 1506, 9}, { 1497, 9}, { 1488, 9}, { 1479, 9}, { 1470, 9}, { 1461, 8}, 
+{ 1453, 8}, { 1445, 9}, { 1436, 8}, { 1428, 8}, { 1420, 8}, { 1412, 8}, { 1404, 8}, { 1396, 8}, 
+{ 1388, 7}, { 1381, 8}, { 1373, 7}, { 1366, 8}, { 1358, 7}, { 1351, 7}, { 1344, 8}, { 1336, 7}, 
+{ 1329, 7}, { 1322, 7}, { 1315, 7}, { 1308, 6}, { 1302, 7}, { 1295, 7}, { 1288, 6}, { 1282, 7}, 
+{ 1275, 6}, { 1269, 7}, { 1262, 6}, { 1256, 6}, { 1250, 7}, { 1243, 6}, { 1237, 6}, { 1231, 6}, 
+{ 1225, 6}, { 1219, 6}, { 1213, 6}, { 1207, 6}, { 1201, 5}, { 1196, 6}, { 1190, 6}, { 1184, 5}, 
+{ 1179, 6}, { 1173, 5}, { 1168, 6}, { 1162, 5}, { 1157, 5}, { 1152, 6}, { 1146, 5}, { 1141, 5}, 
+{ 1136, 5}, { 1131, 5}, { 1126, 5}, { 1121, 5}, { 1116, 5}, { 1111, 5}, { 1106, 5}, { 1101, 5}, 
+{ 1096, 5}, { 1091, 5}, { 1086, 4}, { 1082, 5}, { 1077, 5}, { 1072, 4}, { 1068, 5}, { 1063, 4}, 
+{ 1059, 5}, { 1054, 4}, { 1050, 4}, { 1046, 5}, { 1041, 4}, { 1037, 4}, { 1033, 5}, { 1028, 4}, 
+{ 1024, 4}, { 1020, 4}, { 1016, 4}, { 1012, 4}, { 1008, 4}, { 1004, 4}, { 1000, 4}, { 996, 4}, 
+{ 992, 4}, { 988, 4}, { 984, 4}, { 980, 4}, { 976, 4}, { 972, 4}, { 968, 3}, { 965, 3}
+};
+
+#elif F_CPU == 20000000
+
+const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {
+   {62500, 54055}, {8445, 3917}, {4528, 1434}, {3094, 745}, {2349, 456}, {1893, 307}, {1586, 222}, {1364, 167},
+   {1197, 131}, {1066, 105}, {961, 86}, {875, 72}, {803, 61}, {742, 53}, {689, 45}, {644, 40},
+   {604, 35}, {569, 32}, {537, 28}, {509, 25}, {484, 23}, {461, 21}, {440, 19}, {421, 17},
+   {404, 16}, {388, 15}, {373, 14}, {359, 13}, {346, 12}, {334, 11}, {323, 10}, {313, 10},
+   {303, 9}, {294, 9}, {285, 8}, {277, 7}, {270, 8}, {262, 7}, {255, 6}, {249, 6},
+   {243, 6}, {237, 6}, {231, 5}, {226, 5}, {221, 5}, {216, 5}, {211, 4}, {207, 5},
+   {202, 4}, {198, 4}, {194, 4}, {190, 3}, {187, 4}, {183, 3}, {180, 3}, {177, 4},
+   {173, 3}, {170, 3}, {167, 2}, {165, 3}, {162, 3}, {159, 2}, {157, 3}, {154, 2},
+   {152, 3}, {149, 2}, {147, 2}, {145, 2}, {143, 2}, {141, 2}, {139, 2}, {137, 2},
+   {135, 2}, {133, 2}, {131, 2}, {129, 1}, {128, 2}, {126, 2}, {124, 1}, {123, 2},
+   {121, 1}, {120, 2}, {118, 1}, {117, 1}, {116, 2}, {114, 1}, {113, 1}, {112, 2},
+   {110, 1}, {109, 1}, {108, 1}, {107, 2}, {105, 1}, {104, 1}, {103, 1}, {102, 1},
+   {101, 1}, {100, 1}, {99, 1}, {98, 1}, {97, 1}, {96, 1}, {95, 1}, {94, 1},
+   {93, 1}, {92, 1}, {91, 0}, {91, 1}, {90, 1}, {89, 1}, {88, 1}, {87, 0},
+   {87, 1}, {86, 1}, {85, 1}, {84, 0}, {84, 1}, {83, 1}, {82, 1}, {81, 0},
+   {81, 1}, {80, 1}, {79, 0}, {79, 1}, {78, 0}, {78, 1}, {77, 1}, {76, 0},
+   {76, 1}, {75, 0}, {75, 1}, {74, 1}, {73, 0}, {73, 1}, {72, 0}, {72, 1},
+   {71, 0}, {71, 1}, {70, 0}, {70, 1}, {69, 0}, {69, 1}, {68, 0}, {68, 1},
+   {67, 0}, {67, 1}, {66, 0}, {66, 1}, {65, 0}, {65, 0}, {65, 1}, {64, 0},
+   {64, 1}, {63, 0}, {63, 1}, {62, 0}, {62, 0}, {62, 1}, {61, 0}, {61, 1},
+   {60, 0}, {60, 0}, {60, 1}, {59, 0}, {59, 0}, {59, 1}, {58, 0}, {58, 0},
+   {58, 1}, {57, 0}, {57, 0}, {57, 1}, {56, 0}, {56, 0}, {56, 1}, {55, 0},
+   {55, 0}, {55, 1}, {54, 0}, {54, 0}, {54, 1}, {53, 0}, {53, 0}, {53, 0},
+   {53, 1}, {52, 0}, {52, 0}, {52, 1}, {51, 0}, {51, 0}, {51, 0}, {51, 1},
+   {50, 0}, {50, 0}, {50, 0}, {50, 1}, {49, 0}, {49, 0}, {49, 0}, {49, 1},
+   {48, 0}, {48, 0}, {48, 0}, {48, 1}, {47, 0}, {47, 0}, {47, 0}, {47, 1},
+   {46, 0}, {46, 0}, {46, 0}, {46, 0}, {46, 1}, {45, 0}, {45, 0}, {45, 0},
+   {45, 1}, {44, 0}, {44, 0}, {44, 0}, {44, 0}, {44, 1}, {43, 0}, {43, 0},
+   {43, 0}, {43, 0}, {43, 1}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, {42, 0},
+   {42, 1}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 1}, {40, 0},
+   {40, 0}, {40, 0}, {40, 0}, {40, 1}, {39, 0}, {39, 0}, {39, 0}, {39, 0},
+   {39, 0}, {39, 0}, {39, 1}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, {38, 0},
+};
+
+const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {
+   {62500, 10417}, {52083, 7441}, {44642, 5580}, {39062, 4340}, {34722, 3472}, {31250, 2841}, {28409, 2368}, {26041, 2003},
+   {24038, 1717}, {22321, 1488}, {20833, 1302}, {19531, 1149}, {18382, 1021}, {17361, 914}, {16447, 822}, {15625, 745},
+   {14880, 676}, {14204, 618}, {13586, 566}, {13020, 520}, {12500, 481}, {12019, 445}, {11574, 414}, {11160, 385},
+   {10775, 359}, {10416, 336}, {10080, 315}, {9765, 296}, {9469, 278}, {9191, 263}, {8928, 248}, {8680, 235},
+   {8445, 222}, {8223, 211}, {8012, 200}, {7812, 191}, {7621, 181}, {7440, 173}, {7267, 165}, {7102, 158},
+   {6944, 151}, {6793, 145}, {6648, 138}, {6510, 133}, {6377, 127}, {6250, 123}, {6127, 118}, {6009, 113},
+   {5896, 109}, {5787, 106}, {5681, 101}, {5580, 98}, {5482, 95}, {5387, 91}, {5296, 88}, {5208, 86},
+   {5122, 82}, {5040, 80}, {4960, 78}, {4882, 75}, {4807, 73}, {4734, 70}, {4664, 69}, {4595, 67},
+   {4528, 64}, {4464, 63}, {4401, 61}, {4340, 60}, {4280, 58}, {4222, 56}, {4166, 55}, {4111, 53},
+   {4058, 52}, {4006, 51}, {3955, 49}, {3906, 48}, {3858, 48}, {3810, 45}, {3765, 45}, {3720, 44},
+   {3676, 43}, {3633, 42}, {3591, 40}, {3551, 40}, {3511, 39}, {3472, 38}, {3434, 38}, {3396, 36},
+   {3360, 36}, {3324, 35}, {3289, 34}, {3255, 34}, {3221, 33}, {3188, 32}, {3156, 31}, {3125, 31},
+   {3094, 31}, {3063, 30}, {3033, 29}, {3004, 28}, {2976, 28}, {2948, 28}, {2920, 27}, {2893, 27},
+   {2866, 26}, {2840, 25}, {2815, 25}, {2790, 25}, {2765, 24}, {2741, 24}, {2717, 24}, {2693, 23},
+   {2670, 22}, {2648, 22}, {2626, 22}, {2604, 22}, {2582, 21}, {2561, 21}, {2540, 20}, {2520, 20},
+   {2500, 20}, {2480, 20}, {2460, 19}, {2441, 19}, {2422, 19}, {2403, 18}, {2385, 18}, {2367, 18},
+   {2349, 17}, {2332, 18}, {2314, 17}, {2297, 16}, {2281, 17}, {2264, 16}, {2248, 16}, {2232, 16},
+   {2216, 16}, {2200, 15}, {2185, 15}, {2170, 15}, {2155, 15}, {2140, 15}, {2125, 14}, {2111, 14},
+   {2097, 14}, {2083, 14}, {2069, 14}, {2055, 13}, {2042, 13}, {2029, 13}, {2016, 13}, {2003, 13},
+   {1990, 13}, {1977, 12}, {1965, 12}, {1953, 13}, {1940, 11}, {1929, 12}, {1917, 12}, {1905, 12},
+   {1893, 11}, {1882, 11}, {1871, 11}, {1860, 11}, {1849, 11}, {1838, 11}, {1827, 11}, {1816, 10},
+   {1806, 11}, {1795, 10}, {1785, 10}, {1775, 10}, {1765, 10}, {1755, 10}, {1745, 9}, {1736, 10},
+   {1726, 9}, {1717, 10}, {1707, 9}, {1698, 9}, {1689, 9}, {1680, 9}, {1671, 9}, {1662, 9},
+   {1653, 9}, {1644, 8}, {1636, 9}, {1627, 8}, {1619, 9}, {1610, 8}, {1602, 8}, {1594, 8},
+   {1586, 8}, {1578, 8}, {1570, 8}, {1562, 8}, {1554, 7}, {1547, 8}, {1539, 8}, {1531, 7},
+   {1524, 8}, {1516, 7}, {1509, 7}, {1502, 7}, {1495, 7}, {1488, 7}, {1481, 7}, {1474, 7},
+   {1467, 7}, {1460, 7}, {1453, 7}, {1446, 6}, {1440, 7}, {1433, 7}, {1426, 6}, {1420, 6},
+   {1414, 7}, {1407, 6}, {1401, 6}, {1395, 7}, {1388, 6}, {1382, 6}, {1376, 6}, {1370, 6},
+   {1364, 6}, {1358, 6}, {1352, 6}, {1346, 5}, {1341, 6}, {1335, 6}, {1329, 5}, {1324, 6},
+   {1318, 5}, {1313, 6}, {1307, 5}, {1302, 6}, {1296, 5}, {1291, 5}, {1286, 6}, {1280, 5},
+   {1275, 5}, {1270, 5}, {1265, 5}, {1260, 5}, {1255, 5}, {1250, 5}, {1245, 5}, {1240, 5},
+   {1235, 5}, {1230, 5}, {1225, 5}, {1220, 5}, {1215, 4}, {1211, 5}, {1206, 5}, {1201, 5},
+};
+
+#endif

+ 118 - 139
Firmware/speed_lookuptable.h

@@ -3,150 +3,129 @@
 
 #include "Marlin.h"
 
-#if F_CPU == 16000000
+extern const uint16_t speed_lookuptable_fast[256][2] PROGMEM;
+extern const uint16_t speed_lookuptable_slow[256][2] PROGMEM;
 
-const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {\
-{ 62500, 55556}, { 6944, 3268}, { 3676, 1176}, { 2500, 607}, { 1893, 369}, { 1524, 249}, { 1275, 179}, { 1096, 135}, 
-{ 961, 105}, { 856, 85}, { 771, 69}, { 702, 58}, { 644, 49}, { 595, 42}, { 553, 37}, { 516, 32}, 
-{ 484, 28}, { 456, 25}, { 431, 23}, { 408, 20}, { 388, 19}, { 369, 16}, { 353, 16}, { 337, 14}, 
-{ 323, 13}, { 310, 11}, { 299, 11}, { 288, 11}, { 277, 9}, { 268, 9}, { 259, 8}, { 251, 8}, 
-{ 243, 8}, { 235, 7}, { 228, 6}, { 222, 6}, { 216, 6}, { 210, 6}, { 204, 5}, { 199, 5}, 
-{ 194, 5}, { 189, 4}, { 185, 4}, { 181, 4}, { 177, 4}, { 173, 4}, { 169, 4}, { 165, 3}, 
-{ 162, 3}, { 159, 4}, { 155, 3}, { 152, 3}, { 149, 2}, { 147, 3}, { 144, 3}, { 141, 2}, 
-{ 139, 3}, { 136, 2}, { 134, 2}, { 132, 3}, { 129, 2}, { 127, 2}, { 125, 2}, { 123, 2}, 
-{ 121, 2}, { 119, 1}, { 118, 2}, { 116, 2}, { 114, 1}, { 113, 2}, { 111, 2}, { 109, 1}, 
-{ 108, 2}, { 106, 1}, { 105, 2}, { 103, 1}, { 102, 1}, { 101, 1}, { 100, 2}, { 98, 1}, 
-{ 97, 1}, { 96, 1}, { 95, 2}, { 93, 1}, { 92, 1}, { 91, 1}, { 90, 1}, { 89, 1}, 
-{ 88, 1}, { 87, 1}, { 86, 1}, { 85, 1}, { 84, 1}, { 83, 0}, { 83, 1}, { 82, 1}, 
-{ 81, 1}, { 80, 1}, { 79, 1}, { 78, 0}, { 78, 1}, { 77, 1}, { 76, 1}, { 75, 0}, 
-{ 75, 1}, { 74, 1}, { 73, 1}, { 72, 0}, { 72, 1}, { 71, 1}, { 70, 0}, { 70, 1}, 
-{ 69, 0}, { 69, 1}, { 68, 1}, { 67, 0}, { 67, 1}, { 66, 0}, { 66, 1}, { 65, 0}, 
-{ 65, 1}, { 64, 1}, { 63, 0}, { 63, 1}, { 62, 0}, { 62, 1}, { 61, 0}, { 61, 1}, 
-{ 60, 0}, { 60, 0}, { 60, 1}, { 59, 0}, { 59, 1}, { 58, 0}, { 58, 1}, { 57, 0}, 
-{ 57, 1}, { 56, 0}, { 56, 0}, { 56, 1}, { 55, 0}, { 55, 1}, { 54, 0}, { 54, 0}, 
-{ 54, 1}, { 53, 0}, { 53, 0}, { 53, 1}, { 52, 0}, { 52, 0}, { 52, 1}, { 51, 0}, 
-{ 51, 0}, { 51, 1}, { 50, 0}, { 50, 0}, { 50, 1}, { 49, 0}, { 49, 0}, { 49, 1}, 
-{ 48, 0}, { 48, 0}, { 48, 1}, { 47, 0}, { 47, 0}, { 47, 0}, { 47, 1}, { 46, 0}, 
-{ 46, 0}, { 46, 1}, { 45, 0}, { 45, 0}, { 45, 0}, { 45, 1}, { 44, 0}, { 44, 0}, 
-{ 44, 0}, { 44, 1}, { 43, 0}, { 43, 0}, { 43, 0}, { 43, 1}, { 42, 0}, { 42, 0}, 
-{ 42, 0}, { 42, 1}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 0}, { 41, 1}, { 40, 0}, 
-{ 40, 0}, { 40, 0}, { 40, 0}, { 40, 1}, { 39, 0}, { 39, 0}, { 39, 0}, { 39, 0}, 
-{ 39, 1}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 0}, { 38, 1}, { 37, 0}, { 37, 0}, 
-{ 37, 0}, { 37, 0}, { 37, 0}, { 37, 1}, { 36, 0}, { 36, 0}, { 36, 0}, { 36, 0}, 
-{ 36, 1}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 0}, { 35, 1}, 
-{ 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 0}, { 34, 1}, { 33, 0}, { 33, 0}, 
-{ 33, 0}, { 33, 0}, { 33, 0}, { 33, 0}, { 33, 1}, { 32, 0}, { 32, 0}, { 32, 0}, 
-{ 32, 0}, { 32, 0}, { 32, 0}, { 32, 0}, { 32, 1}, { 31, 0}, { 31, 0}, { 31, 0}, 
-{ 31, 0}, { 31, 0}, { 31, 0}, { 31, 1}, { 30, 0}, { 30, 0}, { 30, 0}, { 30, 0}
-};
+#ifndef _NO_ASM
 
-const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {\
-{ 62500, 12500}, { 50000, 8334}, { 41666, 5952}, { 35714, 4464}, { 31250, 3473}, { 27777, 2777}, { 25000, 2273}, { 22727, 1894}, 
-{ 20833, 1603}, { 19230, 1373}, { 17857, 1191}, { 16666, 1041}, { 15625, 920}, { 14705, 817}, { 13888, 731}, { 13157, 657}, 
-{ 12500, 596}, { 11904, 541}, { 11363, 494}, { 10869, 453}, { 10416, 416}, { 10000, 385}, { 9615, 356}, { 9259, 331}, 
-{ 8928, 308}, { 8620, 287}, { 8333, 269}, { 8064, 252}, { 7812, 237}, { 7575, 223}, { 7352, 210}, { 7142, 198}, 
-{ 6944, 188}, { 6756, 178}, { 6578, 168}, { 6410, 160}, { 6250, 153}, { 6097, 145}, { 5952, 139}, { 5813, 132}, 
-{ 5681, 126}, { 5555, 121}, { 5434, 115}, { 5319, 111}, { 5208, 106}, { 5102, 102}, { 5000, 99}, { 4901, 94}, 
-{ 4807, 91}, { 4716, 87}, { 4629, 84}, { 4545, 81}, { 4464, 79}, { 4385, 75}, { 4310, 73}, { 4237, 71}, 
-{ 4166, 68}, { 4098, 66}, { 4032, 64}, { 3968, 62}, { 3906, 60}, { 3846, 59}, { 3787, 56}, { 3731, 55}, 
-{ 3676, 53}, { 3623, 52}, { 3571, 50}, { 3521, 49}, { 3472, 48}, { 3424, 46}, { 3378, 45}, { 3333, 44}, 
-{ 3289, 43}, { 3246, 41}, { 3205, 41}, { 3164, 39}, { 3125, 39}, { 3086, 38}, { 3048, 36}, { 3012, 36}, 
-{ 2976, 35}, { 2941, 35}, { 2906, 33}, { 2873, 33}, { 2840, 32}, { 2808, 31}, { 2777, 30}, { 2747, 30}, 
-{ 2717, 29}, { 2688, 29}, { 2659, 28}, { 2631, 27}, { 2604, 27}, { 2577, 26}, { 2551, 26}, { 2525, 25}, 
-{ 2500, 25}, { 2475, 25}, { 2450, 23}, { 2427, 24}, { 2403, 23}, { 2380, 22}, { 2358, 22}, { 2336, 22}, 
-{ 2314, 21}, { 2293, 21}, { 2272, 20}, { 2252, 20}, { 2232, 20}, { 2212, 20}, { 2192, 19}, { 2173, 18}, 
-{ 2155, 19}, { 2136, 18}, { 2118, 18}, { 2100, 17}, { 2083, 17}, { 2066, 17}, { 2049, 17}, { 2032, 16}, 
-{ 2016, 16}, { 2000, 16}, { 1984, 16}, { 1968, 15}, { 1953, 16}, { 1937, 14}, { 1923, 15}, { 1908, 15}, 
-{ 1893, 14}, { 1879, 14}, { 1865, 14}, { 1851, 13}, { 1838, 14}, { 1824, 13}, { 1811, 13}, { 1798, 13}, 
-{ 1785, 12}, { 1773, 13}, { 1760, 12}, { 1748, 12}, { 1736, 12}, { 1724, 12}, { 1712, 12}, { 1700, 11}, 
-{ 1689, 12}, { 1677, 11}, { 1666, 11}, { 1655, 11}, { 1644, 11}, { 1633, 10}, { 1623, 11}, { 1612, 10}, 
-{ 1602, 10}, { 1592, 10}, { 1582, 10}, { 1572, 10}, { 1562, 10}, { 1552, 9}, { 1543, 10}, { 1533, 9}, 
-{ 1524, 9}, { 1515, 9}, { 1506, 9}, { 1497, 9}, { 1488, 9}, { 1479, 9}, { 1470, 9}, { 1461, 8}, 
-{ 1453, 8}, { 1445, 9}, { 1436, 8}, { 1428, 8}, { 1420, 8}, { 1412, 8}, { 1404, 8}, { 1396, 8}, 
-{ 1388, 7}, { 1381, 8}, { 1373, 7}, { 1366, 8}, { 1358, 7}, { 1351, 7}, { 1344, 8}, { 1336, 7}, 
-{ 1329, 7}, { 1322, 7}, { 1315, 7}, { 1308, 6}, { 1302, 7}, { 1295, 7}, { 1288, 6}, { 1282, 7}, 
-{ 1275, 6}, { 1269, 7}, { 1262, 6}, { 1256, 6}, { 1250, 7}, { 1243, 6}, { 1237, 6}, { 1231, 6}, 
-{ 1225, 6}, { 1219, 6}, { 1213, 6}, { 1207, 6}, { 1201, 5}, { 1196, 6}, { 1190, 6}, { 1184, 5}, 
-{ 1179, 6}, { 1173, 5}, { 1168, 6}, { 1162, 5}, { 1157, 5}, { 1152, 6}, { 1146, 5}, { 1141, 5}, 
-{ 1136, 5}, { 1131, 5}, { 1126, 5}, { 1121, 5}, { 1116, 5}, { 1111, 5}, { 1106, 5}, { 1101, 5}, 
-{ 1096, 5}, { 1091, 5}, { 1086, 4}, { 1082, 5}, { 1077, 5}, { 1072, 4}, { 1068, 5}, { 1063, 4}, 
-{ 1059, 5}, { 1054, 4}, { 1050, 4}, { 1046, 5}, { 1041, 4}, { 1037, 4}, { 1033, 5}, { 1028, 4}, 
-{ 1024, 4}, { 1020, 4}, { 1016, 4}, { 1012, 4}, { 1008, 4}, { 1004, 4}, { 1000, 4}, { 996, 4}, 
-{ 992, 4}, { 988, 4}, { 984, 4}, { 980, 4}, { 976, 4}, { 972, 4}, { 968, 3}, { 965, 3}
-};
+// intRes = intIn1 * intIn2 >> 16
+// uses:
+// r26 to store 0
+// r27 to store the byte 1 of the 24 bit result
+#define MultiU16X8toH16(intRes, charIn1, intIn2) \
+asm volatile ( \
+"clr r26 \n\t" \
+"mul %A1, %B2 \n\t" \
+"movw %A0, r0 \n\t" \
+"mul %A1, %A2 \n\t" \
+"add %A0, r1 \n\t" \
+"adc %B0, r26 \n\t" \
+"lsr r0 \n\t" \
+"adc %A0, r26 \n\t" \
+"adc %B0, r26 \n\t" \
+"clr r1 \n\t" \
+: \
+"=&r" (intRes) \
+: \
+"d" (charIn1), \
+"d" (intIn2) \
+: \
+"r26" \
+)
 
-#elif F_CPU == 20000000
+// intRes = longIn1 * longIn2 >> 24
+// uses:
+// r26 to store 0
+// r27 to store the byte 1 of the 48bit result
+#define MultiU24X24toH16(intRes, longIn1, longIn2) \
+asm volatile ( \
+"clr r26 \n\t" \
+"mul %A1, %B2 \n\t" \
+"mov r27, r1 \n\t" \
+"mul %B1, %C2 \n\t" \
+"movw %A0, r0 \n\t" \
+"mul %C1, %C2 \n\t" \
+"add %B0, r0 \n\t" \
+"mul %C1, %B2 \n\t" \
+"add %A0, r0 \n\t" \
+"adc %B0, r1 \n\t" \
+"mul %A1, %C2 \n\t" \
+"add r27, r0 \n\t" \
+"adc %A0, r1 \n\t" \
+"adc %B0, r26 \n\t" \
+"mul %B1, %B2 \n\t" \
+"add r27, r0 \n\t" \
+"adc %A0, r1 \n\t" \
+"adc %B0, r26 \n\t" \
+"mul %C1, %A2 \n\t" \
+"add r27, r0 \n\t" \
+"adc %A0, r1 \n\t" \
+"adc %B0, r26 \n\t" \
+"mul %B1, %A2 \n\t" \
+"add r27, r1 \n\t" \
+"adc %A0, r26 \n\t" \
+"adc %B0, r26 \n\t" \
+"lsr r27 \n\t" \
+"adc %A0, r26 \n\t" \
+"adc %B0, r26 \n\t" \
+"clr r1 \n\t" \
+: \
+"=&r" (intRes) \
+: \
+"d" (longIn1), \
+"d" (longIn2) \
+: \
+"r26" , "r27" \
+)
 
-const uint16_t speed_lookuptable_fast[256][2] PROGMEM = {
-   {62500, 54055}, {8445, 3917}, {4528, 1434}, {3094, 745}, {2349, 456}, {1893, 307}, {1586, 222}, {1364, 167},
-   {1197, 131}, {1066, 105}, {961, 86}, {875, 72}, {803, 61}, {742, 53}, {689, 45}, {644, 40},
-   {604, 35}, {569, 32}, {537, 28}, {509, 25}, {484, 23}, {461, 21}, {440, 19}, {421, 17},
-   {404, 16}, {388, 15}, {373, 14}, {359, 13}, {346, 12}, {334, 11}, {323, 10}, {313, 10},
-   {303, 9}, {294, 9}, {285, 8}, {277, 7}, {270, 8}, {262, 7}, {255, 6}, {249, 6},
-   {243, 6}, {237, 6}, {231, 5}, {226, 5}, {221, 5}, {216, 5}, {211, 4}, {207, 5},
-   {202, 4}, {198, 4}, {194, 4}, {190, 3}, {187, 4}, {183, 3}, {180, 3}, {177, 4},
-   {173, 3}, {170, 3}, {167, 2}, {165, 3}, {162, 3}, {159, 2}, {157, 3}, {154, 2},
-   {152, 3}, {149, 2}, {147, 2}, {145, 2}, {143, 2}, {141, 2}, {139, 2}, {137, 2},
-   {135, 2}, {133, 2}, {131, 2}, {129, 1}, {128, 2}, {126, 2}, {124, 1}, {123, 2},
-   {121, 1}, {120, 2}, {118, 1}, {117, 1}, {116, 2}, {114, 1}, {113, 1}, {112, 2},
-   {110, 1}, {109, 1}, {108, 1}, {107, 2}, {105, 1}, {104, 1}, {103, 1}, {102, 1},
-   {101, 1}, {100, 1}, {99, 1}, {98, 1}, {97, 1}, {96, 1}, {95, 1}, {94, 1},
-   {93, 1}, {92, 1}, {91, 0}, {91, 1}, {90, 1}, {89, 1}, {88, 1}, {87, 0},
-   {87, 1}, {86, 1}, {85, 1}, {84, 0}, {84, 1}, {83, 1}, {82, 1}, {81, 0},
-   {81, 1}, {80, 1}, {79, 0}, {79, 1}, {78, 0}, {78, 1}, {77, 1}, {76, 0},
-   {76, 1}, {75, 0}, {75, 1}, {74, 1}, {73, 0}, {73, 1}, {72, 0}, {72, 1},
-   {71, 0}, {71, 1}, {70, 0}, {70, 1}, {69, 0}, {69, 1}, {68, 0}, {68, 1},
-   {67, 0}, {67, 1}, {66, 0}, {66, 1}, {65, 0}, {65, 0}, {65, 1}, {64, 0},
-   {64, 1}, {63, 0}, {63, 1}, {62, 0}, {62, 0}, {62, 1}, {61, 0}, {61, 1},
-   {60, 0}, {60, 0}, {60, 1}, {59, 0}, {59, 0}, {59, 1}, {58, 0}, {58, 0},
-   {58, 1}, {57, 0}, {57, 0}, {57, 1}, {56, 0}, {56, 0}, {56, 1}, {55, 0},
-   {55, 0}, {55, 1}, {54, 0}, {54, 0}, {54, 1}, {53, 0}, {53, 0}, {53, 0},
-   {53, 1}, {52, 0}, {52, 0}, {52, 1}, {51, 0}, {51, 0}, {51, 0}, {51, 1},
-   {50, 0}, {50, 0}, {50, 0}, {50, 1}, {49, 0}, {49, 0}, {49, 0}, {49, 1},
-   {48, 0}, {48, 0}, {48, 0}, {48, 1}, {47, 0}, {47, 0}, {47, 0}, {47, 1},
-   {46, 0}, {46, 0}, {46, 0}, {46, 0}, {46, 1}, {45, 0}, {45, 0}, {45, 0},
-   {45, 1}, {44, 0}, {44, 0}, {44, 0}, {44, 0}, {44, 1}, {43, 0}, {43, 0},
-   {43, 0}, {43, 0}, {43, 1}, {42, 0}, {42, 0}, {42, 0}, {42, 0}, {42, 0},
-   {42, 1}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 0}, {41, 1}, {40, 0},
-   {40, 0}, {40, 0}, {40, 0}, {40, 1}, {39, 0}, {39, 0}, {39, 0}, {39, 0},
-   {39, 0}, {39, 0}, {39, 1}, {38, 0}, {38, 0}, {38, 0}, {38, 0}, {38, 0},
-};
+#else //_NO_ASM
 
-const uint16_t speed_lookuptable_slow[256][2] PROGMEM = {
-   {62500, 10417}, {52083, 7441}, {44642, 5580}, {39062, 4340}, {34722, 3472}, {31250, 2841}, {28409, 2368}, {26041, 2003},
-   {24038, 1717}, {22321, 1488}, {20833, 1302}, {19531, 1149}, {18382, 1021}, {17361, 914}, {16447, 822}, {15625, 745},
-   {14880, 676}, {14204, 618}, {13586, 566}, {13020, 520}, {12500, 481}, {12019, 445}, {11574, 414}, {11160, 385},
-   {10775, 359}, {10416, 336}, {10080, 315}, {9765, 296}, {9469, 278}, {9191, 263}, {8928, 248}, {8680, 235},
-   {8445, 222}, {8223, 211}, {8012, 200}, {7812, 191}, {7621, 181}, {7440, 173}, {7267, 165}, {7102, 158},
-   {6944, 151}, {6793, 145}, {6648, 138}, {6510, 133}, {6377, 127}, {6250, 123}, {6127, 118}, {6009, 113},
-   {5896, 109}, {5787, 106}, {5681, 101}, {5580, 98}, {5482, 95}, {5387, 91}, {5296, 88}, {5208, 86},
-   {5122, 82}, {5040, 80}, {4960, 78}, {4882, 75}, {4807, 73}, {4734, 70}, {4664, 69}, {4595, 67},
-   {4528, 64}, {4464, 63}, {4401, 61}, {4340, 60}, {4280, 58}, {4222, 56}, {4166, 55}, {4111, 53},
-   {4058, 52}, {4006, 51}, {3955, 49}, {3906, 48}, {3858, 48}, {3810, 45}, {3765, 45}, {3720, 44},
-   {3676, 43}, {3633, 42}, {3591, 40}, {3551, 40}, {3511, 39}, {3472, 38}, {3434, 38}, {3396, 36},
-   {3360, 36}, {3324, 35}, {3289, 34}, {3255, 34}, {3221, 33}, {3188, 32}, {3156, 31}, {3125, 31},
-   {3094, 31}, {3063, 30}, {3033, 29}, {3004, 28}, {2976, 28}, {2948, 28}, {2920, 27}, {2893, 27},
-   {2866, 26}, {2840, 25}, {2815, 25}, {2790, 25}, {2765, 24}, {2741, 24}, {2717, 24}, {2693, 23},
-   {2670, 22}, {2648, 22}, {2626, 22}, {2604, 22}, {2582, 21}, {2561, 21}, {2540, 20}, {2520, 20},
-   {2500, 20}, {2480, 20}, {2460, 19}, {2441, 19}, {2422, 19}, {2403, 18}, {2385, 18}, {2367, 18},
-   {2349, 17}, {2332, 18}, {2314, 17}, {2297, 16}, {2281, 17}, {2264, 16}, {2248, 16}, {2232, 16},
-   {2216, 16}, {2200, 15}, {2185, 15}, {2170, 15}, {2155, 15}, {2140, 15}, {2125, 14}, {2111, 14},
-   {2097, 14}, {2083, 14}, {2069, 14}, {2055, 13}, {2042, 13}, {2029, 13}, {2016, 13}, {2003, 13},
-   {1990, 13}, {1977, 12}, {1965, 12}, {1953, 13}, {1940, 11}, {1929, 12}, {1917, 12}, {1905, 12},
-   {1893, 11}, {1882, 11}, {1871, 11}, {1860, 11}, {1849, 11}, {1838, 11}, {1827, 11}, {1816, 10},
-   {1806, 11}, {1795, 10}, {1785, 10}, {1775, 10}, {1765, 10}, {1755, 10}, {1745, 9}, {1736, 10},
-   {1726, 9}, {1717, 10}, {1707, 9}, {1698, 9}, {1689, 9}, {1680, 9}, {1671, 9}, {1662, 9},
-   {1653, 9}, {1644, 8}, {1636, 9}, {1627, 8}, {1619, 9}, {1610, 8}, {1602, 8}, {1594, 8},
-   {1586, 8}, {1578, 8}, {1570, 8}, {1562, 8}, {1554, 7}, {1547, 8}, {1539, 8}, {1531, 7},
-   {1524, 8}, {1516, 7}, {1509, 7}, {1502, 7}, {1495, 7}, {1488, 7}, {1481, 7}, {1474, 7},
-   {1467, 7}, {1460, 7}, {1453, 7}, {1446, 6}, {1440, 7}, {1433, 7}, {1426, 6}, {1420, 6},
-   {1414, 7}, {1407, 6}, {1401, 6}, {1395, 7}, {1388, 6}, {1382, 6}, {1376, 6}, {1370, 6},
-   {1364, 6}, {1358, 6}, {1352, 6}, {1346, 5}, {1341, 6}, {1335, 6}, {1329, 5}, {1324, 6},
-   {1318, 5}, {1313, 6}, {1307, 5}, {1302, 6}, {1296, 5}, {1291, 5}, {1286, 6}, {1280, 5},
-   {1275, 5}, {1270, 5}, {1265, 5}, {1260, 5}, {1255, 5}, {1250, 5}, {1245, 5}, {1240, 5},
-   {1235, 5}, {1230, 5}, {1225, 5}, {1220, 5}, {1215, 4}, {1211, 5}, {1206, 5}, {1201, 5},
-};
+static inline void MultiU16X8toH16(uint16_t& intRes, uint8_t& charIn1, uint16_t& intIn2)
+{
+    intRes = ((uint32_t)charIn1 * (uint32_t)intIn2) >> 16;
+}
 
-#endif
+static inline void MultiU24X24toH16(uint16_t& intRes, uint32_t& longIn1, uint32_t& longIn2)
+{
+    intRes = ((uint64_t)longIn1 * (uint64_t)longIn2) >> 24;
+}
+
+#endif //_NO_ASM
+
+
+FORCE_INLINE unsigned short calc_timer(uint16_t step_rate, uint8_t& step_loops) {
+  uint16_t timer;
+  if(step_rate > MAX_STEP_FREQUENCY) step_rate = MAX_STEP_FREQUENCY;
+
+  if(step_rate > 20000) { // If steprate > 20kHz >> step 4 times
+    step_rate = (step_rate >> 2)&0x3fff;
+    step_loops = 4;
+  }
+  else if(step_rate > 10000) { // If steprate > 10kHz >> step 2 times
+    step_rate = (step_rate >> 1)&0x7fff;
+    step_loops = 2;
+  }
+  else {
+    step_loops = 1;
+  }
+
+  if(step_rate < (F_CPU/500000)) step_rate = (F_CPU/500000);
+  step_rate -= (F_CPU/500000); // Correct for minimal speed
+  if(step_rate >= (8*256)){ // higher step rate
+    unsigned short table_address = (unsigned short)&speed_lookuptable_fast[(unsigned char)(step_rate>>8)][0];
+    unsigned char tmp_step_rate = (step_rate & 0x00ff);
+    uint16_t gain = (uint16_t)pgm_read_word_near(table_address+2);
+    MultiU16X8toH16(timer, tmp_step_rate, gain);
+    timer = (unsigned short)pgm_read_word_near(table_address) - timer;
+  }
+  else { // lower step rates
+    unsigned short table_address = (unsigned short)&speed_lookuptable_slow[0][0];
+    table_address += ((step_rate)>>1) & 0xfffc;
+    timer = (unsigned short)pgm_read_word_near(table_address);
+    timer -= (((unsigned short)pgm_read_word_near(table_address+2) * (unsigned char)(step_rate & 0x0007))>>3);
+  }
+  if(timer < 100) { timer = 100; }//(20kHz this should never happen)////MSG_STEPPER_TOO_HIGH c=0 r=0
+  return timer;
+}
 
 #endif

+ 350 - 403
Firmware/stepper.cpp

@@ -36,9 +36,9 @@
 #include "tmc2130.h"
 #endif //TMC2130
 
-#ifdef FILAMENT_SENSOR
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
 #include "fsensor.h"
-int fsensor_counter = 0; //counter for e-steps
+int fsensor_counter; //counter for e-steps
 #endif //FILAMENT_SENSOR
 
 #include "mmu.h"
@@ -71,8 +71,7 @@ static dda_isteps_t
                counter_z,
                counter_e;
 volatile dda_usteps_t step_events_completed; // The number of step events executed in the current block
-static int32_t  acceleration_time, deceleration_time;
-//static unsigned long accelerate_until, decelerate_after, acceleration_rate, initial_rate, final_rate, nominal_rate;
+static uint32_t  acceleration_time, deceleration_time;
 static uint16_t acc_step_rate; // needed for deccelaration start point
 static uint8_t  step_loops;
 static uint16_t OCR1A_nominal;
@@ -113,23 +112,29 @@ volatile long count_position[NUM_AXIS] = { 0, 0, 0, 0};
 volatile signed char count_direction[NUM_AXIS] = { 1, 1, 1, 1};
 
 #ifdef LIN_ADVANCE
+  void advance_isr_scheduler();
+  void advance_isr();
 
-  static uint16_t nextMainISR = 0;
+  static const uint16_t ADV_NEVER      = 0xFFFF;
+  static const uint8_t  ADV_INIT       = 0b01; // initialize LA
+  static const uint8_t  ADV_ACC_VARY   = 0b10; // varying acceleration phase
+
+  static uint16_t nextMainISR;
+  static uint16_t nextAdvanceISR;
+
+  static uint16_t main_Rate;
   static uint16_t eISR_Rate;
+  static uint32_t eISR_Err;
+
+  static uint16_t current_adv_steps;
+  static uint16_t target_adv_steps;
+
+  static int8_t e_steps;        // scheduled e-steps during each isr loop
+  static uint8_t e_step_loops;  // e-steps to execute at most in each isr loop
+  static uint8_t e_extruding;   // current move is an extrusion move
+  static int8_t LA_phase;       // LA compensation phase
 
-  // Extrusion steps to be executed by the stepper.
-  // If set to non zero, the timer ISR routine will tick the Linear Advance extruder ticks first.
-  // If e_steps is zero, then the timer ISR routine will perform the usual DDA step.
-  static volatile int16_t e_steps = 0;
-  // How many extruder steps shall be ticked at a single ISR invocation?
-  static uint8_t          estep_loops;
-  // The current speed of the extruder, scaled by the linear advance constant, so it has the same measure
-  // as current_adv_steps.
-  static int              current_estep_rate;
-  // The current pretension of filament expressed in extruder micro steps.
-  static int              current_adv_steps;
-
-  #define _NEXT_ISR(T)    nextMainISR = T
+  #define _NEXT_ISR(T)    main_Rate = nextMainISR = T
 #else
   #define _NEXT_ISR(T)    OCR1A = T
 #endif
@@ -143,92 +148,6 @@ extern uint16_t stepper_timer_overflow_last;
 //=============================functions         ============================
 //===========================================================================
 
-#ifndef _NO_ASM
-
-// intRes = intIn1 * intIn2 >> 16
-// uses:
-// r26 to store 0
-// r27 to store the byte 1 of the 24 bit result
-#define MultiU16X8toH16(intRes, charIn1, intIn2) \
-asm volatile ( \
-"clr r26 \n\t" \
-"mul %A1, %B2 \n\t" \
-"movw %A0, r0 \n\t" \
-"mul %A1, %A2 \n\t" \
-"add %A0, r1 \n\t" \
-"adc %B0, r26 \n\t" \
-"lsr r0 \n\t" \
-"adc %A0, r26 \n\t" \
-"adc %B0, r26 \n\t" \
-"clr r1 \n\t" \
-: \
-"=&r" (intRes) \
-: \
-"d" (charIn1), \
-"d" (intIn2) \
-: \
-"r26" \
-)
-
-// intRes = longIn1 * longIn2 >> 24
-// uses:
-// r26 to store 0
-// r27 to store the byte 1 of the 48bit result
-#define MultiU24X24toH16(intRes, longIn1, longIn2) \
-asm volatile ( \
-"clr r26 \n\t" \
-"mul %A1, %B2 \n\t" \
-"mov r27, r1 \n\t" \
-"mul %B1, %C2 \n\t" \
-"movw %A0, r0 \n\t" \
-"mul %C1, %C2 \n\t" \
-"add %B0, r0 \n\t" \
-"mul %C1, %B2 \n\t" \
-"add %A0, r0 \n\t" \
-"adc %B0, r1 \n\t" \
-"mul %A1, %C2 \n\t" \
-"add r27, r0 \n\t" \
-"adc %A0, r1 \n\t" \
-"adc %B0, r26 \n\t" \
-"mul %B1, %B2 \n\t" \
-"add r27, r0 \n\t" \
-"adc %A0, r1 \n\t" \
-"adc %B0, r26 \n\t" \
-"mul %C1, %A2 \n\t" \
-"add r27, r0 \n\t" \
-"adc %A0, r1 \n\t" \
-"adc %B0, r26 \n\t" \
-"mul %B1, %A2 \n\t" \
-"add r27, r1 \n\t" \
-"adc %A0, r26 \n\t" \
-"adc %B0, r26 \n\t" \
-"lsr r27 \n\t" \
-"adc %A0, r26 \n\t" \
-"adc %B0, r26 \n\t" \
-"clr r1 \n\t" \
-: \
-"=&r" (intRes) \
-: \
-"d" (longIn1), \
-"d" (longIn2) \
-: \
-"r26" , "r27" \
-)
-
-#else //_NO_ASM
-
-void MultiU16X8toH16(unsigned short& intRes, unsigned char& charIn1, unsigned short& intIn2)
-{
-}
-
-void MultiU24X24toH16(uint16_t& intRes, int32_t& longIn1, long& longIn2)
-{
-}
-
-#endif //_NO_ASM
-
-// Some useful constants
-
 void checkHitEndstops()
 {
  if( endstop_x_hit || endstop_y_hit || endstop_z_hit) {
@@ -314,43 +233,7 @@ void invert_z_endstop(bool endstop_invert)
 //  The trapezoid is the shape the speed curve over time. It starts at block->initial_rate, accelerates
 //  first block->accelerate_until step_events_completed, then keeps going at constant speed until
 //  step_events_completed reaches block->decelerate_after after which it decelerates until the trapezoid generator is reset.
-//  The slope of acceleration is calculated with the leib ramp alghorithm.
-
-FORCE_INLINE unsigned short calc_timer(uint16_t step_rate) {
-  unsigned short timer;
-  if(step_rate > MAX_STEP_FREQUENCY) step_rate = MAX_STEP_FREQUENCY;
-
-  if(step_rate > 20000) { // If steprate > 20kHz >> step 4 times
-    step_rate = (step_rate >> 2)&0x3fff;
-    step_loops = 4;
-  }
-  else if(step_rate > 10000) { // If steprate > 10kHz >> step 2 times
-    step_rate = (step_rate >> 1)&0x7fff;
-    step_loops = 2;
-  }
-  else {
-    step_loops = 1;
-  }
-//    step_loops = 1;
-
-  if(step_rate < (F_CPU/500000)) step_rate = (F_CPU/500000);
-  step_rate -= (F_CPU/500000); // Correct for minimal speed
-  if(step_rate >= (8*256)){ // higher step rate
-    unsigned short table_address = (unsigned short)&speed_lookuptable_fast[(unsigned char)(step_rate>>8)][0];
-    unsigned char tmp_step_rate = (step_rate & 0x00ff);
-    unsigned short gain = (unsigned short)pgm_read_word_near(table_address+2);
-    MultiU16X8toH16(timer, tmp_step_rate, gain);
-    timer = (unsigned short)pgm_read_word_near(table_address) - timer;
-  }
-  else { // lower step rates
-    unsigned short table_address = (unsigned short)&speed_lookuptable_slow[0][0];
-    table_address += ((step_rate)>>1) & 0xfffc;
-    timer = (unsigned short)pgm_read_word_near(table_address);
-    timer -= (((unsigned short)pgm_read_word_near(table_address+2) * (unsigned char)(step_rate & 0x0007))>>3);
-  }
-  if(timer < 100) { timer = 100; MYSERIAL.print(_N("Steprate too high: ")); MYSERIAL.println(step_rate); }//(20kHz this should never happen)////MSG_STEPPER_TOO_HIGH
-  return timer;
-}
+//  The slope of acceleration is calculated using v = u + at where t is the accumulated timer values of the steps so far.
 
 // "The Stepper Driver Interrupt" - This timer interrupt is the workhorse.
 // It pops blocks from the block_buffer and executes them by pulsing the stepper pins appropriately.
@@ -361,53 +244,10 @@ ISR(TIMER1_COMPA_vect) {
 #endif //DEBUG_STACK_MONITOR
 
 #ifdef LIN_ADVANCE
-  // If there are any e_steps planned, tick them.
-  bool run_main_isr = false;
-  if (e_steps) {
-    //WRITE_NC(LOGIC_ANALYZER_CH7, true);
-	uint8_t cnt = 0;
-    for (uint8_t i = estep_loops; e_steps && i --;) {
-        WRITE_NC(E0_STEP_PIN, !INVERT_E_STEP_PIN);
-        -- e_steps;
-		cnt++;
-        WRITE_NC(E0_STEP_PIN, INVERT_E_STEP_PIN);
-    }
-#ifdef FILAMENT_SENSOR
-		if (READ(E0_DIR_PIN) == INVERT_E0_DIR)
-		{
-			if (count_direction[E_AXIS] == 1)
-				fsensor_counter -= cnt;
-			else
-				fsensor_counter += cnt;
-		}
-		else
-		{
-			if (count_direction[E_AXIS] == 1)
-				fsensor_counter += cnt;
-			else
-				fsensor_counter -= cnt;
-		}
-#endif //FILAMENT_SENSOR
-    if (e_steps) {
-      // Plan another Linear Advance tick.
-      OCR1A = eISR_Rate;
-      nextMainISR -= eISR_Rate;
-    } else if (! (nextMainISR & 0x8000) || nextMainISR < 16) {
-      // The timer did not overflow and it is big enough, so it makes sense to plan it.
-      OCR1A = nextMainISR;
-    } else {
-      // The timer has overflown, or it is too small. Run the main ISR just after the Linear Advance routine
-      // in the current interrupt tick.
-      run_main_isr = true;
-      //FIXME pick the serial line.
-    }
-    //WRITE_NC(LOGIC_ANALYZER_CH7, false);
-  } else
-    run_main_isr = true;
-
-  if (run_main_isr)
-#endif
+    advance_isr_scheduler();
+#else
     isr();
+#endif
 
   // Don't run the ISR faster than possible
   // Is there a 8us time left before the next interrupt triggers?
@@ -493,10 +333,6 @@ FORCE_INLINE void stepper_next_block()
 	}
 #endif
 
-#ifdef FILAMENT_SENSOR
-	fsensor_counter = 0;
-	fsensor_st_block_begin(current_block);
-#endif //FILAMENT_SENSOR
     // The busy flag is set by the plan_get_current_block() call.
     // current_block->busy = true;
     // Initializes the trapezoid generator from the current block. Called whenever a new
@@ -507,21 +343,37 @@ FORCE_INLINE void stepper_next_block()
     // state is reached.
     step_loops_nominal = 0;
     acc_step_rate = uint16_t(current_block->initial_rate);
-    acceleration_time = calc_timer(acc_step_rate);
+    acceleration_time = calc_timer(acc_step_rate, step_loops);
+
 #ifdef LIN_ADVANCE
-    current_estep_rate = ((unsigned long)acc_step_rate * current_block->abs_adv_steps_multiplier8) >> 17;
-#endif /* LIN_ADVANCE */
+    if (current_block->use_advance_lead) {
+        target_adv_steps = current_block->max_adv_steps;
+    }
+    e_steps = 0;
+    nextAdvanceISR = ADV_NEVER;
+    LA_phase = -1;
+#endif
+
+    if (current_block->flag & BLOCK_FLAG_E_RESET) {
+        count_position[E_AXIS] = 0;
+    }
 
     if (current_block->flag & BLOCK_FLAG_DDA_LOWRES) {
       counter_x.lo = -(current_block->step_event_count.lo >> 1);
       counter_y.lo = counter_x.lo;
       counter_z.lo = counter_x.lo;
       counter_e.lo = counter_x.lo;
+#ifdef LIN_ADVANCE
+      e_extruding = current_block->steps_e.lo != 0;
+#endif
     } else {
       counter_x.wide = -(current_block->step_event_count.wide >> 1);
       counter_y.wide = counter_x.wide;
       counter_z.wide = counter_x.wide;
       counter_e.wide = counter_x.wide;
+#ifdef LIN_ADVANCE
+      e_extruding = current_block->steps_e.wide != 0;
+#endif
     }
     step_events_completed.wide = 0;
     // Set directions.
@@ -567,9 +419,23 @@ FORCE_INLINE void stepper_next_block()
 #endif /* LIN_ADVANCE */
       count_direction[E_AXIS] = 1;
     }
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
+    fsensor_st_block_begin(count_direction[E_AXIS] < 0);
+#endif //FILAMENT_SENSOR
   }
   else {
-    OCR1A = 2000; // 1kHz.
+      _NEXT_ISR(2000); // 1kHz.
+
+#ifdef LIN_ADVANCE
+      // reset LA state when there's no block
+      nextAdvanceISR = ADV_NEVER;
+      e_steps = 0;
+
+      // incrementally lose pressure to give a chance for
+      // a new LA block to be scheduled and recover
+      if(current_adv_steps)
+          --current_adv_steps;
+#endif
   }
   //WRITE_NC(LOGIC_ANALYZER_CH2, false);
 }
@@ -779,10 +645,10 @@ FORCE_INLINE void stepper_tick_lowres()
       counter_e.lo -= current_block->step_event_count.lo;
       count_position[E_AXIS] += count_direction[E_AXIS];
 #ifdef LIN_ADVANCE
-      ++ e_steps;
+      e_steps += count_direction[E_AXIS];
 #else
 	#ifdef FILAMENT_SENSOR
-	  ++ fsensor_counter;
+	  fsensor_counter += count_direction[E_AXIS];
 	#endif //FILAMENT_SENSOR
       WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN);
 #endif
@@ -841,11 +707,11 @@ FORCE_INLINE void stepper_tick_highres()
       counter_e.wide -= current_block->step_event_count.wide;
       count_position[E_AXIS]+=count_direction[E_AXIS];
 #ifdef LIN_ADVANCE
-      ++ e_steps;
+      e_steps += count_direction[E_AXIS];
 #else
-  #ifdef FILAMENT_SENSOR
-      ++ fsensor_counter;
-  #endif //FILAMENT_SENSOR
+    #ifdef FILAMENT_SENSOR
+      fsensor_counter += count_direction[E_AXIS];
+    #endif //FILAMENT_SENSOR
       WRITE(E0_STEP_PIN, INVERT_E_STEP_PIN);
 #endif
     }
@@ -854,8 +720,45 @@ FORCE_INLINE void stepper_tick_highres()
   }
 }
 
-// 50us delay
-#define LIN_ADV_FIRST_TICK_DELAY 100
+
+#ifdef LIN_ADVANCE
+// @wavexx: fast uint16_t division for small dividends<5
+//          q/3 based on "Hacker's delight" formula
+FORCE_INLINE uint16_t fastdiv(uint16_t q, uint8_t d)
+{
+    if(d != 3) return q >> (d / 2);
+    else return ((uint32_t)0xAAAB * q) >> 17;
+}
+
+FORCE_INLINE void advance_spread(uint16_t timer)
+{
+    eISR_Err += timer;
+
+    uint8_t ticks = 0;
+    while(eISR_Err >= current_block->advance_rate)
+    {
+        ++ticks;
+        eISR_Err -= current_block->advance_rate;
+    }
+    if(!ticks)
+    {
+        eISR_Rate = timer;
+        nextAdvanceISR = timer;
+        return;
+    }
+
+    if (ticks <= 3)
+        eISR_Rate = fastdiv(timer, ticks + 1);
+    else
+    {
+        // >4 ticks are still possible on slow moves
+        eISR_Rate = timer / (ticks + 1);
+    }
+
+    nextAdvanceISR = eISR_Rate;
+}
+#endif
+
 
 FORCE_INLINE void isr() {
   //WRITE_NC(LOGIC_ANALYZER_CH0, true);
@@ -868,86 +771,23 @@ FORCE_INLINE void isr() {
   if (current_block != NULL) 
   {
     stepper_check_endstops();
-#ifdef LIN_ADVANCE
-      e_steps = 0;
-#endif /* LIN_ADVANCE */
     if (current_block->flag & BLOCK_FLAG_DDA_LOWRES)
       stepper_tick_lowres();
     else
       stepper_tick_highres();
 
+
 #ifdef LIN_ADVANCE
-      if (out_bits&(1<<E_AXIS))
-        // Move in negative direction.
-        e_steps = - e_steps;
-      if (current_block->use_advance_lead) {
-        //int esteps_inc = 0;
-        //esteps_inc = current_estep_rate - current_adv_steps;
-        //e_steps += esteps_inc;
-        e_steps += current_estep_rate - current_adv_steps;
-#if 0
-        if (abs(esteps_inc) > 4) {
-          LOGIC_ANALYZER_SERIAL_TX_WRITE(esteps_inc);
-          if (esteps_inc < -511 || esteps_inc > 511)
-            LOGIC_ANALYZER_SERIAL_TX_WRITE(esteps_inc >> 9);
-        }
-#endif
-        current_adv_steps = current_estep_rate;
-      }
-      // If we have esteps to execute, step some of them now.
-      if (e_steps) {
-        //WRITE_NC(LOGIC_ANALYZER_CH7, true);
-        // Set the step direction.
-		bool neg = e_steps < 0;
-        {
-          bool dir =
-        #ifdef SNMM
-            (neg == (mmu_extruder & 1))
-        #else
-            neg
-        #endif
-            ? INVERT_E0_DIR : !INVERT_E0_DIR; //If we have SNMM, reverse every second extruder.
-          WRITE_NC(E0_DIR_PIN, dir);
-          if (neg)
-            // Flip the e_steps counter to be always positive.
-            e_steps = - e_steps;
-        }
-        // Tick min(step_loops, abs(e_steps)).
-        estep_loops = (e_steps & 0x0ff00) ? 4 : e_steps;
-        if (step_loops < estep_loops)
-          estep_loops = step_loops;
-#ifdef FILAMENT_SENSOR
-		if (READ(E0_DIR_PIN) == INVERT_E0_DIR)
-		{
-			if (count_direction[E_AXIS] == 1)
-				fsensor_counter -= estep_loops;
-			else
-				fsensor_counter += estep_loops;
-		}
-		else
-		{
-			if (count_direction[E_AXIS] == 1)
-				fsensor_counter += estep_loops;
-			else
-				fsensor_counter -= estep_loops;
-		}
-#endif //FILAMENT_SENSOR
-        do {
-          WRITE_NC(E0_STEP_PIN, !INVERT_E_STEP_PIN);
-          -- e_steps;
-          WRITE_NC(E0_STEP_PIN, INVERT_E_STEP_PIN);
-        } while (-- estep_loops != 0);
-        //WRITE_NC(LOGIC_ANALYZER_CH7, false);
-        MSerial.checkRx(); // Check for serial chars.
-      }
+    if (e_steps) WRITE_NC(E0_DIR_PIN, e_steps < 0? INVERT_E0_DIR: !INVERT_E0_DIR);
+    uint8_t la_state = 0;
 #endif
 
-    // Calculare new timer value
+    // Calculate new timer value
     // 13.38-14.63us for steady state,
     // 25.12us for acceleration / deceleration.
     {
       //WRITE_NC(LOGIC_ANALYZER_CH1, true);
-      if (step_events_completed.wide <= (unsigned long int)current_block->accelerate_until) {
+      if (step_events_completed.wide <= current_block->accelerate_until) {
         // v = t * a   ->   acc_step_rate = acceleration_time * current_block->acceleration_rate
         MultiU24X24toH16(acc_step_rate, acceleration_time, current_block->acceleration_rate);
         acc_step_rate += uint16_t(current_block->initial_rate);
@@ -955,42 +795,67 @@ FORCE_INLINE void isr() {
         if(acc_step_rate > uint16_t(current_block->nominal_rate))
           acc_step_rate = current_block->nominal_rate;
         // step_rate to timer interval
-        uint16_t timer = calc_timer(acc_step_rate);
+        uint16_t timer = calc_timer(acc_step_rate, step_loops);
         _NEXT_ISR(timer);
         acceleration_time += timer;
-  #ifdef LIN_ADVANCE
-        if (current_block->use_advance_lead)
-          // int32_t = (uint16_t * uint32_t) >> 17
-          current_estep_rate = ((uint32_t)acc_step_rate * current_block->abs_adv_steps_multiplier8) >> 17;
-  #endif
+#ifdef LIN_ADVANCE
+        if (current_block->use_advance_lead) {
+            if (step_events_completed.wide <= (unsigned long int)step_loops) {
+                la_state = ADV_INIT | ADV_ACC_VARY;
+                if (e_extruding && current_adv_steps > target_adv_steps)
+                    target_adv_steps = current_adv_steps;
+            }
+        }
+#endif
       }
-      else if (step_events_completed.wide > (unsigned long int)current_block->decelerate_after) {
+      else if (step_events_completed.wide > current_block->decelerate_after) {
         uint16_t step_rate;
         MultiU24X24toH16(step_rate, deceleration_time, current_block->acceleration_rate);
-        step_rate = acc_step_rate - step_rate; // Decelerate from aceleration end point.
-        if ((step_rate & 0x8000) || step_rate < uint16_t(current_block->final_rate)) {
-          // Result is negative or too small.
-          step_rate = uint16_t(current_block->final_rate);
+
+        if (step_rate > acc_step_rate) { // Check step_rate stays positive
+            step_rate = uint16_t(current_block->final_rate);
         }
+        else {
+            step_rate = acc_step_rate - step_rate; // Decelerate from acceleration end point.
+
+            // lower limit
+            if (step_rate < current_block->final_rate)
+                step_rate = uint16_t(current_block->final_rate);
+        }
+
         // Step_rate to timer interval.
-        uint16_t timer = calc_timer(step_rate);
+        uint16_t timer = calc_timer(step_rate, step_loops);
         _NEXT_ISR(timer);
         deceleration_time += timer;
-  #ifdef LIN_ADVANCE
-        if (current_block->use_advance_lead)
-          current_estep_rate = ((uint32_t)step_rate * current_block->abs_adv_steps_multiplier8) >> 17;
-  #endif
+
+#ifdef LIN_ADVANCE
+        if (current_block->use_advance_lead) {
+            if (step_events_completed.wide <= current_block->decelerate_after + step_loops) {
+                target_adv_steps = current_block->final_adv_steps;
+                la_state = ADV_INIT | ADV_ACC_VARY;
+                if (e_extruding && current_adv_steps < target_adv_steps)
+                    target_adv_steps = current_adv_steps;
+            }
+        }
+#endif
       }
       else {
         if (! step_loops_nominal) {
           // Calculation of the steady state timer rate has been delayed to the 1st tick of the steady state to lower
           // the initial interrupt blocking.
-          OCR1A_nominal = calc_timer(uint16_t(current_block->nominal_rate));
+          OCR1A_nominal = calc_timer(uint16_t(current_block->nominal_rate), step_loops);
           step_loops_nominal = step_loops;
-  #ifdef LIN_ADVANCE
-          if (current_block->use_advance_lead)
-            current_estep_rate = (current_block->nominal_rate * current_block->abs_adv_steps_multiplier8) >> 17;
-  #endif
+
+#ifdef LIN_ADVANCE
+          if(current_block->use_advance_lead) {
+              // Due to E-jerk, there can be discontinuities in pressure state where an
+              // acceleration or deceleration can be skipped or joined with the previous block.
+              // If LA was not previously active, re-check the pressure level
+              la_state = ADV_INIT;
+              if (e_extruding)
+                  target_adv_steps = current_adv_steps;
+          }
+#endif
         }
         _NEXT_ISR(OCR1A_nominal);
       }
@@ -998,110 +863,62 @@ FORCE_INLINE void isr() {
     }
 
 #ifdef LIN_ADVANCE
-    if (e_steps && current_block->use_advance_lead) {
-      //WRITE_NC(LOGIC_ANALYZER_CH7, true);
-      MSerial.checkRx(); // Check for serial chars.
-      // Some of the E steps were not ticked yet. Plan additional interrupts.
-      uint16_t now = TCNT1;
-      // Plan the first linear advance interrupt after 50us from now.
-      uint16_t to_go = nextMainISR - now - LIN_ADV_FIRST_TICK_DELAY;
-      eISR_Rate = 0;
-      if ((to_go & 0x8000) == 0) {
-        // The to_go number is not negative.
-        // Count the number of 7812,5 ticks, that fit into to_go 2MHz ticks.
-        uint8_t ticks = to_go >> 8;
-        if (ticks == 1) {
-          // Avoid running the following loop for a very short interval.
-          estep_loops = 255;
-          eISR_Rate = 1;
-        } else if ((e_steps & 0x0ff00) == 0) {
-          // e_steps <= 0x0ff
-          if (uint8_t(e_steps) <= ticks) {
-            // Spread the e_steps along the whole go_to interval.
-            eISR_Rate = to_go / uint8_t(e_steps);
-            estep_loops = 1;
-          } else if (ticks != 0) {
-            // At least one tick fits into the to_go interval. Calculate the e-step grouping.
-            uint8_t e = uint8_t(e_steps) >> 1;
-            estep_loops = 2;
-            while (e > ticks) {
-              e >>= 1;
-              estep_loops <<= 1;
+    // avoid multiple instances or function calls to advance_spread
+    if (la_state & ADV_INIT) {
+        LA_phase = -1;
+
+        if (current_adv_steps == target_adv_steps) {
+            // nothing to be done in this phase, cancel any pending eisr
+            la_state = 0;
+            nextAdvanceISR = ADV_NEVER;
+        }
+        else {
+            // reset error and iterations per loop for this phase
+            eISR_Err = current_block->advance_rate;
+            e_step_loops = current_block->advance_step_loops;
+
+            if ((la_state & ADV_ACC_VARY) && e_extruding && (current_adv_steps > target_adv_steps)) {
+                // LA could reverse the direction of extrusion in this phase
+                eISR_Err += current_block->advance_rate;
+                LA_phase = 0;
             }
-            // Now the estep_loops contains the number of loops of power of 2, that will be sufficient
-            // to squeeze enough of Linear Advance ticks until nextMainISR.
-            // Calculate the tick rate.
-            eISR_Rate = to_go / ticks;          
-          }
-        } else {
-          // This is an exterme case with too many e_steps inserted by the linear advance.
-          // At least one tick fits into the to_go interval. Calculate the e-step grouping.
-          estep_loops = 2;
-          uint16_t e = e_steps >> 1;
-          while (e & 0x0ff00) {
-            e >>= 1;
-            estep_loops <<= 1;
-          }
-          while (uint8_t(e) > ticks) {
-            e >>= 1;
-            estep_loops <<= 1;
-          }
-          // Now the estep_loops contains the number of loops of power of 2, that will be sufficient
-          // to squeeze enough of Linear Advance ticks until nextMainISR.
-          // Calculate the tick rate.
-          eISR_Rate = to_go / ticks;
         }
-      }
-      if (eISR_Rate == 0) {
-        // There is not enough time to fit even a single additional tick.
-        // Tick all the extruder ticks now.
-        MSerial.checkRx(); // Check for serial chars.
-#ifdef FILAMENT_SENSOR
-		if (READ(E0_DIR_PIN) == INVERT_E0_DIR)
-		{
-			if (count_direction[E_AXIS] == 1)
-				fsensor_counter -= e_steps;
-			else
-				fsensor_counter += e_steps;
-		}
-		else
-		{
-			if (count_direction[E_AXIS] == 1)
-				fsensor_counter += e_steps;
-			else
-				fsensor_counter -= e_steps;
-		}
-#endif //FILAMENT_SENSOR
-        do {
-          WRITE_NC(E0_STEP_PIN, !INVERT_E_STEP_PIN);
-          -- e_steps;
-          WRITE_NC(E0_STEP_PIN, INVERT_E_STEP_PIN);
-        } while (e_steps);
-        OCR1A = nextMainISR;
-      } else {
-        // Tick the 1st Linear Advance interrupt after 50us from now.
-        nextMainISR -= LIN_ADV_FIRST_TICK_DELAY;
-        OCR1A = now + LIN_ADV_FIRST_TICK_DELAY;
-      }
-      //WRITE_NC(LOGIC_ANALYZER_CH7, false);
-    } else
-      OCR1A = nextMainISR;
+    }
+    if (la_state & ADV_INIT || nextAdvanceISR != ADV_NEVER) {
+        // update timers & phase for the next iteration
+        advance_spread(main_Rate);
+        if (LA_phase >= 0) {
+            if (step_loops == e_step_loops)
+                LA_phase = (current_block->advance_rate < main_Rate);
+            else {
+                // avoid overflow through division. warning: we need to _guarantee_ step_loops
+                // and e_step_loops are <= 4 due to fastdiv's limit
+                auto adv_rate_n = fastdiv(current_block->advance_rate, step_loops);
+                auto main_rate_n = fastdiv(main_Rate, e_step_loops);
+                LA_phase = (adv_rate_n < main_rate_n);
+            }
+        }
+    }
+
+    // Check for serial chars. This executes roughtly inbetween 50-60% of the total runtime of the
+    // entire isr, making this spot a much better choice than checking during esteps
+    MSerial.checkRx();
 #endif
 
     // If current block is finished, reset pointer
     if (step_events_completed.wide >= current_block->step_event_count.wide) {
-#ifdef FILAMENT_SENSOR
-		fsensor_st_block_chunk(current_block, fsensor_counter);
+#if !defined(LIN_ADVANCE) && defined(FILAMENT_SENSOR)
+		fsensor_st_block_chunk(fsensor_counter);
 		fsensor_counter = 0;
 #endif //FILAMENT_SENSOR
 
       current_block = NULL;
       plan_discard_current_block();
     }
-#ifdef FILAMENT_SENSOR
-  	else if ((fsensor_counter >= fsensor_chunk_len))
+#if !defined(LIN_ADVANCE) && defined(FILAMENT_SENSOR)
+	else if ((abs(fsensor_counter) >= fsensor_chunk_len))
   	{
-      fsensor_st_block_chunk(current_block, fsensor_counter);
+      fsensor_st_block_chunk(fsensor_counter);
   	  fsensor_counter = 0;
   	}
 #endif //FILAMENT_SENSOR
@@ -1115,12 +932,113 @@ FORCE_INLINE void isr() {
 }
 
 #ifdef LIN_ADVANCE
+// Timer interrupt for E. e_steps is set in the main routine.
+
+FORCE_INLINE void advance_isr() {
+    if (current_adv_steps > target_adv_steps) {
+        // decompression
+        if (e_step_loops != 1) {
+            uint16_t d_steps = current_adv_steps - target_adv_steps;
+            if (d_steps < e_step_loops)
+                e_step_loops = d_steps;
+        }
+        e_steps -= e_step_loops;
+        if (e_steps) WRITE_NC(E0_DIR_PIN, e_steps < 0? INVERT_E0_DIR: !INVERT_E0_DIR);
+        current_adv_steps -= e_step_loops;
+    }
+    else if (current_adv_steps < target_adv_steps) {
+        // compression
+        if (e_step_loops != 1) {
+            uint16_t d_steps = target_adv_steps - current_adv_steps;
+            if (d_steps < e_step_loops)
+                e_step_loops = d_steps;
+        }
+        e_steps += e_step_loops;
+        if (e_steps) WRITE_NC(E0_DIR_PIN, e_steps < 0? INVERT_E0_DIR: !INVERT_E0_DIR);
+        current_adv_steps += e_step_loops;
+    }
 
-void clear_current_adv_vars() {
-  e_steps = 0; //Should be already 0 at an filament change event, but just to be sure..
-  current_adv_steps = 0;
+    if (current_adv_steps == target_adv_steps) {
+        // advance steps completed
+        nextAdvanceISR = ADV_NEVER;
+    }
+    else {
+        // schedule another tick
+        nextAdvanceISR = eISR_Rate;
+    }
 }
 
+FORCE_INLINE void advance_isr_scheduler() {
+    // Integrate the final timer value, accounting for scheduling adjustments
+    if(nextAdvanceISR && nextAdvanceISR != ADV_NEVER)
+    {
+        if(nextAdvanceISR > OCR1A)
+            nextAdvanceISR -= OCR1A;
+        else
+            nextAdvanceISR = 0;
+    }
+    if(nextMainISR > OCR1A)
+        nextMainISR -= OCR1A;
+    else
+        nextMainISR = 0;
+
+    // Run main stepping ISR if flagged
+    if (!nextMainISR)
+    {
+#ifdef LA_DEBUG_LOGIC
+        WRITE_NC(LOGIC_ANALYZER_CH0, true);
+#endif
+        isr();
+#ifdef LA_DEBUG_LOGIC
+        WRITE_NC(LOGIC_ANALYZER_CH0, false);
+#endif
+    }
+
+    // Run the next advance isr if triggered
+    bool eisr = !nextAdvanceISR;
+    if (eisr)
+    {
+#ifdef LA_DEBUG_LOGIC
+        WRITE_NC(LOGIC_ANALYZER_CH1, true);
+#endif
+        advance_isr();
+#ifdef LA_DEBUG_LOGIC
+        WRITE_NC(LOGIC_ANALYZER_CH1, false);
+#endif
+    }
+
+    // Tick E steps if any
+    if (e_steps && (LA_phase < 0 || LA_phase == eisr)) {
+        uint8_t max_ticks = (eisr? e_step_loops: step_loops);
+        max_ticks = min(abs(e_steps), max_ticks);
+        bool rev = (e_steps < 0);
+        do
+        {
+            WRITE_NC(E0_STEP_PIN, !INVERT_E_STEP_PIN);
+            e_steps += (rev? 1: -1);
+            WRITE_NC(E0_STEP_PIN, INVERT_E_STEP_PIN);
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
+            fsensor_counter += (rev? -1: 1);
+#endif
+        }
+        while(--max_ticks);
+
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
+        if (abs(fsensor_counter) >= fsensor_chunk_len)
+        {
+            fsensor_st_block_chunk(fsensor_counter);
+            fsensor_counter = 0;
+        }
+#endif
+    }
+
+    // Schedule the next closest tick, ignoring advance if scheduled too
+    // soon in order to avoid skewing the regular stepper acceleration
+    if (nextAdvanceISR != ADV_NEVER && (nextAdvanceISR + 40) < nextMainISR)
+        OCR1A = nextAdvanceISR;
+    else
+        OCR1A = nextMainISR;
+}
 #endif // LIN_ADVANCE
 
 void st_init()
@@ -1347,18 +1265,46 @@ void st_init()
   // Plan the first interrupt after 8ms from now.
   OCR1A = 0x4000;
   TCNT1 = 0;
-  ENABLE_STEPPER_DRIVER_INTERRUPT();
 
 #ifdef LIN_ADVANCE
-    e_steps = 0;
-    current_adv_steps = 0;
+#ifdef LA_DEBUG_LOGIC
+  LOGIC_ANALYZER_CH0_ENABLE;
+  LOGIC_ANALYZER_CH1_ENABLE;
+  WRITE_NC(LOGIC_ANALYZER_CH0, false);
+  WRITE_NC(LOGIC_ANALYZER_CH1, false);
 #endif
-    
+
+  // Initialize state for the linear advance scheduler
+  nextMainISR = 0;
+  nextAdvanceISR = ADV_NEVER;
+  main_Rate = ADV_NEVER;
+  current_adv_steps = 0;
+#endif
+
   enable_endstops(true); // Start with endstops active. After homing they can be disabled
+
+  ENABLE_STEPPER_DRIVER_INTERRUPT();
   sei();
 }
 
 
+void st_reset_timer()
+{
+  // Clear a possible pending interrupt on OCR1A overflow.
+  TIFR1 |= 1 << OCF1A;
+  // Reset the counter.
+  TCNT1 = 0;
+  // Wake up after 1ms from now.
+  OCR1A = 2000;
+
+#ifdef LIN_ADVANCE
+  nextMainISR = 0;
+  if(nextAdvanceISR && nextAdvanceISR != ADV_NEVER)
+      nextAdvanceISR = 0;
+#endif
+}
+
+
 // Block until all buffered steps are executed
 void st_synchronize()
 {
@@ -1427,29 +1373,20 @@ float st_get_position_mm(uint8_t axis)
 }
 
 
-void finishAndDisableSteppers()
-{
-  st_synchronize();
-  disable_x();
-  disable_y();
-  disable_z();
-  disable_e0();
-  disable_e1();
-  disable_e2();
-}
-
 void quickStop()
 {
   DISABLE_STEPPER_DRIVER_INTERRUPT();
   while (blocks_queued()) plan_discard_current_block(); 
   current_block = NULL;
+#ifdef LIN_ADVANCE
+  nextAdvanceISR = ADV_NEVER;
+  current_adv_steps = 0;
+#endif
   st_reset_timer();
   ENABLE_STEPPER_DRIVER_INTERRUPT();
 }
 
 #ifdef BABYSTEPPING
-
-
 void babystep(const uint8_t axis,const bool direction)
 {
   //MUST ONLY BE CALLED BY A ISR, it depends on that no other ISR interrupts this
@@ -1685,3 +1622,13 @@ void microstep_readings()
       #endif
 }
 #endif //TMC2130
+
+
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
+void st_reset_fsensor()
+{
+    CRITICAL_SECTION_START;
+    fsensor_counter = 0;
+    CRITICAL_SECTION_END;
+}
+#endif //FILAMENT_SENSOR

+ 5 - 18
Firmware/stepper.h

@@ -37,12 +37,6 @@ void st_init();
 
 void isr();
 
-#ifdef LIN_ADVANCE
-  void advance_isr();
-  void advance_isr_scheduler();
-  void clear_current_adv_vars(); //Used to reset the built up pretension and remaining esteps on filament change.
-#endif
-
 // Block until all buffered steps are executed
 void st_synchronize();
 
@@ -62,15 +56,7 @@ float st_get_position_mm(uint8_t axis);
 
 // Call this function just before re-enabling the stepper driver interrupt and the global interrupts
 // to avoid a stepper timer overflow.
-FORCE_INLINE void st_reset_timer()
-{
-  // Clear a possible pending interrupt on OCR1A overflow.
-  TIFR1 |= 1 << OCF1A;
-  // Reset the counter.
-  TCNT1 = 0;
-  // Wake up after 1ms from now.
-  OCR1A = 2000;
-}
+void st_reset_timer();
 
 void checkHitEndstops(); //call from somewhere to create an serial error message with the locations the endstops where hit, in case they were triggered
 bool endstops_hit_on_purpose(); //avoid creation of the message, i.e. after homing and before a routine call of checkHitEndstops();
@@ -83,8 +69,6 @@ void invert_z_endstop(bool endstop_invert);
 
 void checkStepperErrors(); //Print errors detected by the stepper
 
-void finishAndDisableSteppers();
-
 extern block_t *current_block;  // A pointer to the block currently being traced
 extern bool x_min_endstop;
 extern bool x_max_endstop;
@@ -106,7 +90,10 @@ void microstep_readings();
 #ifdef BABYSTEPPING
   void babystep(const uint8_t axis,const bool direction); // perform a short step with a single stepper motor, outside of any convention
 #endif
-     
 
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
+// reset the internal filament sensor state
+void st_reset_fsensor();
+#endif
 
 #endif

+ 5 - 4
Firmware/system_timer.h

@@ -8,11 +8,12 @@
 
 #ifdef SYSTEM_TIMER_2
 #include "timer02.h"
+#include "tone04.h"
 #define _millis millis2
 #define _micros micros2
 #define _delay delay2
-#define _tone tone2
-#define _noTone noTone2
+#define _tone tone4
+#define _noTone noTone4
 
 #define timer02_set_pwm0(pwm0)
 
@@ -20,8 +21,8 @@
 #define _millis millis
 #define _micros micros
 #define _delay delay
-#define _tone(x, y) /*tone*/
-#define _noTone(x) /*noTone*/
+#define _tone tone
+#define _noTone noTone
 #define timer02_set_pwm0(pwm0)
 #endif //SYSTEM_TIMER_2
 

+ 284 - 131
Firmware/temperature.cpp

@@ -73,8 +73,8 @@ int current_voltage_raw_pwr = 0;
 int current_voltage_raw_bed = 0;
 #endif
 
-#if IR_SENSOR_ANALOG
-int current_voltage_raw_IR = 0;
+#ifdef IR_SENSOR_ANALOG
+uint16_t current_voltage_raw_IR = 0;
 #endif //IR_SENSOR_ANALOG
 
 int current_temperature_bed_raw = 0;
@@ -143,14 +143,22 @@ static volatile bool temp_meas_ready = false;
 #ifdef FAN_SOFT_PWM
   static unsigned char soft_pwm_fan;
 #endif
-#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
-    (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
-    (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
+
+uint8_t fanSpeedBckp = 255;
+
+#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
   unsigned long extruder_autofan_last_check = _millis();
-  uint8_t fanSpeedBckp = 255;
+  
   bool fan_measuring = false;
-
-#endif  
+  uint8_t fanState = 0;
+#ifdef EXTRUDER_ALTFAN_DETECT
+  struct
+  {
+    uint8_t isAltfan : 1;
+    uint8_t altfanOverride : 1;
+  } altfanStatus;
+#endif //EXTRUDER_ALTFAN_DETECT
+#endif
 
 
 #if EXTRUDERS > 3
@@ -176,6 +184,12 @@ static int bed_minttemp_raw = HEATER_BED_RAW_LO_TEMP;
 #ifdef BED_MAXTEMP
 static int bed_maxttemp_raw = HEATER_BED_RAW_HI_TEMP;
 #endif
+#ifdef AMBIENT_MINTEMP
+static int ambient_minttemp_raw = AMBIENT_RAW_LO_TEMP;
+#endif
+#ifdef AMBIENT_MAXTEMP
+static int ambient_maxttemp_raw = AMBIENT_RAW_HI_TEMP;
+#endif
 
 static void *heater_ttbl_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( (void *)HEATER_0_TEMPTABLE, (void *)HEATER_1_TEMPTABLE, (void *)HEATER_2_TEMPTABLE );
 static uint8_t heater_ttbllen_map[EXTRUDERS] = ARRAY_BY_EXTRUDERS( HEATER_0_TEMPTABLE_LEN, HEATER_1_TEMPTABLE_LEN, HEATER_2_TEMPTABLE_LEN );
@@ -210,6 +224,64 @@ static void temp_runaway_check(int _heater_id, float _target_temperature, float
 static void temp_runaway_stop(bool isPreheat, bool isBed);
 #endif
 
+#ifdef EXTRUDER_ALTFAN_DETECT
+ISR(INT6_vect) {
+	fan_edge_counter[0]++;
+}
+
+bool extruder_altfan_detect()
+{
+	setExtruderAutoFanState(3);
+
+	SET_INPUT(TACH_0);
+
+	uint8_t overrideVal = eeprom_read_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE);
+	if (overrideVal == EEPROM_EMPTY_VALUE)
+	{
+		overrideVal = (calibration_status() == CALIBRATION_STATUS_CALIBRATED) ? 1 : 0;
+		eeprom_update_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE, overrideVal);
+	}
+	altfanStatus.altfanOverride = overrideVal;
+
+	CRITICAL_SECTION_START;
+	EICRB &= ~(1 << ISC61);
+	EICRB |= (1 << ISC60);
+	EIMSK |= (1 << INT6);
+	fan_edge_counter[0] = 0;
+	CRITICAL_SECTION_END;
+	extruder_autofan_last_check = _millis();
+
+	_delay(1000);
+
+	EIMSK &= ~(1 << INT6);
+
+	countFanSpeed();
+	altfanStatus.isAltfan = fan_speed[0] > 100;
+	setExtruderAutoFanState(1);
+	return altfanStatus.isAltfan;
+}
+
+void altfanOverride_toggle()
+{
+    altfanStatus.altfanOverride = !altfanStatus.altfanOverride;
+    eeprom_update_byte((uint8_t *)EEPROM_ALTFAN_OVERRIDE, altfanStatus.altfanOverride);
+}
+
+bool altfanOverride_get()
+{
+    return altfanStatus.altfanOverride;
+}
+
+#endif //EXTRUDER_ALTFAN_DETECT
+
+// return "false", if all extruder-heaters are 'off' (ie. "true", if any heater is 'on')
+bool checkAllHotends(void)
+{
+    bool result=false;
+    for(int i=0;i<EXTRUDERS;i++) result=(result||(target_temperature[i]!=0));
+    return(result);
+}
+
   void PID_autotune(float temp, int extruder, int ncycles)
   {
   pid_number_of_cycles = ncycles;
@@ -231,9 +303,7 @@ static void temp_runaway_stop(bool isPreheat, bool isBed);
   const uint8_t safety_check_cycles_count = (extruder < 0) ? 45 : 10; //10 cycles / 20s delay for extruder and 45 cycles / 90s for heatbed
   float temp_ambient;
 
-#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
-    (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
-    (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
+#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
   unsigned long extruder_autofan_last_check = _millis();
 #endif
 
@@ -281,9 +351,7 @@ static void temp_runaway_stop(bool isPreheat, bool isBed);
       max=max(max,input);
       min=min(min,input);
 
-      #if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
-          (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
-          (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
+      #if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
       if(_millis() - extruder_autofan_last_check > 2500) {
         checkExtruderAutoFans();
         extruder_autofan_last_check = _millis();
@@ -439,29 +507,31 @@ int getHeaterPower(int heater) {
   return soft_pwm[heater];
 }
 
-#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
-    (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
-    (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
+#if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
 
   #if defined(FAN_PIN) && FAN_PIN > -1
     #if EXTRUDER_0_AUTO_FAN_PIN == FAN_PIN 
        #error "You cannot set EXTRUDER_0_AUTO_FAN_PIN equal to FAN_PIN"
     #endif
-    #if EXTRUDER_1_AUTO_FAN_PIN == FAN_PIN 
-       #error "You cannot set EXTRUDER_1_AUTO_FAN_PIN equal to FAN_PIN"
-    #endif
-    #if EXTRUDER_2_AUTO_FAN_PIN == FAN_PIN 
-       #error "You cannot set EXTRUDER_2_AUTO_FAN_PIN equal to FAN_PIN"
-    #endif
-  #endif 
+  #endif
 
-void setExtruderAutoFanState(int pin, bool state)
+void setExtruderAutoFanState(uint8_t state)
 {
-  unsigned char newFanSpeed = (state != 0) ? EXTRUDER_AUTO_FAN_SPEED : 0;
-  // this idiom allows both digital and PWM fan outputs (see M42 handling).
-  pinMode(pin, OUTPUT);
-  digitalWrite(pin, newFanSpeed);
-  //analogWrite(pin, newFanSpeed);
+	//If bit 1 is set (0x02), then the extruder fan speed won't be adjusted according to temperature. Useful for forcing
+	//the fan to either On or Off during certain tests/errors.
+
+	fanState = state;
+	uint8_t newFanSpeed = 0;
+	if (fanState & 0x01)
+	{
+#ifdef EXTRUDER_ALTFAN_DETECT
+		if (altfanStatus.isAltfan && !altfanStatus.altfanOverride) newFanSpeed = EXTRUDER_ALTFAN_SPEED_SILENT;
+		else newFanSpeed = EXTRUDER_AUTO_FAN_SPEED;
+#else //EXTRUDER_ALTFAN_DETECT
+		newFanSpeed = EXTRUDER_AUTO_FAN_SPEED;
+#endif //EXTRUDER_ALTFAN_DETECT
+	}
+	timer4_set_fan0(newFanSpeed);
 }
 
 #if (defined(FANCHECK) && (((defined(TACH_0) && (TACH_0 >-1)) || (defined(TACH_1) && (TACH_1 > -1)))))
@@ -495,7 +565,7 @@ void checkFanSpeed()
 	  fans_check_enabled = (eeprom_read_byte((uint8_t*)EEPROM_FAN_CHECK_ENABLED) > 0);
 	static unsigned char fan_speed_errors[2] = { 0,0 };
 #if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 >-1))
-	if ((fan_speed[0] == 0) && (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)){ fan_speed_errors[0]++;}
+	if ((fan_speed[0] < 20) && (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)){ fan_speed_errors[0]++;}
 	else{
     fan_speed_errors[0] = 0;
     host_keepalive();
@@ -569,47 +639,14 @@ void fanSpeedError(unsigned char _fan) {
 
 void checkExtruderAutoFans()
 {
-  uint8_t fanState = 0;
-
-  // which fan pins need to be turned on?      
-  #if defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1
-  if (current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE)
-	  fanState |= 1;
-  #endif
-  #if defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1
-    if (current_temperature[1] > EXTRUDER_AUTO_FAN_TEMPERATURE) 
-    {
-      if (EXTRUDER_1_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN) 
-        fanState |= 1;
-      else
-        fanState |= 2;
-    }
-  #endif
-  #if defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1
-    if (current_temperature[2] > EXTRUDER_AUTO_FAN_TEMPERATURE) 
-    {
-      if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_0_AUTO_FAN_PIN) 
-        fanState |= 1;
-      else if (EXTRUDER_2_AUTO_FAN_PIN == EXTRUDER_1_AUTO_FAN_PIN) 
-        fanState |= 2;
-      else
-        fanState |= 4;
-    }
-  #endif
-  
-  // update extruder auto fan states
-  #if defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1
-    setExtruderAutoFanState(EXTRUDER_0_AUTO_FAN_PIN, (fanState & 1) != 0);
-  #endif 
-  #if defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1
-    if (EXTRUDER_1_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN) 
-      setExtruderAutoFanState(EXTRUDER_1_AUTO_FAN_PIN, (fanState & 2) != 0);
-  #endif 
-  #if defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1
-    if (EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_0_AUTO_FAN_PIN 
-        && EXTRUDER_2_AUTO_FAN_PIN != EXTRUDER_1_AUTO_FAN_PIN)
-      setExtruderAutoFanState(EXTRUDER_2_AUTO_FAN_PIN, (fanState & 4) != 0);
-  #endif 
+#if defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1
+	if (!(fanState & 0x02))
+	{
+		fanState &= ~1;
+		fanState |= current_temperature[0] > EXTRUDER_AUTO_FAN_TEMPERATURE;
+	}
+	setExtruderAutoFanState(fanState);
+#endif 
 }
 
 #endif // any extruder auto fan pins set
@@ -633,6 +670,7 @@ void manage_heater()
     return; 
 // more precisely - this condition partially stabilizes time interval for regulation values evaluation (@ ~ 230ms)
 
+  // ADC values need to be converted before checking: converted values are later used in MINTEMP
   updateTemperaturesFromRawValues();
 
   check_max_temp();
@@ -729,9 +767,7 @@ void manage_heater()
 #define FAN_CHECK_DURATION 100 //100ms
 
 #ifndef DEBUG_DISABLE_FANCHECK
-  #if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1) || \
-      (defined(EXTRUDER_1_AUTO_FAN_PIN) && EXTRUDER_1_AUTO_FAN_PIN > -1) || \
-      (defined(EXTRUDER_2_AUTO_FAN_PIN) && EXTRUDER_2_AUTO_FAN_PIN > -1)
+  #if (defined(EXTRUDER_0_AUTO_FAN_PIN) && EXTRUDER_0_AUTO_FAN_PIN > -1)
 
 #ifdef FAN_SOFT_PWM
 #ifdef FANCHECK
@@ -1090,7 +1126,9 @@ void tp_init()
 
   timer0_init();
   OCR2B = 128;
-  TIMSK2 |= (1<<OCIE2B);  
+  TIMSK2 |= (1<<OCIE2B);
+  
+  timer4_init(); //for tone and Extruder fan PWM
   
   // Wait for temperature measurement to settle
   _delay(250);
@@ -1159,7 +1197,6 @@ void tp_init()
 #endif //MAXTEMP 2
 
 #ifdef BED_MINTEMP
-  /* No bed MINTEMP error implemented?!? */
   while(analog2tempBed(bed_minttemp_raw) < BED_MINTEMP) {
 #if HEATER_BED_RAW_LO_TEMP < HEATER_BED_RAW_HI_TEMP
     bed_minttemp_raw += OVERSAMPLENR;
@@ -1167,7 +1204,6 @@ void tp_init()
     bed_minttemp_raw -= OVERSAMPLENR;
 #endif
   }
-  
 #endif //BED_MINTEMP
 #ifdef BED_MAXTEMP
   while(analog2tempBed(bed_maxttemp_raw) > BED_MAXTEMP) {
@@ -1178,6 +1214,25 @@ void tp_init()
 #endif
   }
 #endif //BED_MAXTEMP
+
+#ifdef AMBIENT_MINTEMP
+  while(analog2tempAmbient(ambient_minttemp_raw) < AMBIENT_MINTEMP) {
+#if HEATER_AMBIENT_RAW_LO_TEMP < HEATER_AMBIENT_RAW_HI_TEMP
+    ambient_minttemp_raw += OVERSAMPLENR;
+#else
+    ambient_minttemp_raw -= OVERSAMPLENR;
+#endif
+  }
+#endif //AMBIENT_MINTEMP
+#ifdef AMBIENT_MAXTEMP
+  while(analog2tempAmbient(ambient_maxttemp_raw) > AMBIENT_MAXTEMP) {
+#if HEATER_AMBIENT_RAW_LO_TEMP < HEATER_AMBIENT_RAW_HI_TEMP
+    ambient_maxttemp_raw -= OVERSAMPLENR;
+#else
+    ambient_maxttemp_raw += OVERSAMPLENR;
+#endif
+  }
+#endif //AMBIENT_MAXTEMP
 }
 
 #if (defined (TEMP_RUNAWAY_BED_HYSTERESIS) && TEMP_RUNAWAY_BED_TIMEOUT > 0) || (defined (TEMP_RUNAWAY_EXTRUDER_HYSTERESIS) && TEMP_RUNAWAY_EXTRUDER_TIMEOUT > 0)
@@ -1349,9 +1404,11 @@ void temp_runaway_stop(bool isPreheat, bool isBed)
 		isBed ? LCD_ALERTMESSAGEPGM("BED PREHEAT ERROR") : LCD_ALERTMESSAGEPGM("PREHEAT ERROR");
 		SERIAL_ERROR_START;
 		isBed ? SERIAL_ERRORLNPGM(" THERMAL RUNAWAY ( PREHEAT HEATBED)") : SERIAL_ERRORLNPGM(" THERMAL RUNAWAY ( PREHEAT HOTEND)");
-		SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
+#ifdef EXTRUDER_ALTFAN_DETECT
+		altfanStatus.altfanOverride = 1; //full speed
+#endif //EXTRUDER_ALTFAN_DETECT
+		setExtruderAutoFanState(3);
 		SET_OUTPUT(FAN_PIN);
-		WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1);
 #ifdef FAN_SOFT_PWM
 		fanSpeedSoftPwm = 255;
 #else //FAN_SOFT_PWM
@@ -1403,6 +1460,7 @@ void disable_heater()
     target_temperature_bed=0;
     soft_pwm_bed=0;
 	timer02_set_pwm0(soft_pwm_bed << 1);
+	bedPWMDisabled = 0;
     #if defined(HEATER_BED_PIN) && HEATER_BED_PIN > -1
       //WRITE(HEATER_BED_PIN,LOW);
     #endif
@@ -1418,26 +1476,55 @@ enum { LCDALERT_NONE = 0, LCDALERT_HEATERMINTEMP, LCDALERT_BEDMINTEMP, LCDALERT_
 //! to prevent flicker and improve speed
 uint8_t last_alert_sent_to_lcd = LCDALERT_NONE;
 
+
+//! update the current temperature error message
+//! @param type short error abbreviation (PROGMEM)
+//! @param func optional lcd update function (lcd_setalertstatus when first setting the error)
+void temp_update_messagepgm(const char* PROGMEM type, void (*func)(const char*) = lcd_updatestatus)
+{
+    char msg[LCD_WIDTH];
+    strcpy_P(msg, PSTR("Err: "));
+    strcat_P(msg, type);
+    (*func)(msg);
+}
+
+//! signal a temperature error on both the lcd and serial
+//! @param type short error abbreviation (PROGMEM)
+//! @param e optional extruder index for hotend errors
+void temp_error_messagepgm(const char* PROGMEM type, uint8_t e = EXTRUDERS)
+{
+    temp_update_messagepgm(type, lcd_setalertstatus);
+
+    SERIAL_ERROR_START;
+
+    if(e != EXTRUDERS) {
+        SERIAL_ERROR((int)e);
+        SERIAL_ERRORPGM(": ");
+    }
+
+    SERIAL_ERRORPGM("Heaters switched off. ");
+    SERIAL_ERRORRPGM(type);
+    SERIAL_ERRORLNPGM(" triggered!");
+}
+
+
 void max_temp_error(uint8_t e) {
   disable_heater();
   if(IsStopped() == false) {
-    SERIAL_ERROR_START;
-    SERIAL_ERRORLN((int)e);
-    SERIAL_ERRORLNPGM(": Extruder switched off. MAXTEMP triggered !");
-    LCD_ALERTMESSAGEPGM("Err: MAXTEMP");
+    temp_error_messagepgm(PSTR("MAXTEMP"), e);
   }
   #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
   Stop();
-    
-
-    
   #endif
-    SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
+
     SET_OUTPUT(FAN_PIN);
     SET_OUTPUT(BEEPER);
     WRITE(FAN_PIN, 1);
-    WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1);
     WRITE(BEEPER, 1);
+#ifdef EXTRUDER_ALTFAN_DETECT
+    altfanStatus.altfanOverride = 1; //full speed
+#endif //EXTRUDER_ALTFAN_DETECT
+    setExtruderAutoFanState(3);
     // fanSpeed will consumed by the check_axes_activity() routine.
     fanSpeed=255;
 	if (farm_mode) { prusa_statistics(93); }
@@ -1447,18 +1534,15 @@ void min_temp_error(uint8_t e) {
 #ifdef DEBUG_DISABLE_MINTEMP
 	return;
 #endif
-//if (current_temperature_ambient < MINTEMP_MINAMBIENT) return;
   disable_heater();
-	static const char err[] PROGMEM = "Err: MINTEMP";
+//if (current_temperature_ambient < MINTEMP_MINAMBIENT) return;
+	static const char err[] PROGMEM = "MINTEMP";
   if(IsStopped() == false) {
-    SERIAL_ERROR_START;
-    SERIAL_ERRORLN((int)e);
-    SERIAL_ERRORLNPGM(": Extruder switched off. MINTEMP triggered !");
-    lcd_setalertstatuspgm(err);
+    temp_error_messagepgm(err, e);
     last_alert_sent_to_lcd = LCDALERT_HEATERMINTEMP;
   } else if( last_alert_sent_to_lcd != LCDALERT_HEATERMINTEMP ){ // only update, if the lcd message is to be changed (i.e. not the same as last time)
 	// we are already stopped due to some error, only update the status message without flickering
-	lcd_updatestatuspgm(err);
+    temp_update_messagepgm(err);
 	last_alert_sent_to_lcd = LCDALERT_HEATERMINTEMP;
   }
   #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
@@ -1473,37 +1557,27 @@ void min_temp_error(uint8_t e) {
 }
 
 void bed_max_temp_error(void) {
-#if HEATER_BED_PIN > -1
-  //WRITE(HEATER_BED_PIN, 0);
-#endif
+  disable_heater();
   if(IsStopped() == false) {
-    SERIAL_ERROR_START;
-    SERIAL_ERRORLNPGM("Temperature heated bed switched off. MAXTEMP triggered !");
-    LCD_ALERTMESSAGEPGM("Err: MAXTEMP BED");
+    temp_error_messagepgm(PSTR("MAXTEMP BED"));
   }
   #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
   Stop();
   #endif
-
 }
 
 void bed_min_temp_error(void) {
 #ifdef DEBUG_DISABLE_MINTEMP
 	return;
 #endif
-//if (current_temperature_ambient < MINTEMP_MINAMBIENT) return;
-#if HEATER_BED_PIN > -1
-    //WRITE(HEATER_BED_PIN, 0);
-#endif
-	static const char err[] PROGMEM = "Err: MINTEMP BED";
+    disable_heater();
+    static const char err[] PROGMEM = "MINTEMP BED";
     if(IsStopped() == false) {
-        SERIAL_ERROR_START;
-        SERIAL_ERRORLNPGM("Temperature heated bed switched off. MINTEMP triggered !");
-		lcd_setalertstatuspgm(err);
+        temp_error_messagepgm(err);
 		last_alert_sent_to_lcd = LCDALERT_BEDMINTEMP;
 	} else if( last_alert_sent_to_lcd != LCDALERT_BEDMINTEMP ){ // only update, if the lcd message is to be changed (i.e. not the same as last time)
 		// we are already stopped due to some error, only update the status message without flickering
-		lcd_updatestatuspgm(err);
+        temp_update_messagepgm(err);
 		last_alert_sent_to_lcd = LCDALERT_BEDMINTEMP;
     }
 #ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
@@ -1511,6 +1585,33 @@ void bed_min_temp_error(void) {
 #endif
 }
 
+
+#ifdef AMBIENT_THERMISTOR
+void ambient_max_temp_error(void) {
+    disable_heater();
+    if(IsStopped() == false) {
+        temp_error_messagepgm(PSTR("MAXTEMP AMB"));
+    }
+#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+    Stop();
+#endif
+}
+
+void ambient_min_temp_error(void) {
+#ifdef DEBUG_DISABLE_MINTEMP
+	return;
+#endif
+    disable_heater();
+    if(IsStopped() == false) {
+        temp_error_messagepgm(PSTR("MINTEMP AMB"));
+    }
+#ifndef BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
+    Stop();
+#endif
+}
+#endif
+
+
 #ifdef HEATER_0_USES_MAX6675
 #define MAX6675_HEAT_INTERVAL 250
 long max6675_previous_millis = MAX6675_HEAT_INTERVAL;
@@ -1587,7 +1688,7 @@ void adc_ready(void) //callback from adc when sampling finished
 #ifdef VOLT_BED_PIN
 	current_voltage_raw_bed = adc_values[ADC_PIN_IDX(VOLT_BED_PIN)]; // 6->9
 #endif
-#if IR_SENSOR_ANALOG
+#ifdef IR_SENSOR_ANALOG
      current_voltage_raw_IR = adc_values[ADC_PIN_IDX(VOLT_IR_PIN)];
 #endif //IR_SENSOR_ANALOG
 	temp_meas_ready = true;
@@ -1595,18 +1696,8 @@ void adc_ready(void) //callback from adc when sampling finished
 
 } // extern "C"
 
-// Timer2 (originaly timer0) is shared with millies
-#ifdef SYSTEM_TIMER_2
-ISR(TIMER2_COMPB_vect)
-#else //SYSTEM_TIMER_2
-ISR(TIMER0_COMPB_vect)
-#endif //SYSTEM_TIMER_2
+FORCE_INLINE static void temperature_isr()
 {
-	static bool _lock = false;
-	if (_lock) return;
-	_lock = true;
-	asm("sei");
-
 	if (!temp_meas_ready) adc_cycle();
 	lcd_buttons_update();
 
@@ -1972,8 +2063,24 @@ ISR(TIMER0_COMPB_vect)
 #if (defined(FANCHECK) && defined(TACH_0) && (TACH_0 > -1))
   check_fans();
 #endif //(defined(TACH_0))
+}
 
-	_lock = false;
+// Timer2 (originaly timer0) is shared with millies
+#ifdef SYSTEM_TIMER_2
+ISR(TIMER2_COMPB_vect)
+#else //SYSTEM_TIMER_2
+ISR(TIMER0_COMPB_vect)
+#endif //SYSTEM_TIMER_2
+{
+    static bool _lock = false;
+    if (!_lock)
+    {
+        _lock = true;
+        sei();
+        temperature_isr();
+        cli();
+        _lock = false;
+    }
 }
 
 void check_max_temp()
@@ -1993,15 +2100,25 @@ void check_max_temp()
 #else
     if (current_temperature_bed_raw >= bed_maxttemp_raw) {
 #endif
-       target_temperature_bed = 0;
        bed_max_temp_error();
     }
 #endif
-
+//ambient
+#if defined(AMBIENT_MAXTEMP) && (TEMP_SENSOR_AMBIENT != 0)
+#if AMBIENT_RAW_LO_TEMP > AMBIENT_RAW_HI_TEMP
+    if (current_temperature_raw_ambient <= ambient_maxttemp_raw) {
+#else
+    if (current_temperature_raw_ambient >= ambient_maxttemp_raw) {
+#endif
+       ambient_max_temp_error();
+    }
+#endif
 }
 //! number of repeating the same state with consecutive step() calls
 //! used to slow down text switching
 struct alert_automaton_mintemp {
+	const char *m2;
+	alert_automaton_mintemp(const char *m2):m2(m2){}
 private:
 	enum { ALERT_AUTOMATON_SPEED_DIV = 5 };
 	enum class States : uint8_t { Init = 0, TempAboveMintemp, ShowPleaseRestart, ShowMintemp };
@@ -2021,7 +2138,6 @@ public:
 	//! @param current_temp current hotend/bed temperature (for computing simple hysteresis)
 	//! @param mintemp minimal temperature including hysteresis to check current_temp against
 	void step(float current_temp, float mintemp){
-		static const char m2[] PROGMEM = "MINTEMP fixed";
 		static const char m1[] PROGMEM = "Please restart";
 		switch(state){
 		case States::Init: // initial state - check hysteresis
@@ -2049,8 +2165,9 @@ public:
 		}
 	}
 };
-
-static alert_automaton_mintemp alert_automaton_hotend, alert_automaton_bed;
+static const char m2hotend[] PROGMEM = "MINTEMP HOTEND fixed";
+static const char m2bed[] PROGMEM = "MINTEMP BED fixed";
+static alert_automaton_mintemp alert_automaton_hotend(m2hotend), alert_automaton_bed(m2bed);
 
 void check_min_temp_heater0()
 {
@@ -2090,12 +2207,32 @@ void check_min_temp_bed()
 	}
 }
 
+#ifdef AMBIENT_MINTEMP
+void check_min_temp_ambient()
+{
+#if AMBIENT_RAW_LO_TEMP > AMBIENT_RAW_HI_TEMP
+	if (current_temperature_raw_ambient >= ambient_minttemp_raw) {
+#else
+	if (current_temperature_raw_ambient <= ambient_minttemp_raw) {
+#endif
+		ambient_min_temp_error();
+	}
+}
+#endif
+
 void check_min_temp()
 {
 static bool bCheckingOnHeater=false;              // state variable, which allows to short no-checking delay (is set, when temperature is (first time) over heaterMintemp)
 static bool bCheckingOnBed=false;                 // state variable, which allows to short no-checking delay (is set, when temperature is (first time) over bedMintemp)
 #ifdef AMBIENT_THERMISTOR
-if(current_temperature_raw_ambient>(OVERSAMPLENR*MINTEMP_MINAMBIENT_RAW)) // thermistor is NTC type, so operator is ">" ;-)
+#ifdef AMBIENT_MINTEMP
+check_min_temp_ambient();
+#endif
+#if AMBIENT_RAW_LO_TEMP > AMBIENT_RAW_HI_TEMP
+if(current_temperature_raw_ambient>(OVERSAMPLENR*MINTEMP_MINAMBIENT_RAW)) // thermistor is NTC type
+#else
+if(current_temperature_raw_ambient=<(OVERSAMPLENR*MINTEMP_MINAMBIENT_RAW))
+#endif
      {                                            // ambient temperature is low
 #endif //AMBIENT_THERMISTOR
 // *** 'common' part of code for MK2.5 & MK3
@@ -2183,4 +2320,20 @@ float unscalePID_d(float d)
 
 #endif //PIDTEMP
 
+#ifdef PINDA_THERMISTOR
+//! @brief PINDA thermistor detected
+//!
+//! @retval true firmware should do temperature compensation and allow calibration
+//! @retval false PINDA thermistor is not detected, disable temperature compensation and calibration
+//!
+bool has_temperature_compensation()
+{
+#ifdef DETECT_SUPERPINDA
+    return (current_temperature_pinda >= PINDA_MINTEMP) ? true : false;
+#else
+    return true;
+#endif
+}
+#endif //PINDA_THERMISTOR
+
 

+ 17 - 5
Firmware/temperature.h

@@ -47,6 +47,8 @@
 void tp_init();  //initialize the heating
 void manage_heater(); //it is critical that this is called periodically.
 
+extern bool checkAllHotends(void);
+
 // low level conversion routines
 // do not use these routines and variables outside of temperature.cpp
 extern int target_temperature[EXTRUDERS];  
@@ -61,6 +63,7 @@ extern float current_temperature_bed;
 #ifdef PINDA_THERMISTOR
 extern uint16_t current_temperature_raw_pinda;
 extern float current_temperature_pinda;
+bool has_temperature_compensation();
 #endif
 
 #ifdef AMBIENT_THERMISTOR
@@ -76,14 +79,16 @@ extern int current_voltage_raw_pwr;
 extern int current_voltage_raw_bed;
 #endif
 
-#if IR_SENSOR_ANALOG
-extern int current_voltage_raw_IR;
+#ifdef IR_SENSOR_ANALOG
+extern uint16_t current_voltage_raw_IR;
 #endif //IR_SENSOR_ANALOG
 
 #if defined(CONTROLLERFAN_PIN) && CONTROLLERFAN_PIN > -1
   extern unsigned char soft_pwm_bed;
 #endif
 
+extern bool bedPWMDisabled;
+
 #ifdef PIDTEMP
   extern int pid_cycle, pid_number_of_cycles;
   extern float Kc,_Kp,_Ki,_Kd;
@@ -220,6 +225,9 @@ FORCE_INLINE bool isCoolingBed() {
 #error Invalid number of extruders
 #endif
 
+// return "false", if all heaters are 'off' (ie. "true", if any heater is 'on')
+#define CHECK_ALL_HEATERS (checkAllHotends()||(target_temperature_bed!=0))
+
 int getHeaterPower(int heater);
 void disable_heater();
 void updatePID();
@@ -238,7 +246,7 @@ FORCE_INLINE void autotempShutdown(){
 
 void PID_autotune(float temp, int extruder, int ncycles);
 
-void setExtruderAutoFanState(int pin, bool state);
+void setExtruderAutoFanState(uint8_t state);
 void checkExtruderAutoFans();
 
 
@@ -263,10 +271,14 @@ void check_fans();
 void check_min_temp();
 void check_max_temp();
 
-
-#endif
+#ifdef EXTRUDER_ALTFAN_DETECT
+  extern bool extruder_altfan_detect();
+  extern void altfanOverride_toggle();
+  extern bool altfanOverride_get();
+#endif //EXTRUDER_ALTFAN_DETECT
 
 extern unsigned long extruder_autofan_last_check;
 extern uint8_t fanSpeedBckp;
 extern bool fan_measuring;
 
+#endif

+ 2 - 0
Firmware/thermistortables.h

@@ -1213,6 +1213,8 @@ const short temptable_1047[][2] PROGMEM = {
 #endif
 
 #if (THERMISTORAMBIENT == 2000) //100k thermistor NTCG104LH104JT1
+# define AMBIENT_RAW_HI_TEMP 0
+# define AMBIENT_RAW_LO_TEMP 16383
 const short temptable_2000[][2] PROGMEM = {
 // Source: https://product.tdk.com/info/en/catalog/datasheets/503021/tpd_ntc-thermistor_ntcg_en.pdf
 // Calculated using 4.7kohm pullup, voltage divider math, and manufacturer provided temp/resistance

+ 0 - 10
Firmware/timer02.c

@@ -136,14 +136,4 @@ void delay2(unsigned long ms)
 	}
 }
 
-void tone2(__attribute__((unused)) uint8_t _pin, __attribute__((unused)) unsigned int frequency/*, unsigned long duration*/)
-{
-	PIN_SET(BEEPER);
-}
-
-void noTone2(__attribute__((unused)) uint8_t _pin)
-{
-	PIN_CLR(BEEPER);
-}
-
 #endif //SYSTEM_TIMER_2

+ 0 - 7
Firmware/timer02.h

@@ -23,13 +23,6 @@ extern unsigned long micros2(void);
 ///! Reimplemented original delay() using timer2
 extern void delay2(unsigned long ms);
 
-///! Reimplemented original tone() using timer2
-///! Does not perform any PWM tone generation, it just sets the beeper pin to 1
-extern void tone2(uint8_t _pin, unsigned int frequency/*, unsigned long duration*/);
-
-///! Turn off beeping - set beeper pin to 0
-extern void noTone2(uint8_t _pin);
-
 #if defined(__cplusplus)
 }
 #endif //defined(__cplusplus)

+ 126 - 0
Firmware/tone04.c

@@ -0,0 +1,126 @@
+//tone04.c
+// use atmega timer4 as main tone timer instead of timer2
+// timer2 is used for System timer.
+
+#include "system_timer.h"
+#include "Configuration_prusa.h"
+
+#ifdef SYSTEM_TIMER_2
+
+#include <avr/io.h>
+#include <avr/interrupt.h>
+#include "pins.h"
+
+#ifndef CRITICAL_SECTION_START
+	#define CRITICAL_SECTION_START  unsigned char _sreg = SREG; cli();
+	#define CRITICAL_SECTION_END    SREG = _sreg;
+#endif //CRITICAL_SECTION_START
+
+
+#include "fastio.h"
+
+void timer4_init(void)
+{
+	CRITICAL_SECTION_START;
+	
+	SET_OUTPUT(BEEPER);
+	WRITE(BEEPER, LOW);
+	
+	SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
+	
+	// Set timer mode 9 (PWM,Phase and Frequency Correct)
+	// Prescaler is CLK/1024
+	// Output compare is disabled on all timer pins
+	// Input capture is disabled
+	// All interrupts are disabled
+	TCCR4A = (1 << WGM40);
+	TCCR4B = (1 << WGM43) | (1 << CS42) | (1 << CS40);
+	OCR4A = 255;
+	OCR4B = 255;
+	OCR4C = 255;
+	TIMSK4 = 0;
+	
+	CRITICAL_SECTION_END;
+}
+
+#ifdef EXTRUDER_0_AUTO_FAN_PIN
+void timer4_set_fan0(uint8_t duty)
+{
+	if (duty == 0 || duty == 255)
+	{
+		// We use digital logic if the duty cycle is 0% or 100%
+		TCCR4A &= ~(1 << COM4C1);
+		OCR4C = 0;
+		WRITE(EXTRUDER_0_AUTO_FAN_PIN, duty);
+	}
+	else
+	{
+		// Use the timer for fan speed. Enable the timer compare output and set the duty cycle.
+		// This function also handles the impossible scenario of a fan speed change during a Tone.
+		// Better be safe than sorry.
+		CRITICAL_SECTION_START;
+		// Enable the PWM output on the fan pin.
+		TCCR4A |= (1 << COM4C1);
+		OCR4C = (((uint32_t)duty) * ((uint32_t)((TIMSK4 & (1 << OCIE4A))?OCR4A:255))) / ((uint32_t)255);
+		CRITICAL_SECTION_END;
+	}
+}
+#endif //EXTRUDER_0_AUTO_FAN_PIN
+
+// Because of the timer mode change, we need two interrupts. We could also try to assume that the frequency is x2
+// and use a TOGGLE(), but this seems to work well enough so I left it as it is now.
+ISR(TIMER4_COMPA_vect)
+{
+	WRITE(BEEPER, 1);
+}
+
+ISR(TIMER4_OVF_vect)
+{
+	WRITE(BEEPER, 0);
+}
+
+void tone4(__attribute__((unused)) uint8_t _pin, uint16_t frequency)
+{
+	//this ocr and prescalarbits calculation is taken from the Arduino core and simplified for one type of timer only
+	uint8_t prescalarbits = 0b001;
+	uint32_t ocr = F_CPU / frequency / 2 - 1;
+	
+	if (ocr > 0xffff)
+	{
+		ocr = F_CPU / frequency / 2 / 64 - 1;
+		prescalarbits = 0b011;
+	}
+	
+	CRITICAL_SECTION_START;
+	// Set calcualted prescaler
+	TCCR4B = (TCCR4B & 0b11111000) | prescalarbits;
+#ifdef EXTRUDER_0_AUTO_FAN_PIN
+	// Scale the fan PWM duty cycle so that it remains constant, but at the tone frequency
+	OCR4C = (((uint32_t)OCR4C) * ocr) / (uint32_t)((TIMSK4 & (1 << OCIE4A))?OCR4A:255);
+#endif //EXTRUDER_0_AUTO_FAN_PIN
+	// Set calcualted ocr
+	OCR4A = ocr;
+	// Enable Output compare A interrupt and timer overflow interrupt
+	TIMSK4 |= (1 << OCIE4A) | (1 << TOIE4);
+	CRITICAL_SECTION_END;
+}
+
+void noTone4(__attribute__((unused)) uint8_t _pin)
+{
+	CRITICAL_SECTION_START;
+	// Revert prescaler to CLK/1024
+	TCCR4B = (TCCR4B & 0b11111000) | (1 << CS42) | (1 << CS40);
+#ifdef EXTRUDER_0_AUTO_FAN_PIN
+	// Scale the fan OCR back to the original value.
+	OCR4C = (((uint32_t)OCR4C) * (uint32_t)255) / (uint32_t)((TIMSK4 & (1 << OCIE4A))?OCR4A:255);
+#endif //EXTRUDER_0_AUTO_FAN_PIN
+	OCR4A = 255;
+	// Disable Output compare A interrupt and timer overflow interrupt
+	TIMSK4 &= ~((1 << OCIE4A) | (1 << TOIE4));
+	CRITICAL_SECTION_END;
+	// Turn beeper off if it was on when noTone was called
+	WRITE(BEEPER, 0);
+}
+
+
+#endif //SYSTEM_TIMER_2

+ 25 - 0
Firmware/tone04.h

@@ -0,0 +1,25 @@
+//tone04.h
+// use atmega timer4 as main tone timer instead of timer2
+// timer2 is used for System timer.
+#ifndef TIMER04_H
+#define TIMER04_H
+
+#include <inttypes.h>
+
+#if defined(__cplusplus)
+extern "C" {
+#endif //defined(__cplusplus)
+
+extern void timer4_init(void);
+
+extern void timer4_set_fan0(uint8_t duty);
+
+extern void tone4(uint8_t _pin, uint16_t frequency);
+
+extern void noTone4(uint8_t _pin);
+
+#if defined(__cplusplus)
+}
+#endif //defined(__cplusplus)
+
+#endif //TIMER02_H

+ 521 - 403
Firmware/ultralcd.cpp

@@ -51,6 +51,10 @@
 #include "adc.h"
 #include "config.h"
 
+#ifndef LA_NOCOMPAT
+#include "la10compat.h"
+#endif
+
 
 int scrollstuff = 0;
 char longFilenameOLD[LONG_FILENAME_LENGTH];
@@ -68,6 +72,10 @@ uint8_t SilentModeMenu_MMU = 1; //activate mmu unit stealth mode
 
 int8_t FSensorStateMenu = 1;
 
+#ifdef IR_SENSOR_ANALOG
+bool bMenuFSDetect=false;
+#endif //IR_SENSOR_ANALOG
+
 
 #ifdef SDCARD_SORT_ALPHA
 bool presort_flag = false;
@@ -114,7 +122,7 @@ static const char* lcd_display_message_fullscreen_nonBlocking_P(const char *msg,
 // void copy_and_scalePID_d();
 
 /* Different menus */
-static void lcd_status_screen();
+//static void lcd_status_screen();                // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
 #if (LANG_MODE != 0)
 static void lcd_language_menu();
 #endif
@@ -164,10 +172,10 @@ static void reset_crash_det(unsigned char axis);
 static bool lcd_selfcheck_axis_sg(unsigned char axis);
 static bool lcd_selfcheck_axis(int _axis, int _travel);
 #else
-static bool lcd_selfcheck_endstops();
 static bool lcd_selfcheck_axis(int _axis, int _travel);
 static bool lcd_selfcheck_pulleys(int axis);
 #endif //TMC2130
+static bool lcd_selfcheck_endstops();
 
 static bool lcd_selfcheck_check_heater(bool _isbed);
 enum class TestScreen : uint_least8_t
@@ -235,8 +243,9 @@ static FanCheck lcd_selftest_fan_auto(int _fan);
 static bool lcd_selftest_fsensor();
 #endif //PAT9125
 static bool selftest_irsensor();
-#if IR_SENSOR_ANALOG
-static bool lcd_selftest_IRsensor();
+#ifdef IR_SENSOR_ANALOG
+static bool lcd_selftest_IRsensor(bool bStandalone=false);
+static void lcd_detect_IRsensor();
 #endif //IR_SENSOR_ANALOG
 static void lcd_selftest_error(TestError error, const char *_error_1, const char *_error_2);
 static void lcd_colorprint_change();
@@ -250,7 +259,9 @@ static void fil_unload_menu();
 static void lcd_disable_farm_mode();
 static void lcd_set_fan_check();
 static void lcd_cutter_enabled();
+#ifdef SNMM
 static char snmm_stop_print_menu();
+#endif //SNMM
 #ifdef SDCARD_SORT_ALPHA
  static void lcd_sort_type_set();
 #endif
@@ -973,7 +984,7 @@ void lcdui_print_status_screen(void)
 }
 
 // Main status screen. It's up to the implementation specific part to show what is needed. As this is very display dependent
-static void lcd_status_screen()
+void lcd_status_screen()                          // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
 {
 	if (firstrun == 1) 
 	{
@@ -990,6 +1001,36 @@ static void lcd_status_screen()
 		}
 	}
 
+#ifdef ULTIPANEL_FEEDMULTIPLY
+	// Dead zone at 100% feedrate
+	if ((feedmultiply < 100 && (feedmultiply + int(lcd_encoder)) > 100) ||
+		(feedmultiply > 100 && (feedmultiply + int(lcd_encoder)) < 100))
+	{
+		lcd_encoder = 0;
+		feedmultiply = 100;
+	}
+	if (feedmultiply == 100 && int(lcd_encoder) > ENCODER_FEEDRATE_DEADZONE)
+	{
+		feedmultiply += int(lcd_encoder) - ENCODER_FEEDRATE_DEADZONE;
+		lcd_encoder = 0;
+	}
+	else if (feedmultiply == 100 && int(lcd_encoder) < -ENCODER_FEEDRATE_DEADZONE)
+	{
+		feedmultiply += int(lcd_encoder) + ENCODER_FEEDRATE_DEADZONE;
+		lcd_encoder = 0;
+	}
+	else if (feedmultiply != 100)
+	{
+		feedmultiply += int(lcd_encoder);
+		lcd_encoder = 0;
+	}
+#endif //ULTIPANEL_FEEDMULTIPLY
+
+	if (feedmultiply < 10)
+		feedmultiply = 10;
+	else if (feedmultiply > 999)
+		feedmultiply = 999;
+
 	if (lcd_status_update_delay)
 		lcd_status_update_delay--;
 	else
@@ -1059,7 +1100,6 @@ static void lcd_status_screen()
 	}
 
 	if (current_click
-		&& (lcd_commands_type != LcdCommands::StopPrint) //click is aborted unless stop print finishes
 		&& ( menu_block_entering_on_serious_errors == SERIOUS_ERR_NONE ) // or a serious error blocks entering the menu
 	)
 	{
@@ -1067,36 +1107,6 @@ static void lcd_status_screen()
 		menu_submenu(lcd_main_menu);
 		lcd_refresh(); // to maybe revive the LCD if static electricity killed it.
 	}
-
-#ifdef ULTIPANEL_FEEDMULTIPLY
-	// Dead zone at 100% feedrate
-	if ((feedmultiply < 100 && (feedmultiply + int(lcd_encoder)) > 100) ||
-		(feedmultiply > 100 && (feedmultiply + int(lcd_encoder)) < 100))
-	{
-		lcd_encoder = 0;
-		feedmultiply = 100;
-	}
-	if (feedmultiply == 100 && int(lcd_encoder) > ENCODER_FEEDRATE_DEADZONE)
-	{
-		feedmultiply += int(lcd_encoder) - ENCODER_FEEDRATE_DEADZONE;
-		lcd_encoder = 0;
-	}
-	else if (feedmultiply == 100 && int(lcd_encoder) < -ENCODER_FEEDRATE_DEADZONE)
-	{
-		feedmultiply += int(lcd_encoder) + ENCODER_FEEDRATE_DEADZONE;
-		lcd_encoder = 0;
-	}
-	else if (feedmultiply != 100)
-	{
-		feedmultiply += int(lcd_encoder);
-		lcd_encoder = 0;
-	}
-#endif //ULTIPANEL_FEEDMULTIPLY
-
-	if (feedmultiply < 10)
-		feedmultiply = 10;
-	else if (feedmultiply > 999)
-		feedmultiply = 999;
 }
 
 void lcd_commands()
@@ -1470,98 +1480,6 @@ void lcd_commands()
 
 #endif // not SNMM
 
-	if (lcd_commands_type == LcdCommands::StopPrint)   /// stop print
-	{
-		
-
-		if (lcd_commands_step == 0) 
-		{ 
-			lcd_commands_step = 6; 
-		}
-
-		if (lcd_commands_step == 1 && !blocks_queued())
-		{
-			lcd_commands_step = 0;
-			lcd_commands_type = LcdCommands::Idle;
-			lcd_setstatuspgm(_T(WELCOME_MSG));
-			custom_message_type = CustomMsg::Status;
-			isPrintPaused = false;
-		}
-		if (lcd_commands_step == 2 && !blocks_queued())
-		{
-			setTargetBed(0);
-			enquecommand_P(PSTR("M104 S0")); //set hotend temp to 0
-
-			manage_heater();
-			lcd_setstatuspgm(_T(WELCOME_MSG));
-			cancel_heatup = false;
-			lcd_commands_step = 1;
-		}
-		if (lcd_commands_step == 3 && !blocks_queued())
-		{
-      // M84: Disable steppers.
-			enquecommand_P(PSTR("M84"));
-			autotempShutdown();
-			lcd_commands_step = 2;
-		}
-		if (lcd_commands_step == 4 && !blocks_queued())
-		{
-			lcd_setstatuspgm(_T(MSG_PLEASE_WAIT));
-      // G90: Absolute positioning.
-			enquecommand_P(PSTR("G90"));
-      // M83: Set extruder to relative mode.
-			enquecommand_P(PSTR("M83"));
-			#ifdef X_CANCEL_POS 
-			enquecommand_P(PSTR("G1 X"  STRINGIFY(X_CANCEL_POS) " Y" STRINGIFY(Y_CANCEL_POS) " E0 F7000"));
-			#else
-			enquecommand_P(PSTR("G1 X50 Y" STRINGIFY(Y_MAX_POS) " E0 F7000"));
-			#endif
-			lcd_ignore_click(false);
-			if (mmu_enabled)
-				lcd_commands_step = 8;
-			else
-				lcd_commands_step = 3;
-		}
-		if (lcd_commands_step == 5 && !blocks_queued())
-		{
-			lcd_setstatuspgm(_T(MSG_PRINT_ABORTED));
-      // G91: Set to relative positioning.
-			enquecommand_P(PSTR("G91"));
-      // Lift up.
-			enquecommand_P(PSTR("G1 Z15 F1500"));
-			if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) lcd_commands_step = 4;
-			else lcd_commands_step = 3;
-		}
-		if (lcd_commands_step == 6 && !blocks_queued())
-		{
-			lcd_setstatuspgm(_T(MSG_PRINT_ABORTED));
-			cancel_heatup = true;
-			setTargetBed(0);
-			if (mmu_enabled)
-				setAllTargetHotends(0);
-			manage_heater();
-			custom_message_type = CustomMsg::FilamentLoading;
-			lcd_commands_step = 5;
-		}
-		if (lcd_commands_step == 7 && !blocks_queued())
-		{
-			if (mmu_enabled)
-				enquecommand_P(PSTR("M702 C")); //current
-			else
-				switch(snmm_stop_print_menu())
-				{
-				case 0: enquecommand_P(PSTR("M702")); break;//all 
-				case 1: enquecommand_P(PSTR("M702 U")); break; //used
-				case 2: enquecommand_P(PSTR("M702 C")); break; //current
-				default: enquecommand_P(PSTR("M702")); break;
-				}
-			lcd_commands_step = 3;
-		}
-		if (lcd_commands_step == 8 && !blocks_queued()) { //step 8 is here for delay (going to next step after execution of all gcodes from step 4)
-			lcd_commands_step = 7; 
-		}
-	}
-
 	if (lcd_commands_type == LcdCommands::FarmModeConfirm)   /// farm mode confirm
 	{
 
@@ -1665,7 +1583,7 @@ void lcd_return_to_status()
 //! @brief Pause print, disable nozzle heater, move to park position
 void lcd_pause_print()
 {
-    stop_and_save_print_to_ram(0.0,0.0);
+    stop_and_save_print_to_ram(0.0, -default_retraction);
     lcd_return_to_status();
     isPrintPaused = true;
     if (LcdCommands::Idle == lcd_commands_type)
@@ -1887,11 +1805,23 @@ static void lcd_menu_fails_stats_print()
     uint8_t crashX = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_X);
     uint8_t crashY = eeprom_read_byte((uint8_t*)EEPROM_CRASH_COUNT_Y);
     lcd_home();
+#ifndef PAT9125
     lcd_printf_P(failStatsFmt,
         _i("Last print failures"),  ////c=20 r=1
         _i("Power failures"), power,  ////c=14 r=1
         _i("Filam. runouts"), filam,  ////c=14 r=1
         _i("Crash"), crashX, crashY);  ////c=7 r=1
+#else
+    // On the MK3 include detailed PAT9125 statistics about soft failures
+    lcd_printf_P(PSTR("%S\n"
+                      " %-16.16S%-3d\n"
+                      " %-7.7S H %-3d S %-3d\n"
+                      " %-7.7S X %-3d Y %-3d"),
+                 _i("Last print failures"), ////c=20 r=1
+                 _i("Power failures"), power, ////c=14 r=1
+                 _i("Runouts"), filam, fsensor_softfail, //c=7
+                 _i("Crash"), crashX, crashY);  ////c=7 r=1
+#endif
     menu_back_if_clicked_fb();
 }
 
@@ -2026,12 +1956,12 @@ static void lcd_menu_temperatures()
     lcd_menu_temperatures_line( _i("Ambient"), (int)current_temperature_ambient );  ////c=14 r=1
 #endif //AMBIENT_THERMISTOR
 #ifdef PINDA_THERMISTOR
-    lcd_menu_temperatures_line( _i("PINDA"), (int)current_temperature_pinda );  ////c=14 r=1
+    lcd_menu_temperatures_line( _i("PINDA"), (int)current_temperature_pinda );  ////c=14
 #endif //PINDA_THERMISTOR
     menu_back_if_clicked();
 }
 
-#if defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN) || IR_SENSOR_ANALOG
+#if defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN) || defined(IR_SENSOR_ANALOG)
 #define VOLT_DIV_R1 10000
 #define VOLT_DIV_R2 2370
 #define VOLT_DIV_FAC ((float)VOLT_DIV_R2 / (VOLT_DIV_R2 + VOLT_DIV_R1))
@@ -2043,34 +1973,30 @@ static void lcd_menu_temperatures()
 //! |                    |
 //! | PWR:         00.0V |	c=12 r=1
 //! | Bed:         00.0V |	c=12 r=1
-//! |                    |
+//! | IR :         00.0V |  c=12 r=1 optional
 //! ----------------------
 //! @endcode
 //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations.
 static void lcd_menu_voltages()
 {
-	lcd_timeoutToStatus.stop(); //infinite timeout
-	float volt_pwr = VOLT_DIV_REF * ((float)current_voltage_raw_pwr / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC;
-	float volt_bed = VOLT_DIV_REF * ((float)current_voltage_raw_bed / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC;
-	lcd_home();
-#if !IR_SENSOR_ANALOG
-	lcd_printf_P(PSTR("\n"));
-#endif //!IR_SENSOR_ANALOG
-     lcd_printf_P(PSTR(" PWR:      %4.1fV\n" " BED:      %4.1fV"), volt_pwr, volt_bed);
-#if IR_SENSOR_ANALOG
-     float volt_IR = VOLT_DIV_REF * ((float)current_voltage_raw_IR / (1023 * OVERSAMPLENR));
-     lcd_printf_P(PSTR("\n IR :       %3.1fV"),volt_IR);
+    lcd_timeoutToStatus.stop(); //infinite timeout
+    float volt_pwr = VOLT_DIV_REF * ((float)current_voltage_raw_pwr / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC;
+    float volt_bed = VOLT_DIV_REF * ((float)current_voltage_raw_bed / (1023 * OVERSAMPLENR)) / VOLT_DIV_FAC;
+    lcd_home();
+    lcd_printf_P(PSTR(" PWR:      %4.1fV\n" " BED:      %4.1fV"), volt_pwr, volt_bed);
+#ifdef IR_SENSOR_ANALOG
+    lcd_printf_P(PSTR("\n IR :       %3.1fV"), Raw2Voltage(current_voltage_raw_IR));
 #endif //IR_SENSOR_ANALOG
-     menu_back_if_clicked();
+    menu_back_if_clicked();
 }
-#endif //defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN) || IR_SENSOR_ANALOG
+#endif //defined (VOLT_BED_PIN) || defined (VOLT_PWR_PIN) || defined(IR_SENSOR_ANALOG)
 
 #ifdef TMC2130
 //! @brief Show Belt Status
 //!
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! | Belt status        |	c=18 r=1
+//! | Belt status        |	c=18
 //! |  X:            000 |
 //! |  Y:            000 |
 //! |                    |
@@ -2150,7 +2076,7 @@ static void lcd_preheat_menu()
 //! 
 //! @code{.unparsed}
 //! | --------------     |	STR_SEPARATOR
-//! | XYZ cal. details   |	MSG_XYZ_DETAILS
+//! | XYZ cal. details   |	MSG_XYZ_DETAILS c=18
 //! | Extruder info      |	MSG_INFO_EXTRUDER
 //! | XYZ cal. details   |	MSG_INFO_SENSORS
 //! @endcode
@@ -2200,6 +2126,7 @@ static void lcd_support_menu()
             sprintf_P(_md->ip_str, PSTR("%d.%d.%d.%d"), 
                 _md->ip[0], _md->ip[1], 
                 _md->ip[2], _md->ip[3]);
+        
     } else if (_md->is_flash_air && 
         _md->ip[0] == 0 && _md->ip[1] == 0 && 
         _md->ip[2] == 0 && _md->ip[3] == 0 &&
@@ -2237,6 +2164,12 @@ static void lcd_support_menu()
   MENU_ITEM_BACK_P(_i("Date:"));////MSG_DATE c=17 r=1
   MENU_ITEM_BACK_P(PSTR(__DATE__));
 
+#ifdef IR_SENSOR_ANALOG
+  MENU_ITEM_BACK_P(STR_SEPARATOR);
+  MENU_ITEM_BACK_P(PSTR("Fil. sensor v.:"));
+  MENU_ITEM_BACK_P(FsensorIRVersionText());
+#endif // IR_SENSOR_ANALOG
+
 	MENU_ITEM_BACK_P(STR_SEPARATOR);
 	if (mmu_enabled)
 	{
@@ -2264,12 +2197,12 @@ static void lcd_support_menu()
 
   #ifndef MK1BP
   MENU_ITEM_BACK_P(STR_SEPARATOR);
-  MENU_ITEM_SUBMENU_P(_i("XYZ cal. details"), lcd_menu_xyz_y_min);////MSG_XYZ_DETAILS c=19 r=1
-  MENU_ITEM_SUBMENU_P(_i("Extruder info"), lcd_menu_extruder_info);////MSG_INFO_EXTRUDER c=18 r=1
+  MENU_ITEM_SUBMENU_P(_i("XYZ cal. details"), lcd_menu_xyz_y_min);////MSG_XYZ_DETAILS c=18
+  MENU_ITEM_SUBMENU_P(_i("Extruder info"), lcd_menu_extruder_info);////MSG_INFO_EXTRUDER c=18
   MENU_ITEM_SUBMENU_P(_i("Sensor info"), lcd_menu_show_sensors_state);////MSG_INFO_SENSORS c=18 r=1
 
 #ifdef TMC2130
-  MENU_ITEM_SUBMENU_P(_i("Belt status"), lcd_menu_belt_status);////MSG_MENU_BELT_STATUS c=18 r=1
+  MENU_ITEM_SUBMENU_P(_i("Belt status"), lcd_menu_belt_status);////MSG_MENU_BELT_STATUS c=18
 #endif //TMC2130
     
   MENU_ITEM_SUBMENU_P(_i("Temperatures"), lcd_menu_temperatures);////MSG_MENU_TEMPERATURES c=18 r=1
@@ -2278,6 +2211,7 @@ static void lcd_support_menu()
   MENU_ITEM_SUBMENU_P(_i("Voltages"), lcd_menu_voltages);////MSG_MENU_VOLTAGES c=18 r=1
 #endif //defined VOLT_BED_PIN || defined VOLT_PWR_PIN
 
+
 #ifdef DEBUG_BUILD
   MENU_ITEM_SUBMENU_P(PSTR("Debug"), lcd_menu_debug);////c=18 r=1
 #endif /* DEBUG_BUILD */
@@ -2322,10 +2256,12 @@ void lcd_set_filament_autoload() {
      fsensor_autoload_set(!fsensor_autoload_enabled);
 }
 
+#if defined(FILAMENT_SENSOR) && defined(PAT9125)
 void lcd_set_filament_oq_meass()
 {
      fsensor_oq_meassure_set(!fsensor_oq_meassure_enabled);
 }
+#endif
 
 
 FilamentAction eFilamentAction=FilamentAction::None; // must be initialized as 'non-autoLoad'
@@ -2494,17 +2430,17 @@ void mFilamentItem(uint16_t nTemp, uint16_t nTempBed)
         case FilamentAction::Load:
         case FilamentAction::AutoLoad:
         case FilamentAction::MmuLoad:
-            lcd_puts_P(_i("Preheating to load")); ////MSG_ c=20 r=1
+            lcd_puts_P(_i("Preheating to load")); ////MSG_ c=20
             break;
         case FilamentAction::UnLoad:
         case FilamentAction::MmuUnLoad:
-            lcd_puts_P(_i("Preheating to unload")); ////MSG_ c=20 r=1
+            lcd_puts_P(_i("Preheating to unload")); ////MSG_ c=20
             break;
         case FilamentAction::MmuEject:
-            lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20 r=1
+            lcd_puts_P(_i("Preheating to eject")); ////MSG_ c=20
             break;
         case FilamentAction::MmuCut:
-            lcd_puts_P(_i("Preheating to cut")); ////MSG_ c=20 r=1
+            lcd_puts_P(_i("Preheating to cut")); ////MSG_ c=20
             break;
         case FilamentAction::None:
         case FilamentAction::Preheat:
@@ -2562,6 +2498,12 @@ static void mFilamentItem_ASA()
     mFilamentItem(ASA_PREHEAT_HOTEND_TEMP, ASA_PREHEAT_HPB_TEMP);
 }
 
+static void mFilamentItem_PC()
+{
+    bFilamentPreheatState = false;
+    mFilamentItem(PC_PREHEAT_HOTEND_TEMP, PC_PREHEAT_HPB_TEMP);
+}
+
 static void mFilamentItem_ABS()
 {
     bFilamentPreheatState = false;
@@ -2621,6 +2563,7 @@ void lcd_generic_preheat_menu()
         MENU_ITEM_SUBMENU_P(PSTR("PLA  -  " STRINGIFY(PLA_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PLA_PREHEAT_HPB_TEMP)),mFilamentItem_PLA);
         MENU_ITEM_SUBMENU_P(PSTR("PET  -  " STRINGIFY(PET_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PET_PREHEAT_HPB_TEMP)),mFilamentItem_PET);
         MENU_ITEM_SUBMENU_P(PSTR("ASA  -  " STRINGIFY(ASA_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(ASA_PREHEAT_HPB_TEMP)),mFilamentItem_ASA);
+        MENU_ITEM_SUBMENU_P(PSTR("PC   -  " STRINGIFY(PC_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PC_PREHEAT_HPB_TEMP)),mFilamentItem_PC);
         MENU_ITEM_SUBMENU_P(PSTR("ABS  -  " STRINGIFY(ABS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(ABS_PREHEAT_HPB_TEMP)),mFilamentItem_ABS);
         MENU_ITEM_SUBMENU_P(PSTR("HIPS -  " STRINGIFY(HIPS_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(HIPS_PREHEAT_HPB_TEMP)),mFilamentItem_HIPS);
         MENU_ITEM_SUBMENU_P(PSTR("PP   -  " STRINGIFY(PP_PREHEAT_HOTEND_TEMP) "/" STRINGIFY(PP_PREHEAT_HPB_TEMP)),mFilamentItem_PP);
@@ -2661,7 +2604,7 @@ void lcd_wait_interact() {
 #endif
   if (!fsensor_autoload_enabled) {
 	  lcd_set_cursor(0, 2);
-	  lcd_puts_P(_i("and press the knob"));////MSG_PRESS c=20
+	  lcd_puts_P(_i("and press the knob"));////MSG_PRESS c=20 r=2
   }
 }
 
@@ -2885,9 +2828,9 @@ static void lcd_LoadFilament()
 //!
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! |Filament used:      | c=18 r=1
-//! |         00.00m     |
-//! |Print time:         | c=18 r=1
+//! |Filament used:      | c=19
+//! |           0000.00m |
+//! |Print time:         | c=19 r=1
 //! |        00h 00m 00s |
 //! ----------------------
 //! @endcode
@@ -2896,32 +2839,33 @@ static void lcd_LoadFilament()
 //!
 //! @code{.unparsed}
 //! |01234567890123456789|
-//! |Total filament :    | c=18 r=1
-//! |           000.00 m |
-//! |Total print time :  | c=18 r=1
-//! |     00d :00h :00 m |
+//! |Total filament:     | c=19 r=1
+//! |           0000.00m |
+//! |Total print time:   | c=19 r=1
+//! |        00d 00h 00m |
 //! ----------------------
 //! @endcode
 //! @todo Positioning of the messages and values on LCD aren't fixed to their exact place. This causes issues with translations. Translations missing for "d"days, "h"ours, "m"inutes", "s"seconds".
 void lcd_menu_statistics()
 {
+    lcd_timeoutToStatus.stop(); //infinite timeout
 	if (IS_SD_PRINTING)
 	{
 		const float _met = ((float)total_filament_used) / (100000.f);
 		const uint32_t _t = (_millis() - starttime) / 1000ul;
-		const int _h = _t / 3600;
-		const int _m = (_t - (_h * 3600ul)) / 60ul;
-		const int _s = _t - ((_h * 3600ul) + (_m * 60ul));
+		const uint32_t _h = _t / 3600;
+		const uint8_t _m = (_t - (_h * 3600ul)) / 60ul;
+		const uint8_t _s = _t - ((_h * 3600ul) + (_m * 60ul));
 
-		lcd_clear();
+        lcd_home();
 		lcd_printf_P(_N(
 			"%S:\n"
-			"%17.2fm  \n"
+			"%18.2fm \n"
 			"%S:\n"
-			"%2dh %02dm %02ds"
+			"%10ldh %02hhdm %02hhds"
 		    ),
-            _i("Filament used"), _met,  ////c=18 r=1
-            _i("Print time"), _h, _m, _s);  ////c=18 r=1
+            _i("Filament used"), _met,  ////c=19
+            _i("Print time"), _h, _m, _s);  ////c=19 r=1
 		menu_back_if_clicked_fb();
 	}
 	else
@@ -2931,29 +2875,20 @@ void lcd_menu_statistics()
 		uint8_t _hours, _minutes;
 		uint32_t _days;
 		float _filament_m = (float)_filament/100;
-//		int _filament_km = (_filament >= 100000) ? _filament / 100000 : 0;
-//		if (_filament_km > 0)  _filament_m = _filament - (_filament_km * 100000);
 		_days = _time / 1440;
 		_hours = (_time - (_days * 1440)) / 60;
 		_minutes = _time - ((_days * 1440) + (_hours * 60));
 
-		lcd_clear();
+		lcd_home();
 		lcd_printf_P(_N(
 			"%S:\n"
-			"%17.2fm  \n"
+			"%18.2fm \n"
 			"%S:\n"
-			"%7ldd :%2hhdh :%02hhdm"
-		), _i("Total filament"), _filament_m, _i("Total print time"), _days, _hours, _minutes);
-		KEEPALIVE_STATE(PAUSED_FOR_USER);
-		while (!lcd_clicked())
-		{
-			manage_heater();
-			manage_inactivity(true);
-			_delay(100);
-		}
-		KEEPALIVE_STATE(NOT_BUSY);
-		lcd_quick_feedback();
-		menu_back();
+			"%10ldd %02hhdh %02hhdm"
+            ),
+            _i("Total filament"), _filament_m,  ////c=19 r=1
+            _i("Total print time"), _days, _hours, _minutes);  ////c=19 r=1
+        menu_back_if_clicked_fb();
 	}
 }
 
@@ -2982,7 +2917,7 @@ static void _lcd_move(const char *name, int axis, int min, int max)
 			if (max_software_endstops && current_position[axis] > max) current_position[axis] = max;
 			lcd_encoder = 0;
 			world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
-			plan_buffer_line_curposXYZE(manual_feedrate[axis] / 60, active_extruder);
+			plan_buffer_line_curposXYZE(manual_feedrate[axis] / 60);
 			lcd_draw_update = 1;
 		}
 	}
@@ -3007,7 +2942,7 @@ static void lcd_move_e()
 			{
 				current_position[E_AXIS] += float((int)lcd_encoder) * move_menu_scale;
 				lcd_encoder = 0;
-				plan_buffer_line_curposXYZE(manual_feedrate[E_AXIS] / 60, active_extruder);
+				plan_buffer_line_curposXYZE(manual_feedrate[E_AXIS] / 60);
 				lcd_draw_update = 1;
 			}
 		}
@@ -3525,7 +3460,7 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z)
 {
     // Don't know where we are. Let's claim we are Z=0, so the soft end stops will not be triggered when moving up.
     current_position[Z_AXIS] = 0;
-    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+    plan_set_position_curposXYZE();
 
     // Until confirmed by the confirmation dialog.
     for (;;) {
@@ -3547,7 +3482,7 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z)
                     // Only move up, whatever direction the user rotates the encoder.
                     current_position[Z_AXIS] += fabs(lcd_encoder);
                     lcd_encoder = 0;
-                    plan_buffer_line_curposXYZE(manual_feedrate[Z_AXIS] / 60, active_extruder);
+                    plan_buffer_line_curposXYZE(manual_feedrate[Z_AXIS] / 60);
                 }
             }
             if (lcd_clicked()) {
@@ -3583,7 +3518,7 @@ calibrated:
 	else {
 		current_position[Z_AXIS] = Z_MAX_POS+4.f;
 	}
-    plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+    plan_set_position_curposXYZE();
     return true;
 
 canceled:
@@ -3987,14 +3922,12 @@ void lcd_temp_cal_show_result(bool result) {
 		eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 1);
 		SERIAL_ECHOLNPGM("Temperature calibration done. Continue with pressing the knob.");
 		lcd_show_fullscreen_message_and_wait_P(_T(MSG_TEMP_CALIBRATION_DONE));
-		temp_cal_active = true;
 		eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, 1);
 	}
 	else {
 		eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0);
 		SERIAL_ECHOLNPGM("Temperature calibration failed. Continue with pressing the knob.");
 		lcd_show_fullscreen_message_and_wait_P(_i("Temperature calibration failed"));////MSG_TEMP_CAL_FAILED c=20 r=8
-		temp_cal_active = false;
 		eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, 0);
 	}
 	lcd_update_enable(true);
@@ -4101,7 +4034,7 @@ void prusa_statistics_err(char c){
 }
 
 static void prusa_statistics_case0(uint8_t statnr){
-	SERIAL_ECHO("{");
+	SERIAL_ECHO('{');
 	prusa_stat_printerstatus(statnr);
 	prusa_stat_farm_number();
 	prusa_stat_printinfo();
@@ -4129,7 +4062,7 @@ void prusa_statistics(int _message, uint8_t _fil_nr) {
 		}
 		else
 		{
-			SERIAL_ECHO("{");
+			SERIAL_ECHO('{');
 			prusa_stat_printerstatus(1);
 			prusa_stat_farm_number();
 			prusa_stat_diameter();
@@ -4702,9 +4635,9 @@ void lcd_pinda_calibration_menu()
 }
 
 void lcd_temp_calibration_set() {
+	bool temp_cal_active = eeprom_read_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE);
 	temp_cal_active = !temp_cal_active;
 	eeprom_update_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE, temp_cal_active);
-	st_current_init();
 }
 
 #ifdef HAS_SECOND_SERIAL_PORT
@@ -4962,7 +4895,7 @@ void lcd_language()
 static void wait_preheat()
 {
     current_position[Z_AXIS] = 100; //move in z axis to make space for loading filament
-    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
+    plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60);
     delay_keep_alive(2000);
     lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
 	lcd_set_custom_characters();
@@ -5250,11 +5183,11 @@ void lcd_settings_linearity_correction_menu(void)
 #ifdef TMC2130_LINEARITY_CORRECTION_XYZ
 	//tmc2130_wave_fac[X_AXIS]
 
-	MENU_ITEM_EDIT_int3_P(_i("X-correct:"),  &tmc2130_wave_fac[X_AXIS],  TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=10
-	MENU_ITEM_EDIT_int3_P(_i("Y-correct:"),  &tmc2130_wave_fac[Y_AXIS],  TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=10
-	MENU_ITEM_EDIT_int3_P(_i("Z-correct:"),  &tmc2130_wave_fac[Z_AXIS],  TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=10
+	MENU_ITEM_EDIT_int3_P(_i("X-correct:"),  &tmc2130_wave_fac[X_AXIS],  TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_X_CORRECTION c=13
+	MENU_ITEM_EDIT_int3_P(_i("Y-correct:"),  &tmc2130_wave_fac[Y_AXIS],  TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_Y_CORRECTION c=13
+	MENU_ITEM_EDIT_int3_P(_i("Z-correct:"),  &tmc2130_wave_fac[Z_AXIS],  TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_Z_CORRECTION c=13
 #endif //TMC2130_LINEARITY_CORRECTION_XYZ
-	MENU_ITEM_EDIT_int3_P(_i("E-correct:"),  &tmc2130_wave_fac[E_AXIS],  TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=10
+	MENU_ITEM_EDIT_int3_P(_i("E-correct:"),  &tmc2130_wave_fac[E_AXIS],  TMC2130_WAVE_FAC1000_MIN-TMC2130_WAVE_FAC1000_STP, TMC2130_WAVE_FAC1000_MAX);////MSG_EXTRUDER_CORRECTION c=13
 	MENU_END();
 }
 #endif // TMC2130
@@ -5669,6 +5602,7 @@ do\
 }\
 while (0)
 
+#if 0 // temporarily unused
 static void lcd_check_gcode_set(void)
 {
 switch(oCheckGcode)
@@ -5687,6 +5621,7 @@ switch(oCheckGcode)
      }
 eeprom_update_byte((uint8_t*)EEPROM_CHECK_GCODE,(uint8_t)oCheckGcode);
 }
+#endif
 
 #define SETTINGS_GCODE \
 do\
@@ -5720,7 +5655,7 @@ SETTINGS_VERSION;
 MENU_END();
 }
 
-#if IR_SENSOR_ANALOG
+#ifdef IR_SENSOR_ANALOG
 static void lcd_fsensor_actionNA_set(void)
 {
 switch(oFsensorActionNA)
@@ -5779,16 +5714,44 @@ static void sheets_menu()
 
 void lcd_hw_setup_menu(void)                      // can not be "static"
 {
+    typedef struct
+    {// 2bytes total
+        int8_t status;
+        uint8_t experimental_menu_visibility;
+    } _menu_data_t;
+    static_assert(sizeof(menu_data)>= sizeof(_menu_data_t),"_menu_data_t doesn't fit into menu_data");
+    _menu_data_t* _md = (_menu_data_t*)&(menu_data[0]);
+
+    if (_md->status == 0 || lcd_draw_update)
+    {
+        _md->experimental_menu_visibility = eeprom_read_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY);
+        if (_md->experimental_menu_visibility == EEPROM_EMPTY_VALUE)
+        {
+            _md->experimental_menu_visibility = 0;
+            eeprom_update_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY, _md->experimental_menu_visibility);
+        }
+    }
+
+
     MENU_BEGIN();
     MENU_ITEM_BACK_P(_T(bSettings?MSG_SETTINGS:MSG_BACK)); // i.e. default menu-item / menu-item after checking mismatch
 
-    MENU_ITEM_SUBMENU_P(_i("Steel sheets"), sheets_menu);
+    MENU_ITEM_SUBMENU_P(_i("Steel sheets"), sheets_menu); ////MSG_STEEL_SHEETS c=18
     SETTINGS_NOZZLE;
     MENU_ITEM_SUBMENU_P(_i("Checks"), lcd_checking_menu);
 
-#if IR_SENSOR_ANALOG
+#ifdef IR_SENSOR_ANALOG
     FSENSOR_ACTION_NA;
+    //! Fsensor Detection isn't ready for mmu yet it is temporarily disabled.
+    //! @todo Don't forget to remove this as soon Fsensor Detection works with mmu
+    if(!mmu_enabled) MENU_ITEM_FUNCTION_P(PSTR("Fsensor Detection"), lcd_detect_IRsensor);
 #endif //IR_SENSOR_ANALOG
+
+    if (_md->experimental_menu_visibility)
+    {
+        MENU_ITEM_SUBMENU_P(PSTR("Experimental"), lcd_experimental_menu);////MSG_MENU_EXPERIMENTAL c=18
+    }
+
     MENU_END();
 }
 
@@ -5827,8 +5790,10 @@ static void lcd_settings_menu()
 #if defined (TMC2130) && defined (LINEARITY_CORRECTION)
     MENU_ITEM_SUBMENU_P(_i("Lin. correction"), lcd_settings_linearity_correction_menu);
 #endif //LINEARITY_CORRECTION && TMC2130
-
-	MENU_ITEM_TOGGLE_P(_T(MSG_TEMP_CALIBRATION), temp_cal_active ? _T(MSG_ON) : _T(MSG_OFF), lcd_temp_calibration_set);
+    if(has_temperature_compensation())
+    {
+	    MENU_ITEM_TOGGLE_P(_T(MSG_TEMP_CALIBRATION), eeprom_read_byte((unsigned char *)EEPROM_TEMP_CAL_ACTIVE) ? _T(MSG_ON) : _T(MSG_OFF), lcd_temp_calibration_set);
+    }
 
 #ifdef HAS_SECOND_SERIAL_PORT
     MENU_ITEM_TOGGLE_P(_T(MSG_RPI_PORT), (selectedSerialPort == 0) ? _T(MSG_OFF) : _T(MSG_ON), lcd_second_serial_set);
@@ -5896,13 +5861,13 @@ static void lcd_calibration_menu()
 	MENU_ITEM_FUNCTION_P(_i("Wizard"), lcd_wizard);////MSG_WIZARD c=17 r=1
     if (lcd_commands_type == LcdCommands::Idle)
     {
-         MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), lcd_first_layer_calibration_reset);
+         MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), lcd_first_layer_calibration_reset);////MSG_V2_CALIBRATION c=18
     }
 	MENU_ITEM_GCODE_P(_T(MSG_AUTO_HOME), PSTR("G28 W"));
 #ifdef TMC2130
-	MENU_ITEM_FUNCTION_P(_i("Belt test        "), lcd_belttest_v);////MSG_BELTTEST
+	MENU_ITEM_FUNCTION_P(_i("Belt test        "), lcd_belttest_v);////MSG_BELTTEST c=17
 #endif //TMC2130
-	MENU_ITEM_FUNCTION_P(_i("Selftest         "), lcd_selftest_v);////MSG_SELFTEST
+	MENU_ITEM_FUNCTION_P(_i("Selftest         "), lcd_selftest_v);////MSG_SELFTEST c=17
 #ifdef MK1BP
     // MK1
     // "Calibrate Z"
@@ -5923,7 +5888,7 @@ static void lcd_calibration_menu()
     MENU_ITEM_SUBMENU_P(_i("Bed level correct"), lcd_adjust_bed);////MSG_BED_CORRECTION_MENU
 	MENU_ITEM_SUBMENU_P(_i("PID calibration"), pid_extruder);////MSG_PID_EXTRUDER c=17 r=1
 #ifndef TMC2130
-    MENU_ITEM_SUBMENU_P(_i("Show end stops"), menu_show_end_stops);////MSG_SHOW_END_STOPS c=17 r=1
+    MENU_ITEM_SUBMENU_P(_i("Show end stops"), menu_show_end_stops);////MSG_SHOW_END_STOPS c=18
 #endif
 #ifndef MK1BP
     MENU_ITEM_GCODE_P(_i("Reset XYZ calibr."), PSTR("M44"));////MSG_CALIBRATE_BED_RESET
@@ -5932,7 +5897,10 @@ static void lcd_calibration_menu()
 	//MENU_ITEM_FUNCTION_P(MSG_RESET_CALIBRATE_E, lcd_extr_cal_reset);
 #endif
 #ifndef MK1BP
-	MENU_ITEM_SUBMENU_P(_i("Temp. calibration"), lcd_pinda_calibration_menu);////MSG_CALIBRATION_PINDA_MENU c=17 r=1
+    if(has_temperature_compensation())
+    {
+	    MENU_ITEM_SUBMENU_P(_i("Temp. calibration"), lcd_pinda_calibration_menu);////MSG_CALIBRATION_PINDA_MENU c=17 r=1
+    }
 #endif //MK1BP
   }
   
@@ -6054,7 +6022,7 @@ void bowden_menu() {
 	}
 }
 
-//#ifdef SNMM
+#ifdef SNMM
 
 static char snmm_stop_print_menu() { //menu for choosing which filaments will be unloaded in stop print
 	lcd_clear();
@@ -6105,6 +6073,8 @@ static char snmm_stop_print_menu() { //menu for choosing which filaments will be
 	
 }
 
+#endif //SNMM
+
 //! @brief Select one of numbered items
 //!
 //! Create list of items with header. Header can not be selected.
@@ -6447,13 +6417,13 @@ void unload_filament()
 	//		extr_unload2();
 
 	current_position[E_AXIS] -= 45;
-	plan_buffer_line_curposXYZE(5200 / 60, active_extruder);
+	plan_buffer_line_curposXYZE(5200 / 60);
 	st_synchronize();
 	current_position[E_AXIS] -= 15;
-	plan_buffer_line_curposXYZE(1000 / 60, active_extruder);
+	plan_buffer_line_curposXYZE(1000 / 60);
 	st_synchronize();
 	current_position[E_AXIS] -= 20;
-	plan_buffer_line_curposXYZE(1000 / 60, active_extruder);
+	plan_buffer_line_curposXYZE(1000 / 60);
 	st_synchronize();
 
 	lcd_display_message_fullscreen_P(_T(MSG_PULL_OUT_FILAMENT));
@@ -6733,7 +6703,7 @@ static bool fan_error_selftest()
 	fanSpeedSoftPwm = 255;
 #endif //FAN_SOFT_PWM
     manage_heater(); //enables print fan
-    setExtruderAutoFanState(EXTRUDER_0_AUTO_FAN_PIN, 1); //force enables the extruder fan untill the first manage_heater() call.
+    setExtruderAutoFanState(3); //force enables the extruder fan
 #ifdef FAN_SOFT_PWM
     extruder_autofan_last_check = _millis();
     fan_measuring = true;
@@ -6741,6 +6711,7 @@ static bool fan_error_selftest()
     _delay(1000); //delay_keep_alive would turn off extruder fan, because temerature is too low (maybe)
     manage_heater();
     fanSpeed = 0;
+	setExtruderAutoFanState(1); //releases lock on the extruder fan
 #ifdef FAN_SOFT_PWM
     fanSpeedSoftPwm = 0;
 #endif //FAN_SOFT_PWM
@@ -6767,14 +6738,15 @@ static bool fan_error_selftest()
 void lcd_resume_print()
 {
     lcd_return_to_status();
-    lcd_reset_alert_level();
-    lcd_setstatuspgm(_T(MSG_RESUMING_PRINT));
     lcd_reset_alert_level(); //for fan speed error
-
     if (fan_error_selftest()) return; //abort if error persists
 
+    lcd_setstatuspgm(_T(MSG_FINISHING_MOVEMENTS));
+    st_synchronize();
+
+    lcd_setstatuspgm(_T(MSG_RESUMING_PRINT)); ////MSG_RESUMING_PRINT c=20
     isPrintPaused = false;
-    restore_print_from_ram_and_continue(0.0);
+    restore_print_from_ram_and_continue(default_retraction);
     pause_time += (_millis() - start_pause_print); //accumulate time when print is paused for correct statistics calculation
     refresh_cmd_timeout();
     SERIAL_PROTOCOLLNRPGM(MSG_OCTOPRINT_RESUMED); //resume octoprint
@@ -6860,7 +6832,7 @@ static void activate_calibrate_sheet()
 static void lcd_sheet_menu()
 {
     MENU_BEGIN();
-    MENU_ITEM_BACK_P(_i("Steel sheets"));
+    MENU_ITEM_BACK_P(_i("Steel sheets")); ////MSG_STEEL_SHEETS c=18
 
 	if(eeprom_is_sheet_initialized(selected_sheet)){
 	    MENU_ITEM_SUBMENU_P(_i("Select"), change_sheet); //// c=18
@@ -6868,7 +6840,7 @@ static void lcd_sheet_menu()
 
     if (lcd_commands_type == LcdCommands::Idle)
     {
-        MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), activate_calibrate_sheet);
+        MENU_ITEM_SUBMENU_P(_T(MSG_V2_CALIBRATION), activate_calibrate_sheet);////MSG_V2_CALIBRATION c=18
     }
     MENU_ITEM_SUBMENU_P(_i("Rename"), lcd_rename_sheet_menu); //// c=18
 	MENU_ITEM_FUNCTION_P(_i("Reset"), lcd_reset_sheet); //// c=18
@@ -6913,10 +6885,15 @@ static void lcd_main_menu()
   }
 
 
+  if(isPrintPaused && saved_printing_type == PRINTING_TYPE_USB)
+  {
 #ifdef FANCHECK
-  if((fan_check_error == EFCE_FIXED) && (saved_printing_type == PRINTING_TYPE_USB))
-    MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
+      if((fan_check_error == EFCE_FIXED) || (fan_check_error == EFCE_OK))
+          MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
+#else
+      MENU_ITEM_SUBMENU_P(_i("Resume print"), lcd_resume_print);////MSG_RESUME_PRINT
 #endif
+  }
 
 #ifdef SDSUPPORT
   if (card.cardOK || lcd_commands_type == LcdCommands::Layer1Cal)
@@ -7012,7 +6989,7 @@ static void lcd_main_menu()
 #endif
 #ifdef FILAMENT_SENSOR
 		if ((fsensor_autoload_enabled == true) && (fsensor_enabled == true) && (mmu_enabled == false))
-			MENU_ITEM_SUBMENU_P(_i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=17
+			MENU_ITEM_SUBMENU_P(_i("AutoLoad filament"), lcd_menu_AutoLoadFilament);////MSG_AUTOLOAD_FILAMENT c=18
 		else
 #endif //FILAMENT_SENSOR
           {
@@ -7085,6 +7062,60 @@ static void lcd_colorprint_change() {
 	lcd_draw_update = 3;
 }
 
+
+#ifdef LA_LIVE_K
+// @wavexx: looks like there's no generic float editing function in menu.cpp so we
+//          redefine our custom handling functions to mimick other tunables
+const char menu_fmt_float13off[] PROGMEM = "%c%-13.13S%6.6S";
+
+static void lcd_advance_draw_K(char chr, float val)
+{
+    if (val <= 0)
+        lcd_printf_P(menu_fmt_float13off, chr, MSG_ADVANCE_K, _T(MSG_OFF));
+    else
+        lcd_printf_P(menu_fmt_float13, chr, MSG_ADVANCE_K, val);
+}
+
+static void lcd_advance_edit_K(void)
+{
+    if (lcd_draw_update)
+    {
+        if (lcd_encoder < 0) lcd_encoder = 0;
+        if (lcd_encoder > 999) lcd_encoder = 999;
+        lcd_set_cursor(0, 1);
+        lcd_advance_draw_K(' ', 0.01 * lcd_encoder);
+    }
+    if (LCD_CLICKED)
+    {
+        extruder_advance_K = 0.01 * lcd_encoder;
+        menu_back_no_reset();
+    }
+}
+
+static uint8_t lcd_advance_K()
+{
+    if (menu_item == menu_line)
+    {
+        if (lcd_draw_update)
+        {
+            lcd_set_cursor(0, menu_row);
+            lcd_advance_draw_K((lcd_encoder == menu_item)?'>':' ', extruder_advance_K);
+        }
+        if (menu_clicked && (lcd_encoder == menu_item))
+        {
+            menu_submenu_no_reset(lcd_advance_edit_K);
+            lcd_encoder = 100. * extruder_advance_K;
+            return menu_item_ret();
+        }
+    }
+    menu_item++;
+    return 0;
+}
+
+#define MENU_ITEM_EDIT_advance_K() do { if (lcd_advance_K()) return; } while (0)
+#endif
+
+
 static void lcd_tune_menu()
 {
 	typedef struct
@@ -7123,8 +7154,11 @@ static void lcd_tune_menu()
 
 	MENU_ITEM_EDIT_int3_P(_T(MSG_FAN_SPEED), &fanSpeed, 0, 255);//5
 	MENU_ITEM_EDIT_int3_P(_i("Flow"), &extrudemultiply, 10, 999);//6////MSG_FLOW
+#ifdef LA_LIVE_K
+	MENU_ITEM_EDIT_advance_K();//7
+#endif
 #ifdef FILAMENTCHANGEENABLE
-	MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//7
+	MENU_ITEM_FUNCTION_P(_T(MSG_FILAMENTCHANGE), lcd_colorprint_change);//8
 #endif
 
 #ifdef FILAMENT_SENSOR
@@ -7141,7 +7175,7 @@ static void lcd_tune_menu()
 	else {
 		MENU_ITEM_TOGGLE_P(_T(MSG_FSENSOR), _T(MSG_ON), lcd_fsensor_state_set);
 	}
-#if IR_SENSOR_ANALOG
+#ifdef IR_SENSOR_ANALOG
      FSENSOR_ACTION_NA;
 #endif //IR_SENSOR_ANALOG
 #endif //FILAMENT_SENSOR
@@ -7323,7 +7357,6 @@ void lcd_print_stop()
 
     // Clear any saved printing state
     cancel_saved_printing();
-	cancel_heatup = true;
 
     // Abort the planner/queue/sd
     planner_abort_hard();
@@ -7334,19 +7367,45 @@ void lcd_print_stop()
 
     CRITICAL_SECTION_END;
 
+#ifdef MESH_BED_LEVELING
+    mbl.active = false; //also prevents undoing the mbl compensation a second time in the second planner_abort_hard()
+#endif
+
 	lcd_setstatuspgm(_T(MSG_PRINT_ABORTED));
 	stoptime = _millis();
 	unsigned long t = (stoptime - starttime - pause_time) / 1000; //time in s
 	pause_time = 0;
 	save_statistics(total_filament_used, t);
-	lcd_return_to_status();
-	lcd_ignore_click(true);
-	lcd_commands_step = 0;
-	lcd_commands_type = LcdCommands::StopPrint;
-	// Turn off the print fan
-	SET_OUTPUT(FAN_PIN);
-	WRITE(FAN_PIN, 0);
-	fanSpeed = 0;
+
+    lcd_commands_step = 0;
+    lcd_commands_type = LcdCommands::Idle;
+
+    lcd_cooldown(); //turns off heaters and fan; goes to status screen.
+    cancel_heatup = true; //unroll temperature wait loop stack.
+
+    current_position[Z_AXIS] += 10; //lift Z.
+    plan_buffer_line_curposXYZE(manual_feedrate[Z_AXIS] / 60);
+
+    if (axis_known_position[X_AXIS] && axis_known_position[Y_AXIS]) //if axis are homed, move to parked position.
+    {
+        current_position[X_AXIS] = X_CANCEL_POS;
+        current_position[Y_AXIS] = Y_CANCEL_POS;
+        plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
+    }
+    st_synchronize();
+
+    if (mmu_enabled) extr_unload(); //M702 C
+
+    finishAndDisableSteppers(); //M84
+
+    lcd_setstatuspgm(_T(WELCOME_MSG));
+    custom_message_type = CustomMsg::Status;
+
+    planner_abort_hard(); //needs to be done since plan_buffer_line resets waiting_inside_plan_buffer_line_print_aborted to false. Also copies current to destination.
+    
+    axis_relative_modes = E_AXIS_MASK; //XYZ absolute, E relative
+    
+    isPrintPaused = false; //clear isPrintPaused flag to allow starting next print after pause->stop scenario.
 }
 
 void lcd_sdcard_stop()
@@ -7442,90 +7501,99 @@ static void lcd_belttest_v()
     lcd_belttest();
     menu_back_if_clicked();
 }
-void lcd_belttest_print(const char* msg, uint16_t X, uint16_t Y)
-{
-    lcd_clear();
-    lcd_printf_P(
-              _N(
-                 "%S:\n"
-                 "%S\n"
-                 "X:%d\n"
-                 "Y:%d"
-                 ),
-              _i("Belt status"),
-              msg,
-              X,Y
-            );
-}
+
 void lcd_belttest()
 {
-    int _progress = 0;
-    bool _result = true;
+    lcd_clear();
+	// Belttest requires high power mode. Enable it.
+	FORCE_HIGH_POWER_START;
+    
     uint16_t   X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X));
     uint16_t   Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y));
-    lcd_belttest_print(_i("Checking X..."), X, Y);
-
-    _delay(2000);
+	lcd_printf_P(_i("Checking X axis  ")); // share message with selftest
+	lcd_set_cursor(0,1), lcd_printf_P(PSTR("X: %u -> ..."),X);
     KEEPALIVE_STATE(IN_HANDLER);
-
-    _result = lcd_selfcheck_axis_sg(X_AXIS);
-    X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X));
-    if (!_result){
-        lcd_belttest_print(_i("Error"), X, Y);
-        return;
-    }
-
-    lcd_belttest_print(_i("Checking Y..."), X, Y);
-    _result = lcd_selfcheck_axis_sg(Y_AXIS);
-    Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y));
-
-    if (!_result){
-        lcd_belttest_print(_i("Error"), X, Y);
-        lcd_clear();
-        return;
+    
+	// N.B: it doesn't make sense to handle !lcd_selfcheck...() because selftest_sg throws its own error screen
+	// that clobbers ours, with more info than we could provide. So on fail we just fall through to take us back to status.
+    if (lcd_selfcheck_axis_sg(X_AXIS)){
+		X = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_X));
+		lcd_set_cursor(10,1), lcd_printf_P(PSTR("%u"),X); // Show new X value next to old one.
+        lcd_puts_at_P(0,2,_i("Checking Y axis  "));
+		lcd_set_cursor(0,3), lcd_printf_P(PSTR("Y: %u -> ..."),Y);
+		if (lcd_selfcheck_axis_sg(Y_AXIS))
+		{
+			Y = eeprom_read_word((uint16_t*)(EEPROM_BELTSTATUS_Y));
+			lcd_set_cursor(10,3),lcd_printf_P(PSTR("%u"),Y);
+			lcd_set_cursor(19, 3);
+			lcd_print(LCD_STR_UPLEVEL);
+			lcd_wait_for_click_delay(10);
+		}
     }
-
-
-    lcd_belttest_print(_i("Done"), X, Y);
-
+	
+	FORCE_HIGH_POWER_END;
     KEEPALIVE_STATE(NOT_BUSY);
-    _delay(3000);
 }
 #endif //TMC2130
 
-#if IR_SENSOR_ANALOG
-static bool lcd_selftest_IRsensor()
+#ifdef IR_SENSOR_ANALOG
+// called also from marlin_main.cpp
+void printf_IRSensorAnalogBoardChange(){
+    printf_P(PSTR("Filament sensor board change detected: revision%S\n"), FsensorIRVersionText());
+}
+
+static bool lcd_selftest_IRsensor(bool bStandalone)
 {
-bool bAction;
-bool bPCBrev03b;
-uint16_t volt_IR_int;
-float volt_IR;
+    bool bPCBrev04;
+    uint16_t volt_IR_int;
 
-volt_IR_int=current_voltage_raw_IR;
-bPCBrev03b=(volt_IR_int<((int)IRsensor_Hopen_TRESHOLD));
-volt_IR=VOLT_DIV_REF*((float)volt_IR_int/(1023*OVERSAMPLENR));
-printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"),volt_IR);
-if(volt_IR_int<((int)IRsensor_Hmin_TRESHOLD))
-     {
-     lcd_selftest_error(TestError::FsensorLevel,"HIGH","");
-     return(false);
-     }
-lcd_show_fullscreen_message_and_wait_P(_i("Please insert filament (but not load them!) into extruder and then press the knob."));
-volt_IR_int=current_voltage_raw_IR;
-volt_IR=VOLT_DIV_REF*((float)volt_IR_int/(1023*OVERSAMPLENR));
-printf_P(PSTR("Measured filament sensor low level: %4.2fV\n"),volt_IR);
-if(volt_IR_int>((int)IRsensor_Lmax_TRESHOLD))
-     {
-     lcd_selftest_error(TestError::FsensorLevel,"LOW","");
-     return(false);
-     }
-if((bPCBrev03b?1:0)!=(uint8_t)oFsensorPCB)        // safer then "(uint8_t)bPCBrev03b"
-     {
-     printf_P(PSTR("Filament sensor board change detected: revision %S\n"),bPCBrev03b?PSTR("03b or newer"):PSTR("03 or older"));
-     oFsensorPCB=bPCBrev03b?ClFsensorPCB::_Rev03b:ClFsensorPCB::_Old;
-     eeprom_update_byte((uint8_t*)EEPROM_FSENSOR_PCB,(uint8_t)oFsensorPCB);
-     }
-return(true);
+    volt_IR_int = current_voltage_raw_IR;
+    bPCBrev04=(volt_IR_int < IRsensor_Hopen_TRESHOLD);
+    printf_P(PSTR("Measured filament sensor high level: %4.2fV\n"), Raw2Voltage(volt_IR_int) );
+    if(volt_IR_int < IRsensor_Hmin_TRESHOLD){
+        if(!bStandalone)
+            lcd_selftest_error(TestError::FsensorLevel,"HIGH","");
+        return(false);
+    }
+    lcd_show_fullscreen_message_and_wait_P(_i("Insert the filament (do not load it) into the extruder and then press the knob."));////c=20 r=6
+    volt_IR_int = current_voltage_raw_IR;
+    printf_P(PSTR("Measured filament sensor low level: %4.2fV\n"), Raw2Voltage(volt_IR_int));
+    if(volt_IR_int > (IRsensor_Lmax_TRESHOLD)){
+        if(!bStandalone)
+            lcd_selftest_error(TestError::FsensorLevel,"LOW","");
+        return(false);
+    }
+    if((bPCBrev04 ? 1 : 0) != (uint8_t)oFsensorPCB){        // safer then "(uint8_t)bPCBrev04"
+        oFsensorPCB=bPCBrev04 ? ClFsensorPCB::_Rev04 : ClFsensorPCB::_Old;
+        printf_IRSensorAnalogBoardChange();
+        eeprom_update_byte((uint8_t*)EEPROM_FSENSOR_PCB,(uint8_t)oFsensorPCB);
+    }
+    return(true);
+}
+
+static void lcd_detect_IRsensor(){
+    bool bAction;
+    bool loaded;
+    bMenuFSDetect = true;                               // inhibits some code inside "manage_inactivity()"
+    /// Check if filament is loaded. If it is loaded stop detection.
+    /// @todo Add autodetection with MMU2s
+    loaded = ! READ(IR_SENSOR_PIN);
+    if(loaded ){
+        lcd_show_fullscreen_message_and_wait_P(_i("Please unload the filament first, then repeat this action."));
+        return;
+    } else {
+        lcd_show_fullscreen_message_and_wait_P(_i("Please check the IR sensor connections and filament is unloaded."));
+        bAction = lcd_selftest_IRsensor(true);
+    }
+    if(bAction){
+        lcd_show_fullscreen_message_and_wait_P(_i("Sensor verified, remove the filament now."));////c=20 r=3
+        // the fsensor board has been successfully identified, any previous "not responding" may be cleared now
+        fsensor_not_responding = false;
+    } else {
+        lcd_show_fullscreen_message_and_wait_P(_i("Verification failed, remove the filament and try again."));////c=20 r=5
+        // here it is unclear what to to with the fsensor_not_responding flag
+    }
+    bMenuFSDetect=false;                              // de-inhibits some code inside "manage_inactivity()"
 }
 #endif //IR_SENSOR_ANALOG
 
@@ -7539,26 +7607,28 @@ bool lcd_selftest()
 	int _progress = 0;
 	bool _result = true;
 	bool _swapped_fan = false;
+#ifdef IR_SENSOR_ANALOG
+	//!   Check if IR sensor is in unknown state, if so run Fsensor Detection
+	//!   As the Fsensor Detection isn't yet ready for the mmu2s we set temporarily the IR sensor 0.3 or older for mmu2s
+	//! @todo Don't forget to remove this as soon Fsensor Detection works with mmu
+	if( oFsensorPCB == ClFsensorPCB::_Undef) {
+		if (!mmu_enabled) {
+			lcd_detect_IRsensor();
+		}
+		else {
+			eeprom_update_byte((uint8_t*)EEPROM_FSENSOR_PCB,0);
+		}
+	}
+#endif //IR_SENSOR_ANALOG
 	lcd_wait_for_cool_down();
 	lcd_clear();
 	lcd_set_cursor(0, 0); lcd_puts_P(_i("Self test start  "));////MSG_SELFTEST_START c=20
 	#ifdef TMC2130
 	  FORCE_HIGH_POWER_START;
 	#endif // TMC2130
-#if !IR_SENSOR_ANALOG
-     _delay(2000);
-#endif //!IR_SENSOR_ANALOG
-    
-    FORCE_BL_ON_START;
-    
+	FORCE_BL_ON_START;
 	_delay(2000);
 	KEEPALIVE_STATE(IN_HANDLER);
-#if IR_SENSOR_ANALOG
-     bool bAction;
-     bAction=lcd_show_fullscreen_message_yes_no_and_wait_P(_i("Is filament unloaded?"),false,true);
-     if(!bAction)
-          return(false);
-#endif //IR_SENSOR_ANALOG
 
 	_progress = lcd_selftest_screen(TestScreen::ExtruderFan, _progress, 3, true, 2000);
 #if (defined(FANCHECK) && defined(TACH_0))
@@ -7624,11 +7694,7 @@ bool lcd_selftest()
 	if (_result)
 	{
 		_progress = lcd_selftest_screen(TestScreen::FansOk, _progress, 3, true, 2000);
-#ifndef TMC2130
-		_result = lcd_selfcheck_endstops();
-#else
-		_result = true;
-#endif
+		_result = lcd_selfcheck_endstops(); //With TMC2130, only the Z probe is tested.
 	}
 
 	if (_result)
@@ -7679,28 +7745,38 @@ bool lcd_selftest()
 #ifdef TMC2130
 		tmc2130_home_exit();
 		enable_endstops(false);
-		current_position[X_AXIS] = current_position[X_AXIS] + 14;
-		current_position[Y_AXIS] = current_position[Y_AXIS] + 12;
 #endif
 
 		//homeaxis(X_AXIS);
 		//homeaxis(Y_AXIS);
+        current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
+		current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4+1);
+#ifdef TMC2130
+		//current_position[X_AXIS] += 0;
+		current_position[Y_AXIS] += 4;
+#endif //TMC2130
 		current_position[Z_AXIS] = current_position[Z_AXIS] + 10;
-		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 		st_synchronize();
+        set_destination_to_current();
 		_progress = lcd_selftest_screen(TestScreen::AxisZ, _progress, 3, true, 1500);
-		_result = lcd_selfcheck_axis(2, Z_MAX_POS);
-		if (eeprom_read_byte((uint8_t*)EEPROM_WIZARD_ACTIVE) != 1) {
-			enquecommand_P(PSTR("G28 W"));
-			enquecommand_P(PSTR("G1 Z15 F1000"));
-		}
+#ifdef TMC2130
+		homeaxis(Z_AXIS); //In case of failure, the code gets stuck in this function.
+#else
+        _result = lcd_selfcheck_axis(Z_AXIS, Z_MAX_POS);
+#endif //TMC2130
+
+		//raise Z to not damage the bed during and hotend testing
+		current_position[Z_AXIS] += 20;
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
+		st_synchronize();
 	}
 
 #ifdef TMC2130
 	if (_result)
 	{
 		current_position[Z_AXIS] = current_position[Z_AXIS] + 10;
-		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 		st_synchronize();
 		_progress = lcd_selftest_screen(TestScreen::Home, 0, 2, true, 0);
 		bool bres = tmc2130_home_calibrate(X_AXIS);
@@ -7750,9 +7826,12 @@ bool lcd_selftest()
 				_progress = lcd_selftest_screen(TestScreen::FsensorOk, _progress, 3, true, 2000); //fil sensor OK
 			}
 #endif //PAT9125
-#if IR_SENSOR_ANALOG
+#if 0
+	// Intentionally disabled - that's why we moved the detection to runtime by just checking the two voltages.
+	// The idea is not to force the user to remove and insert the filament on an assembled printer.
+//def IR_SENSOR_ANALOG
 			_progress = lcd_selftest_screen(TestScreen::Fsensor, _progress, 3, true, 2000); //check filament sensor
-               _result = lcd_selftest_IRsensor();
+			_result = lcd_selftest_IRsensor();
 			if (_result)
 			{
 				_progress = lcd_selftest_screen(TestScreen::FsensorOk, _progress, 3, true, 2000); //filament sensor OK
@@ -7795,7 +7874,7 @@ bool lcd_selftest()
 
 static void reset_crash_det(unsigned char axis) {
 	current_position[axis] += 10;
-	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 	st_synchronize();
 	if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_DET)) tmc2130_sg_stop_on_crash = true;
 }
@@ -7816,19 +7895,15 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 	tmc2130_home_exit();
 	enable_endstops(true);
 
-	if (axis == X_AXIS) { //there is collision between cables and PSU cover in X axis if Z coordinate is too low
-		
-		current_position[Z_AXIS] += 17;
-		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
-		tmc2130_home_enter(Z_AXIS_MASK);
-		st_synchronize();
-		tmc2130_home_exit();
-	}
+
+	raise_z_above(MESH_HOME_Z_SEARCH);
+	st_synchronize();
+	tmc2130_home_enter(1 << axis);
 
 // first axis length measurement begin	
 	
 	current_position[axis] -= (axis_length + margin);
-	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 
 	
 	st_synchronize();
@@ -7838,11 +7913,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 	current_position_init = st_get_position_mm(axis);
 
 	current_position[axis] += 2 * margin;
-	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 	st_synchronize();
 
 	current_position[axis] += axis_length;
-	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 
 	st_synchronize();
 
@@ -7858,11 +7933,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 
 
 	current_position[axis] -= margin;
-	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 	st_synchronize();	
 
 	current_position[axis] -= (axis_length + margin);
-	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 		
 	st_synchronize();
 
@@ -7870,6 +7945,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 
 	measured_axis_length[1] = abs(current_position_final - current_position_init);
 
+	tmc2130_home_exit();
 
 //end of second measurement, now check for possible errors:
 
@@ -7886,8 +7962,10 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 
 			lcd_selftest_error(TestError::Axis, _error_1, "");
 			current_position[axis] = 0;
-			plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+			plan_set_position_curposXYZE();
 			reset_crash_det(axis);
+			enable_endstops(true);
+			endstops_hit_on_purpose();
 			return false;
 		}
 	}
@@ -7904,19 +7982,20 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
 
 			lcd_selftest_error(TestError::Pulley, _error_1, "");
 			current_position[axis] = 0;
-			plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+			plan_set_position_curposXYZE();
 			reset_crash_det(axis);
-
+			endstops_hit_on_purpose();
 			return false;
 		}
 		current_position[axis] = 0;
-		plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
+		plan_set_position_curposXYZE();
 		reset_crash_det(axis);
+		endstops_hit_on_purpose();
 		return true;
 }
 #endif //TMC2130
 
-//#ifndef TMC2130
+#ifndef TMC2130
 
 static bool lcd_selfcheck_axis(int _axis, int _travel)
 {
@@ -7931,13 +8010,13 @@ static bool lcd_selfcheck_axis(int _axis, int _travel)
 
 	if (_axis == X_AXIS) {
 		current_position[Z_AXIS] += 17;
-		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 	}
 
 	do {
 		current_position[_axis] = current_position[_axis] - 1;
 
-		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+		plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 		st_synchronize();
 #ifdef TMC2130
 		if ((READ(Z_MIN_PIN) ^ (bool)Z_MIN_ENDSTOP_INVERTING))
@@ -8015,12 +8094,13 @@ static bool lcd_selfcheck_axis(int _axis, int _travel)
 		{
 			lcd_selftest_error(TestError::Motor, _error_1, _error_2);
 		}
-	}
+	}    
+	current_position[_axis] = 0; //simulate axis home to avoid negative numbers for axis position, especially Z.
+	plan_set_position_curposXYZE();
 
 	return _stepresult;
 }
 
-#ifndef TMC2130
 static bool lcd_selfcheck_pulleys(int axis)
 {
 	float tmp_motor_loud[3] = DEFAULT_PWM_MOTOR_CURRENT_LOUD;
@@ -8039,17 +8119,17 @@ static bool lcd_selfcheck_pulleys(int axis)
 	current_position_init = current_position[axis];
 
 	current_position[axis] += 2;
-	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 	for (i = 0; i < 5; i++) {
 		refresh_cmd_timeout();
 		current_position[axis] = current_position[axis] + move;
 		st_current_set(0, 850); //set motor current higher
-		plan_buffer_line_curposXYZE(200, active_extruder);
+		plan_buffer_line_curposXYZE(200);
 		st_synchronize();
           if (SilentModeMenu != SILENT_MODE_OFF) st_current_set(0, tmp_motor[0]); //set back to normal operation currents
 		else st_current_set(0, tmp_motor_loud[0]); //set motor current back			
 		current_position[axis] = current_position[axis] - move;
-		plan_buffer_line_curposXYZE(50, active_extruder);
+		plan_buffer_line_curposXYZE(50);
 		st_synchronize();
 		if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ||
 			((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1)) {
@@ -8065,8 +8145,8 @@ static bool lcd_selfcheck_pulleys(int axis)
 			((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1)) {
 			endstop_triggered = true;
 			if (current_position_init - 1 <= current_position[axis] && current_position_init + 1 >= current_position[axis]) {
-				current_position[axis] += (axis == X_AXIS) ? 13 : 9;
-				plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+				current_position[axis] += 10;
+				plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 				st_synchronize();
 				return(true);
 			}
@@ -8077,7 +8157,7 @@ static bool lcd_selfcheck_pulleys(int axis)
 		}
 		else {
 			current_position[axis] -= 1;
-			plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
+			plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
 			st_synchronize();
 			if (_millis() > timeout_counter) {
 				lcd_selftest_error(TestError::Pulley, (axis == 0) ? "X" : "Y", "");
@@ -8087,31 +8167,42 @@ static bool lcd_selfcheck_pulleys(int axis)
 	}
 	return(true);
 }
+#endif //not defined TMC2130
 
 
 static bool lcd_selfcheck_endstops()
 {
 	bool _result = true;
 
-	if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ||
+	if (
+	#ifndef TMC2130
+		((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ||
 		((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) ||
+	#endif //!TMC2130
 		((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1))
 	{
+	#ifndef TMC2130
 		if ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) current_position[0] += 10;
 		if ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) current_position[1] += 10;
+	#endif //!TMC2130
 		if ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1) current_position[2] += 10;
 	}
-	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
-	_delay(500);
+	plan_buffer_line_curposXYZE(manual_feedrate[0] / 60);
+	st_synchronize();
 
-	if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ||
+	if (
+	#ifndef TMC2130
+		((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ||
 		((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) ||
+	#endif //!TMC2130
 		((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1))
 	{
 		_result = false;
 		char _error[4] = "";
+	#ifndef TMC2130
 		if ((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) strcat(_error, "X");
 		if ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) strcat(_error, "Y");
+	#endif //!TMC2130
 		if ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1) strcat(_error, "Z");
 		lcd_selftest_error(TestError::Endstops, _error, "");
 	}
@@ -8119,7 +8210,6 @@ static bool lcd_selfcheck_endstops()
 	manage_inactivity(true);
 	return _result;
 }
-#endif //not defined TMC2130
 
 static bool lcd_selfcheck_check_heater(bool _isbed)
 {
@@ -8245,7 +8335,7 @@ static void lcd_selftest_error(TestError testError, const char *_error_1, const
 		break;
 	case TestError::Endstop:
 		lcd_set_cursor(0, 2);
-		lcd_puts_P(_i("Endstop not hit"));////MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+		lcd_puts_P(_i("Endstop not hit"));////MSG_SELFTEST_ENDSTOP_NOTHIT c=20
 		lcd_set_cursor(0, 3);
 		lcd_puts_P(_T(MSG_SELFTEST_MOTOR));
 		lcd_set_cursor(18, 3);
@@ -8423,8 +8513,7 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite,
 		lcd_set_cursor(0, 1);
 		if(check_opposite == true) lcd_puts_P(_T(MSG_SELFTEST_COOLING_FAN)); 
 		else lcd_puts_P(_T(MSG_SELFTEST_EXTRUDER_FAN));
-		SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
-		WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1);
+		setExtruderAutoFanState(3);
 		break;
 	case 1:
 		// object cooling fan
@@ -8453,23 +8542,6 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite,
 	lcd_button_pressed = false;
 	do
 	{
-		switch (_fan)
-		{
-		case 0:
-			// extruder cooling fan
-			SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
-			WRITE(EXTRUDER_0_AUTO_FAN_PIN, 1);
-			break;
-		case 1:
-			// object cooling fan
-			SET_OUTPUT(FAN_PIN);
-#ifdef FAN_SOFT_PWM
-			fanSpeedSoftPwm = 255;
-#else //FAN_SOFT_PWM
-			analogWrite(FAN_PIN, 255);
-#endif //FAN_SOFT_PWM
-			break;
-		}
 		if (abs((enc_dif - lcd_encoder_diff)) > 2) {
 			if (enc_dif > lcd_encoder_diff) {
 				_result = !check_opposite;
@@ -8496,8 +8568,7 @@ static bool lcd_selftest_manual_fan_check(int _fan, bool check_opposite,
 
 	} while (!lcd_clicked());
 	KEEPALIVE_STATE(IN_HANDLER);
-	SET_OUTPUT(EXTRUDER_0_AUTO_FAN_PIN);
-	WRITE(EXTRUDER_0_AUTO_FAN_PIN, 0);
+	setExtruderAutoFanState(0);
 	SET_OUTPUT(FAN_PIN);
 #ifdef FAN_SOFT_PWM
 	fanSpeedSoftPwm = 0;
@@ -8517,20 +8588,20 @@ static FanCheck lcd_selftest_fan_auto(int _fan)
 	case 0:
 		fanSpeed = 0;
 		manage_heater();			//turn off fan
-		setExtruderAutoFanState(EXTRUDER_0_AUTO_FAN_PIN, 1); //extruder fan
+		setExtruderAutoFanState(3); //extruder fan
 #ifdef FAN_SOFT_PWM
 		extruder_autofan_last_check = _millis();
 		fan_measuring = true;
 #endif //FAN_SOFT_PWM
-		_delay(2000);				//delay_keep_alive would turn off extruder fan, because temerature is too low
-
+		_delay(2000);
+		setExtruderAutoFanState(0); //extruder fan
 		manage_heater();			//count average fan speed from 2s delay and turn off fans
 
 		printf_P(PSTR("Test 1:\n"));
 		printf_P(PSTR("Print fan speed: %d \n"), fan_speed[1]);
 		printf_P(PSTR("Extr fan speed: %d \n"), fan_speed[0]);
 
-		if (!fan_speed[0]) {
+		if (fan_speed[0] < 20) { // < 1200 RPM would mean either a faulty Noctua or Altfan
 			return FanCheck::ExtruderFan;
 		}
 #ifdef FAN_SOFT_PWM
@@ -8608,7 +8679,7 @@ static FanCheck lcd_selftest_fan_auto(int _fan)
 static int lcd_selftest_screen(TestScreen screen, int _progress, int _progress_scale, bool _clear, int _delay)
 {
 
-    lcd_update_enable(false);
+	lcd_update_enable(false);
 
 	const char *_indicator = (_progress >= _progress_scale) ? "-" : "|";
 
@@ -8656,7 +8727,7 @@ static int lcd_selftest_screen(TestScreen screen, int _progress, int _progress_s
 	{
 		//SERIAL_ECHOLNPGM("Other tests");
 
-	    TestScreen _step_block = TestScreen::AxisX;
+		TestScreen _step_block = TestScreen::AxisX;
 		lcd_selftest_screen_step(2, 2, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), "X", _indicator);
 
 		_step_block = TestScreen::AxisY;
@@ -8668,8 +8739,8 @@ static int lcd_selftest_screen(TestScreen screen, int _progress, int _progress_s
 		_step_block = TestScreen::Bed;
 		lcd_selftest_screen_step(3, 0, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), "Bed", _indicator);
 
-        _step_block = TestScreen::Hotend;
-        lcd_selftest_screen_step(3, 9, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), "Hotend", _indicator);
+		_step_block = TestScreen::Hotend;
+		lcd_selftest_screen_step(3, 9, ((screen == _step_block) ? 1 : (screen < _step_block) ? 0 : 2), "Hotend", _indicator);
 	}
 
 	if (_delay > 0) delay_keep_alive(_delay);
@@ -8766,7 +8837,7 @@ static void menu_action_sdfile(const char* filename)
   }
   
   if (!check_file(filename)) {
-	  result = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("File incomplete. Continue anyway?"), false, false);////MSG_FILE_INCOMPLETE c=20 r=2
+	  result = lcd_show_fullscreen_message_yes_no_and_wait_P(_i("File incomplete. Continue anyway?"), false, false);////MSG_FILE_INCOMPLETE c=20 r=3
 	  lcd_update_enable(true);
   }
   if (result) {
@@ -8907,13 +8978,14 @@ void lcd_finishstatus() {
   lcd_draw_update = 2;
 
 }
+
 void lcd_setstatus(const char* message)
 {
   if (lcd_status_message_level > 0)
     return;
-  strncpy(lcd_status_message, message, LCD_WIDTH);
-  lcd_finishstatus();
+  lcd_updatestatus(message);
 }
+
 void lcd_updatestatuspgm(const char *message){
 	strncpy_P(lcd_status_message, message, LCD_WIDTH);
 	lcd_status_message[LCD_WIDTH] = 0;
@@ -8928,12 +9000,29 @@ void lcd_setstatuspgm(const char* message)
     return;
   lcd_updatestatuspgm(message);
 }
+
+void lcd_updatestatus(const char *message){
+	strncpy(lcd_status_message, message, LCD_WIDTH);
+	lcd_status_message[LCD_WIDTH] = 0;
+	lcd_finishstatus();
+	// hack lcd_draw_update to 1, i.e. without clear
+	lcd_draw_update = 1;
+}
+
 void lcd_setalertstatuspgm(const char* message)
 {
   lcd_setstatuspgm(message);
   lcd_status_message_level = 1;
   lcd_return_to_status();
 }
+
+void lcd_setalertstatus(const char* message)
+{
+  lcd_setstatus(message);
+  lcd_status_message_level = 1;
+  lcd_return_to_status();
+}
+
 void lcd_reset_alert_level()
 {
   lcd_status_message_level = 0;
@@ -8953,6 +9042,13 @@ void menu_lcd_longpress_func(void)
         lcd_quick_feedback();
         return;
     }
+    if (menu_menu == lcd_hw_setup_menu)
+    {
+        // only toggle the experimental menu visibility flag
+        lcd_quick_feedback();
+        lcd_experimental_toggle();
+        return;
+    }
 
     // explicitely listed menus which are allowed to rise the move-z or live-adj-z functions
     // The lists are not the same for both functions, so first decide which function is to be performed
@@ -9116,3 +9212,25 @@ void lcd_crash_detect_disable()
     eeprom_update_byte((uint8_t*)EEPROM_CRASH_DET, 0x00);
 }
 #endif
+
+void lcd_experimental_toggle()
+{
+    uint8_t oldVal = eeprom_read_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY);
+    if (oldVal == EEPROM_EMPTY_VALUE)
+        oldVal = 0;
+    else
+        oldVal = !oldVal;
+    eeprom_update_byte((uint8_t *)EEPROM_EXPERIMENTAL_VISIBILITY, oldVal);
+}
+
+void lcd_experimental_menu()
+{
+    MENU_BEGIN();
+    MENU_ITEM_BACK_P(_T(MSG_BACK));
+
+#ifdef EXTRUDER_ALTFAN_DETECT
+    MENU_ITEM_TOGGLE_P(_N("ALTFAN det."), altfanOverride_get()?_T(MSG_OFF):_T(MSG_ON), altfanOverride_toggle);////MSG_MENU_ALTFAN c=18
+#endif //EXTRUDER_ALTFAN_DETECT
+
+    MENU_END();
+}

+ 11 - 7
Firmware/ultralcd.h

@@ -23,9 +23,11 @@ void lcd_setstatuspgm(const char* message);
 //! - always returns the display to the main status screen
 //! - always makes lcd_reset (which is slow and causes flicker)
 //! - does not update the message if there is already one (i.e. lcd_status_message_level > 0)
+void lcd_setalertstatus(const char* message);
 void lcd_setalertstatuspgm(const char* message);
 //! only update the alert message on the main status screen
 //! has no sideeffects, may be called multiple times
+void lcd_updatestatus(const char *message);
 void lcd_updatestatuspgm(const char *message);
 
 void lcd_reset_alert_level();
@@ -55,8 +57,10 @@ extern bool lcd_selftest();
 
 void lcd_menu_statistics(); 
 
+void lcd_status_screen();                         // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
 void lcd_menu_extruder_info();                    // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
 void lcd_menu_show_sensors_state();               // NOT static due to using inside "Marlin_main" module ("manage_inactivity()")
+
 #ifdef TMC2130
 bool lcd_crash_detect_enabled();
 void lcd_crash_detect_enable();
@@ -138,6 +142,11 @@ extern uint8_t farm_status;
 #define SILENT_MODE_OFF SILENT_MODE_POWER
 #endif
 
+#ifdef IR_SENSOR_ANALOG
+extern bool bMenuFSDetect;
+void printf_IRSensorAnalogBoardChange();
+#endif //IR_SENSOR_ANALOG
+
 extern int8_t SilentModeMenu;
 extern uint8_t SilentModeMenu_MMU;
 
@@ -250,12 +259,7 @@ enum class WizState : uint8_t
 
 void lcd_wizard(WizState state);
 
-#define VOLT_DIV_REF 5
-#if IR_SENSOR_ANALOG
-#define IRsensor_Hmin_TRESHOLD (3.0*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~3.0V (0.6*Vcc)
-#define IRsensor_Lmax_TRESHOLD (1.5*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~1.5V (0.3*Vcc)
-#define IRsensor_Hopen_TRESHOLD (4.6*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~4.6V (N.C. @ Ru~20-50k, Rd'=56k, Ru'=10k)
-#define IRsensor_Ldiode_TRESHOLD (0.3*1023*OVERSAMPLENR/VOLT_DIV_REF) // ~0.3V
-#endif //IR_SENSOR_ANALOG
+extern void lcd_experimental_toggle();
+extern void lcd_experimental_menu();
 
 #endif //ULTRALCD_H

+ 4 - 0
Firmware/variants/1_75mm_MK2-RAMBo10a-E3Dv6full.h

@@ -330,6 +330,10 @@ PREHEAT SETTINGS
 #define ASA_PREHEAT_HPB_TEMP 105
 #define ASA_PREHEAT_FAN_SPEED 0
 
+#define PC_PREHEAT_HOTEND_TEMP 275
+#define PC_PREHEAT_HPB_TEMP 105
+#define PC_PREHEAT_FAN_SPEED 0
+
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
 #define ABS_PREHEAT_FAN_SPEED 0 

+ 3 - 0
Firmware/variants/1_75mm_MK2-RAMBo13a-E3Dv6full.h

@@ -326,6 +326,9 @@ PREHEAT SETTINGS
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 
+#define PC_PREHEAT_HOTEND_TEMP 275
+#define PC_PREHEAT_HPB_TEMP 105
+
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
 

+ 4 - 1
Firmware/variants/1_75mm_MK25-RAMBo10a-E3Dv6full.h

@@ -384,6 +384,9 @@
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 
+#define PC_PREHEAT_HOTEND_TEMP 275
+#define PC_PREHEAT_HPB_TEMP 105
+
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
 
@@ -504,7 +507,7 @@
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
-//#define MMU_HAS_CUTTER
+#define MMU_HAS_CUTTER
 
 #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
 

+ 4 - 1
Firmware/variants/1_75mm_MK25-RAMBo13a-E3Dv6full.h

@@ -385,6 +385,9 @@
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 
+#define PC_PREHEAT_HOTEND_TEMP 275
+#define PC_PREHEAT_HPB_TEMP 105
+
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
 
@@ -505,7 +508,7 @@
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
-//#define MMU_HAS_CUTTER
+#define MMU_HAS_CUTTER
 
 #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
 

+ 4 - 1
Firmware/variants/1_75mm_MK25S-RAMBo10a-E3Dv6full.h

@@ -384,6 +384,9 @@
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 
+#define PC_PREHEAT_HOTEND_TEMP 275
+#define PC_PREHEAT_HPB_TEMP 105
+
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
 
@@ -504,7 +507,7 @@
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
-//#define MMU_HAS_CUTTER
+#define MMU_HAS_CUTTER
 
 // This is experimental feature requested by our test department.
 // There is no known use for ordinary user. If enabled by this macro

+ 4 - 1
Firmware/variants/1_75mm_MK25S-RAMBo13a-E3Dv6full.h

@@ -385,6 +385,9 @@
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 
+#define PC_PREHEAT_HOTEND_TEMP 275
+#define PC_PREHEAT_HPB_TEMP 105
+
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
 
@@ -505,7 +508,7 @@
 #define MMU_REQUIRED_FW_BUILDNR 132
 #define MMU_FORCE_STEALTH_MODE
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
-//#define MMU_HAS_CUTTER
+#define MMU_HAS_CUTTER
 
 // This is experimental feature requested by our test department.
 // There is no known use for ordinary user. If enabled by this macro

+ 16 - 5
Firmware/variants/1_75mm_MK3-EINSy10a-E3Dv6full.h

@@ -151,8 +151,8 @@
 // this value is litlebit higher that real limit, because ambient termistor is on the board and is temperated from it,
 // temperature inside the case is around 31C for ambient temperature 25C, when the printer is powered on long time and idle
 // the real limit is 15C (same as MINTEMP limit), this is because 15C is end of scale for both used thermistors (bed, heater)
-#define MINTEMP_MINAMBIENT      25
-#define MINTEMP_MINAMBIENT_RAW  978
+#define MINTEMP_MINAMBIENT      10
+#define MINTEMP_MINAMBIENT_RAW  1002
 
 #define DEBUG_DCODE3
 
@@ -282,18 +282,21 @@
  *------------------------------------*/
 
 // Mintemps
-#define HEATER_0_MINTEMP 15
+#define HEATER_0_MINTEMP 10
 #define HEATER_1_MINTEMP 5
 #define HEATER_2_MINTEMP 5
 #define HEATER_MINTEMP_DELAY 15000                // [ms] ! if changed, check maximal allowed value @ ShortTimer
 #if HEATER_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see HEATER_MINTEMP_DELAY definition)"
 #endif
-#define BED_MINTEMP 15
+#define BED_MINTEMP 10
 #define BED_MINTEMP_DELAY 50000                   // [ms] ! if changed, check maximal allowed value @ ShortTimer
 #if BED_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
 #endif
+#define DETECT_SUPERPINDA
+#define PINDA_MINTEMP BED_MINTEMP
+#define AMBIENT_MINTEMP -30
 
 // Maxtemps
 #if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
@@ -304,6 +307,7 @@
 #define HEATER_1_MAXTEMP 305
 #define HEATER_2_MAXTEMP 305
 #define BED_MAXTEMP 125
+#define AMBIENT_MAXTEMP 100
 
 #if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
 // Define PID constants for extruder with PT100
@@ -496,6 +500,9 @@
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 
+#define PC_PREHEAT_HOTEND_TEMP 275
+#define PC_PREHEAT_HPB_TEMP 110
+
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
 
@@ -618,6 +625,10 @@
 // The following example, 12 * (4 * 16 / 400) = 12 * 0.16mm = 1.92mm.
 //#define UVLO_Z_AXIS_SHIFT 1.92
 #define UVLO_Z_AXIS_SHIFT 0.64
+// When powered off during PP recovery, the Z axis position can still be re-adjusted. In this case
+// we just need to shift to the nearest fullstep, but we need a move which is at least
+// "dropsegments" steps long. All the above rules still need to apply.
+#define UVLO_TINY_Z_AXIS_SHIFT 0.16
 // If power panic occured, and the current temperature is higher then target temperature before interrupt minus this offset, print will be recovered automatically. 
 #define AUTOMATIC_UVLO_BED_TEMP_OFFSET 5 
 
@@ -630,7 +641,7 @@
 #define MMU_REQUIRED_FW_BUILDNR 83
 #define MMU_HWRESET
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
-//#define MMU_HAS_CUTTER
+#define MMU_HAS_CUTTER
 #define MMU_IDLER_SENSOR_ATTEMPTS_NR 21 //max. number of attempts to load filament if first load failed; value for max bowden length and case when loading fails right at the beginning
 
 #endif //__CONFIGURATION_PRUSA_H

+ 19 - 6
Firmware/variants/1_75mm_MK3S-EINSy10a-E3Dv6full.h

@@ -153,8 +153,8 @@
 // this value is litlebit higher that real limit, because ambient termistor is on the board and is temperated from it,
 // temperature inside the case is around 31C for ambient temperature 25C, when the printer is powered on long time and idle
 // the real limit is 15C (same as MINTEMP limit), this is because 15C is end of scale for both used thermistors (bed, heater)
-#define MINTEMP_MINAMBIENT      25
-#define MINTEMP_MINAMBIENT_RAW  978
+#define MINTEMP_MINAMBIENT      10
+#define MINTEMP_MINAMBIENT_RAW  1002
 
 #define DEBUG_DCODE3
 
@@ -284,18 +284,21 @@
  *------------------------------------*/
 
 // Mintemps
-#define HEATER_0_MINTEMP 15
+#define HEATER_0_MINTEMP 10
 #define HEATER_1_MINTEMP 5
 #define HEATER_2_MINTEMP 5
 #define HEATER_MINTEMP_DELAY 15000                // [ms] ! if changed, check maximal allowed value @ ShortTimer
 #if HEATER_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see HEATER_MINTEMP_DELAY definition)"
 #endif
-#define BED_MINTEMP 15
+#define BED_MINTEMP 10
 #define BED_MINTEMP_DELAY 50000                   // [ms] ! if changed, check maximal allowed value @ ShortTimer
 #if BED_MINTEMP_DELAY>USHRT_MAX
 #error "Check maximal allowed value @ ShortTimer (see BED_MINTEMP_DELAY definition)"
 #endif
+#define DETECT_SUPERPINDA
+#define PINDA_MINTEMP BED_MINTEMP
+#define AMBIENT_MINTEMP -30
 
 // Maxtemps
 #if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
@@ -306,6 +309,7 @@
 #define HEATER_1_MAXTEMP 305
 #define HEATER_2_MAXTEMP 305
 #define BED_MAXTEMP 125
+#define AMBIENT_MAXTEMP 100
 
 #if defined(E3D_PT100_EXTRUDER_WITH_AMP) || defined(E3D_PT100_EXTRUDER_NO_AMP)
 // Define PID constants for extruder with PT100
@@ -331,6 +335,8 @@
 #define EXTRUDER_2_AUTO_FAN_PIN   -1
 #define EXTRUDER_AUTO_FAN_TEMPERATURE 50
 #define EXTRUDER_AUTO_FAN_SPEED   255  // == full speed
+#define EXTRUDER_ALTFAN_DETECT
+#define EXTRUDER_ALTFAN_SPEED_SILENT 128
 
 
 
@@ -498,6 +504,9 @@
 #define ASA_PREHEAT_HOTEND_TEMP 260
 #define ASA_PREHEAT_HPB_TEMP 105
 
+#define PC_PREHEAT_HOTEND_TEMP 275
+#define PC_PREHEAT_HPB_TEMP 110
+
 #define ABS_PREHEAT_HOTEND_TEMP 255
 #define ABS_PREHEAT_HPB_TEMP 100
 
@@ -620,7 +629,11 @@
 // The following example, 12 * (4 * 16 / 400) = 12 * 0.16mm = 1.92mm.
 //#define UVLO_Z_AXIS_SHIFT 1.92
 #define UVLO_Z_AXIS_SHIFT 0.64
-// If power panic occured, and the current temperature is higher then target temperature before interrupt minus this offset, print will be recovered automatically. 
+// When powered off during PP recovery, the Z axis position can still be re-adjusted. In this case
+// we just need to shift to the nearest fullstep, but we need a move which is at least
+// "dropsegments" steps long. All the above rules still need to apply.
+#define UVLO_TINY_Z_AXIS_SHIFT 0.16
+// If power panic occured, and the current temperature is higher then target temperature before interrupt minus this offset, print will be recovered automatically.
 #define AUTOMATIC_UVLO_BED_TEMP_OFFSET 5 
 
 #define HEATBED_V2
@@ -632,7 +645,7 @@
 #define MMU_REQUIRED_FW_BUILDNR 83
 #define MMU_HWRESET
 #define MMU_DEBUG //print communication between MMU2 and printer on serial
-//#define MMU_HAS_CUTTER
+#define MMU_HAS_CUTTER
 
 // This is experimental feature requested by our test department.
 // There is no known use for ordinary user. If enabled by this macro

+ 44 - 13
PF-build.sh

@@ -56,7 +56,7 @@
 #   Some may argue that this is only used by a script, BUT as soon someone accidentally or on purpose starts Arduino IDE
 #   it will use the default Arduino IDE folders and so can corrupt the build environment.
 #
-# Version: 1.0.6-Build_10
+# Version: 1.0.6-Build_18
 # Change log:
 # 12 Jan 2019, 3d-gussner, Fixed "compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections" in 'platform.txt'
 # 16 Jan 2019, 3d-gussner, Build_2, Added development check to modify 'Configuration.h' to prevent unwanted LCD messages that Firmware is unknown
@@ -114,7 +114,16 @@
 # 26 Jul 2019, 3d-gussner, Change JSON repository to prusa3d after PR https://github.com/prusa3d/Arduino_Boards/pull/1 was merged
 # 23 Sep 2019, 3d-gussner, Prepare PF-build.sh for comming Prusa3d/Arduino_Boards version 1.0.2 Pull Request
 # 17 Oct 2019, 3d-gussner, Changed folder and check file names to have seperated build enviroments depening on Arduino IDE version and
-#                          board-versions. 
+#                          board-versions.
+# 15 Dec 2019, 3d-gussner, Prepare for switch to Prusa3d/PF-build-env repository
+# 15 Dec 2019, 3d-gussner, Fix Audrino user preferences for the chosen board.
+# 17 Dec 2019, 3d-gussner, Fix "timer0_fract = 0" warning by using Arduino_boards v1.0.3
+# 28 Apr 2020, 3d-gussner, Added RC3 detection
+# 03 May 2020, deliopoulos, Accept all RCx as RC versions
+# 05 May 2020, 3d-gussner, Make a copy of `not_tran.txt`and `not_used.txt` as `not_tran_$VARIANT.txt`and `not_used_$VARIANT.txt`
+#                          After compiling All multilanguage vairants it makes it easier to find missing or unused transltions.
+# 12 May 2020, DRracer   , Cleanup double MK2/s MK25/s `not_tran` and `not_used` files
+# 13 May 2020, leptun    , If cleanup files do not exist don't try to.
 #### Start check if OSTYPE is supported
 OS_FOUND=$( command -v uname)
 
@@ -207,19 +216,22 @@ if ! type python > /dev/null; then
 	fi
 fi
 
-#### End prepare bash environment
+#### End prepare bash / Linux environment
 
 
 #### Set build environment 
 ARDUINO_ENV="1.8.5"
 BUILD_ENV="1.0.6"
-BOARD="rambo"
-BOARD_PACKAGE_NAME="PrusaResearchRambo"
-BOARD_VERSION="1.0.1"
+BOARD="prusa_einsy_rambo"
+BOARD_PACKAGE_NAME="PrusaResearch"
+BOARD_VERSION="1.0.3"
+#BOARD_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Prusa_Merge_v1.0.3/IDE_Board_Manager/package_prusa3d_index.json"
 BOARD_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json"
-BOARD_FILENAME="prusa3drambo"
-BOARD_FILE_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/prusa3drambo-1.0.1.tar.bz2"
-PF_BUILD_FILE_URL="https://github.com/3d-gussner/PF-build-env/releases/download/$BUILD_ENV/PF-build-env-$BUILD_ENV.zip"
+BOARD_FILENAME="prusa3dboards"
+#BOARD_FILE_URL="https://raw.githubusercontent.com/3d-gussner/Arduino_Boards/Prusa_Merge_v1.0.3/IDE_Board_Manager/prusa3dboards-1.0.3.tar.bz2"
+BOARD_FILE_URL="https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/prusa3dboards-1.0.3.tar.bz2"
+#PF_BUILD_FILE_URL="https://github.com/3d-gussner/PF-build-env-1/releases/download/$BUILD_ENV-WinLin/PF-build-env-WinLin-$BUILD_ENV.zip"
+PF_BUILD_FILE_URL="https://github.com/prusa3d/PF-build-env/releases/download/$BUILD_ENV-WinLin/PF-build-env-WinLin-$BUILD_ENV.zip"
 LIB="PrusaLibrary"
 SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
 
@@ -233,6 +245,7 @@ echo "Ardunio IDE :" $ARDUINO_ENV
 echo "Build env   :" $BUILD_ENV
 echo "Board       :" $BOARD
 echo "Package name:" $BOARD_PACKAGE_NAME
+echo "Board v.    :" $BOARD_VERSION
 echo "Specific Lib:" $LIB
 echo ""
 
@@ -321,7 +334,7 @@ if [ ! -e ../PF-build-env-$BUILD_ENV/Preferences-$ARDUINO_ENV-$BOARD_VERSION-$TA
 	echo "update.check"
 	sed -i 's/update.check = true/update.check = false/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
 	echo "board"
-	sed -i 's/board = uno/board = $BOARD/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
+	sed -i "s/board = uno/board = $BOARD/g" ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
 	echo "editor.linenumbers"
 	sed -i 's/editor.linenumbers = false/editor.linenumbers = true/g' ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor/lib/preferences.txt
 	echo "boardsmanager.additional.urls"
@@ -364,7 +377,7 @@ if [[ ! -d "../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$P
 fi	
 
 # Download and extract Prusa Firmware specific library files
-if [ ! -f "PF-build-env-$BUILD_ENV.zip" ]; then
+if [ ! -f "PF-build-env-WinLin-$BUILD_ENV.zip" ]; then
 	echo "$(tput setaf 6)Downloading Prusa Firmware build environment...$(tput setaf 2)"
 	sleep 2
 	wget $PF_BUILD_FILE_URL || exit 11
@@ -373,7 +386,7 @@ fi
 if [ ! -e "../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt" ]; then
 	echo "$(tput setaf 6)Unzipping Prusa Firmware build environment...$(tput setaf 2)"
 	sleep 2
-	unzip -o PF-build-env-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12
+	unzip -o PF-build-env-WinLin-$BUILD_ENV.zip -d ../PF-build-env-$BUILD_ENV/$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor || exit 12
 	echo "# PF-build-env-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor-$BUILD_ENV" >> ../PF-build-env-$BUILD_ENV/PF-build-env-$BUILD_ENV-$ARDUINO_ENV-$BOARD_VERSION-$TARGET_OS-$Processor.txt
 	echo "$(tput sgr0)"
 fi
@@ -520,7 +533,7 @@ do
 	# Check development status
 	DEV_CHECK=$(grep --max-count=1 "\bFW_VERSION\b" $SCRIPT_PATH/Firmware/Configuration.h | sed -e's/  */ /g'|cut -d '"' -f2|sed 's/\.//g'|cut -d '-' -f2)
 	if [ -z "$DEV_STATUS_SELECTED" ] ; then
-		if [[ "$DEV_CHECK" == "RC1"  ||  "$DEV_CHECK" == "RC2" ]] ; then
+		if [[ "$DEV_CHECK" == *"RC"* ]] ; then
 			DEV_STATUS="RC"
 		elif [[ "$DEV_CHECK" == "ALPHA" ]]; then
 			DEV_STATUS="ALPHA"
@@ -675,6 +688,8 @@ do
 		./lang-build.sh || exit 32
 		# Combine compiled firmware with languages 
 		./fw-build.sh || exit 33
+		cp not_tran.txt not_tran_$VARIANT.txt
+		cp not_used.txt not_used_$VARIANT.txt
 		echo "$(tput sgr 0)"
 		# Check if the motherboard is an EINSY and if so only one hex file will generated
 		MOTHERBOARD=$(grep --max-count=1 "\bMOTHERBOARD\b" $SCRIPT_PATH/Firmware/variants/$VARIANT.h | sed -e's/  */ /g' |cut -d ' ' -f3)
@@ -709,6 +724,22 @@ do
 
 	# Cleanup Firmware
 	rm $SCRIPT_PATH/Firmware/Configuration_prusa.h || exit 36
+	if find $SCRIPT_PATH/lang/ -name '*RAMBo10a*.txt' -printf 1 -quit | grep -q 1
+	then
+		rm $SCRIPT_PATH/lang/*RAMBo10a*.txt
+	fi
+	if find $SCRIPT_PATH/lang/ -name '*MK2-RAMBo13a*' -printf 1 -quit | grep -q 1
+	then
+		rm $SCRIPT_PATH/lang/*MK2-RAMBo13a*.txt
+	fi
+	if find $SCRIPT_PATH/lang/ -name 'not_tran.txt' -printf 1 -quit | grep -q 1
+	then
+		rm $SCRIPT_PATH/lang/not_tran.txt
+	fi
+	if find $SCRIPT_PATH/lang/ -name 'not_used.txt' -printf 1 -quit | grep -q 1
+	then
+		rm $SCRIPT_PATH/lang/not_used.txt
+	fi
 	sed -i -- "s/^#define FW_DEV_VERSION FW_VERSION_$DEV_STATUS/#define FW_DEV_VERSION FW_VERSION_UNKNOWN/g" $SCRIPT_PATH/Firmware/Configuration.h
 	sed -i -- 's/^#define FW_REPOSITORY "Prusa3d"/#define FW_REPOSITORY "Unknown"/g' $SCRIPT_PATH/Firmware/Configuration.h
 	echo $MULTI_LANGUAGE_CHECK

+ 221 - 198
README.md

@@ -1,198 +1,221 @@
-# Table of contents
-
-<!--ts-->
-   * [Linux build](#linux)
-   * Windows build
-     * [Using Arduino](#using-arduino)
-     * [Using Linux subsystem](#using-linux-subsystem-under-windows-10-64-bit)
-     * [Using Git-bash](#using-git-bash-under-windows-10-64-bit)
-   * [Automated tests](#3-automated-tests)
-   * [Documentation](#4-documentation)
-   * [FAQ](#5-faq)
-<!--te-->
-
-
-# Build
-## Linux
-
-1. Clone this repository and checkout the correct branch for your desired release version.
-
-2. Set your printer model. 
-   - For MK3 --> skip to step 3. 
-   - If you have a different printer model, follow step [2.b](#2b) from Windows build
-   
-3. Run `sudo ./build.sh`
-   - Output hex file is at `"PrusaFirmware/lang/firmware.hex"` . In the same folder you can hex files for other languages as well.
-
-4. Connect your printer and flash with PrusaSlicer ( Configuration --> Flash printer firmware ) or Slic3r PE.
-   - If you wish to flash from Arduino, follow step [2.c](#2c) from Windows build first.
-
-
-_Notes:_
-
-The script downloads Arduino with our modifications and Rambo board support installed, unpacks it into folder `PF-build-env-\<version\>` on the same level, as your Prusa-Firmware folder is located, builds firmware for MK3 using that Arduino in Prusa-Firmware-build folder on the same level as Prusa-Firmware, runs secondary language support scripts. Firmware with secondary language support is generated in lang subfolder. Use firmware.hex for MK3 variant. Use `firmware_\<lang\>.hex` for other printers. Don't forget to follow step [2.b](#2b) first for non-MK3 printers.
-
-## Windows
-### Using Arduino
-_Note: Multi language build is not supported._
-
-#### 1. Development environment preparation
-
-**a.** Install `"Arduino Software IDE"` from the official website `https://www.arduino.cc -> Software->Downloads` 
-   
-   _It is recommended to use version `"1.8.5"`, as it is used on out build server to produce official builds._
-
-**b.** Setup Arduino to use Prusa Rambo board definition
-
-* Open Arduino and navigate to File -> Preferences -> Settings
-* To the text field `"Additional Boards Manager URLSs"` add `https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json`
-* Open Board manager (`Tools->Board->Board manager`), and install `Prusa Research AVR MK3 RAMBo EINSy board`
-
-**c.** Modify compiler flags in `platform.txt` file
-     
-* The platform.txt file can be found in Arduino instalation directory, or after Arduino has been updated at: `"C:\Users\(user)\AppData\Local\Arduino15\packages\arduino\hardware\avr\(version)"` If you can locate the file in both places, file from user profile is probably used.
-       
-* Add `"-Wl,-u,vfprintf -lprintf_flt -lm"` to `"compiler.c.elf.flags="` before existing flag "-Wl,--gc-sections"  
-
-    For example:  `"compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections"`
-   
-_Notes:_
-
-
-_In the case of persistent compilation problems, check the version of the currently used C/C++ compiler (GCC) - should be at leas `4.8.1`; 
-If you are not sure where the file is placed (depends on how `"Arduino Software IDE"` was installed), you can use the search feature within the file system_
-
-_Name collision for `"LiquidCrystal"` library known from previous versions is now obsolete (so there is no need to delete or rename original file/-s)_
-
-#### 2. Source code compilation
-
-**a.** Clone this repository`https://github.com/prusa3d/Prusa-Firmware/` to your local drive.
-
-**b.**<a name="2b"></a> 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 it into `"Firmware/"` directory.  
-
-**c.**<a name="2c"></a> In file `"Firmware/config.h"` set LANG_MODE to 0.
-
-**d.** Run `"Arduino IDE"`; select the file `"Firmware.ino"` from the subdirectory `"Firmware/"` at the location, where you placed the source code `File->Open` Make the desired code customizations; **all changes are on your own risk!**  
-
-**e.** Select the target board `"Tools->Board->PrusaResearch Einsy RAMBo"`  
-
-**f.** Run the compilation `Sketch->Verify/Compile`  
-
-**g.** Upload the result code into the connected printer `Sketch->Upload`  
-
-* 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/"`_  
-
-### Using Linux subsystem under Windows 10 64-bit
-_notes: Script and instructions contributed by 3d-gussner. Use at your own risk. Script downloads Arduino executables outside of Prusa control. Report problems [there.](https://github.com/3d-gussner/Prusa-Firmware/issues) Multi language build is supported._
-- follow the Microsoft guide https://docs.microsoft.com/en-us/windows/wsl/install-win10
-  You can also use the 'prepare_winbuild.ps1' powershell script with Administrator rights
-- Tested versions are at this moment
-  - Ubuntu other may different
-  - After the installation and reboot please open your Ubuntu bash and do following steps
-  - run command `apt-get update`
-  - to install zip run `apt-get install zip`
-  - add few lines at the top of `~/.bashrc` by running `sudo nano ~/.bashrc`
-	
-	export OS="Linux"
-	export JAVA_TOOL_OPTIONS="-Djava.net.preferIPv4Stack=true"
-	export GPG_TTY=$(tty)
-	
-	use `CRTL-X` to close nano and confirm to write the new entries
-  - restart Ubuntu bash
-Now your Ubuntu subsystem is ready to use the automatic `PF-build.sh` script and compile your firmware correctly
-
-#### Some Tips for Ubuntu
-- Linux is case sensetive so please don't forget to use capital letters where needed, like changing to a directory
-- To change the path to your Prusa-Firmware location you downloaded and unzipped
-  - Example: You files are under `C:\Users\<your-username>\Downloads\Prusa-Firmware-MK3`
-  - use under Ubuntu the following command `cd /mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3`
-    to change to the right folder
-- Unix and windows have different line endings (LF vs CRLF), try dos2unix to convert
-  - This should fix the `"$'\r': command not found"` error
-  - to install run `apt-get install dos2unix`
-- If your Windows isn't in English the Paths may look different
-  Example in other languages
-  - English `/mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender/<your-username>/Downloads/Prusa-Firmware-MK3`
-#### Compile Prusa-firmware with Ubuntu Linux subsystem installed
-- open Ubuntu bash
-- change to your source code folder (case sensitive)
-- run `./PF-build.sh`
-- follow the instructions
-
-### Using Git-bash under Windows 10 64-bit
-_notes: Script and instructions contributed by 3d-gussner. Use at your own risk. Script downloads Arduino executables outside of Prusa control. Report problems [there.](https://github.com/3d-gussner/Prusa-Firmware/issues) Multi language build is supported._
-- Download and install the 64bit Git version https://git-scm.com/download/win
-- Also follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058
-- Download and install 7z-zip from its official website https://www.7-zip.org/
-  By default, it is installed under the directory /c/Program\ Files/7-Zip in Windows 10
-- Run `Git-Bash` under Administrator privilege
-- navigate to the directory /c/Program\ Files/Git/mingw64/bin
-- run `ln -s /c/Program\ Files/7-Zip/7z.exe zip.exe`
-- If your Windows isn't in English the Paths may look different
-  Example in other languages
-  - English `/mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender/<your-username>/Downloads/Prusa-Firmware-MK3`
-  - English `ln -s /c/Program\ Files/7-Zip/7z.exe zip.exe` will be on a Spanish Windows `ln -s /c/Archivos\ de\ programa/7-Zip/7z.exe zip.exe`
-#### Compile Prusa-firmware with Git-bash installed
-- open Git-bash
-- change to your source code folder
-- run `bash PF-build.sh`
-- follow the instructions
-
-
-# 3. Automated tests
-## Prerequisites
-* c++11 compiler e.g. g++ 6.3.1
-* cmake
-* build system - ninja or gnu make
-
-## Building
-Create a folder where you want to build tests.
-
-Example:
-
-`cd ..`
-
-`mkdir Prusa-Firmware-test`
-
-Generate build scripts in target folder.
-
-Example:
-
-`cd Prusa-Firmware-test`
-
-`cmake -G "Eclipse CDT4 - Ninja" ../Prusa-Firmware`
-
-or for DEBUG build:
-
-`cmake -G "Eclipse CDT4 - Ninja" -DCMAKE_BUILD_TYPE=Debug ../Prusa-Firmware`
-
-Build it.
-
-Example:
-
-`ninja`
-
-## Runing
-`./tests`
-
-# 4. Documentation
-run [doxygen](http://www.doxygen.nl/) in Firmware folder
-or visit https://prusa3d.github.io/Prusa-Firmware-Doc for doxygen generated output
-
-# 5. FAQ
-Q:I built firmware using Arduino and I see "?" instead of numbers in printer user interface.
-
-A:Step 1.c was ommited or you updated Arduino and now platform.txt located somewhere in your user profile is used.
-
-Q:I built firmware using Arduino and printer now speaks Klingon (nonsense characters and symbols are displayed @^#$&*°;~ÿ)
-
-A:Step 2.c was omitted.
-
-Q:What environment does Prusa use to build the firmware in the first place?
-
-A:Our production builds are 99.9% equivalent to https://github.com/prusa3d/Prusa-Firmware#linux this is also easiest way to build as only one step is needed - run single script, which downloads patched Arduino from github, builds using it, then extracts translated strings and creates language variants (for MK2x) or language hex file for external SPI flash (MK3x). But you need Linux or Linux in virtual machine. This is also what happens when you open pull request to our repository - all variants are built by Travis http://travis-ci.org/ (to check for compilation errors). You can see, what is happening in .travis.yml. It would be also possible to get hex built by travis, only deploy step is missing in .travis.yml. You can get inspiration how to deploy hex by travis and how to setup travis in https://github.com/prusa3d/MM-control-01/ repository. Final hex is located in ./lang/firmware.hex Community reproduced this for Windows in https://github.com/prusa3d/Prusa-Firmware#using-linux-subsystem-under-windows-10-64-bit or https://github.com/prusa3d/Prusa-Firmware#using-git-bash-under-windows-10-64-bit .
-
-Q:Why are build instructions for Arduino mess.
-
-Y:We are too lazy to ship proper board definition for Arduino. We plan to swich to cmake + ninja to be inherently multiplatform, easily integrate build tools, suport more IDEs, get 10 times shorter build times and be able to update compiler whenewer we want.
+# Prusa Firmware MK3
+
+This repository contains the source code and the development versions of the firmware running on the [Original Prusa i3](https://prusa3d.com/) MK3S/MK3/MK2.5S/MK2.5 line of printers.
+
+The latest official builds can be downloaded from [Prusa Drivers](https://www.prusa3d.com/drivers/). Pre-built development releases are also [available here](https://github.com/prusa3d/Prusa-Firmware/releases).
+
+The firmware for the Original Prusa i3 printers is proudly based on [Marlin 1.0.x](https://github.com/MarlinFirmware/Marlin/) by Scott Lahteine (@thinkyhead) et al. and is distributed under the terms of the [GNU GPL 3 license](LICENSE).
+
+
+# Table of contents
+
+<!--ts-->
+   * [Linux build](#linux)
+   * Windows build
+     * [Using Arduino](#using-arduino)
+     * [Using Linux subsystem](#using-linux-subsystem-under-windows-10-64-bit)
+     * [Using Git-bash](#using-git-bash-under-windows-10-64-bit)
+   * [Automated tests](#3-automated-tests)
+   * [Documentation](#4-documentation)
+   * [FAQ](#5-faq)
+<!--te-->
+
+
+# Build
+## Linux
+
+1. Clone this repository and checkout the correct branch for your desired release version.
+
+1. Set your printer model. 
+   - For MK3 --> skip to step 3. 
+   - If you have a different printer model, follow step [2.b](#2b) from Windows build
+1. Install GNU AWK  `sudo apt-get install gawk`  
+If you use mawk instead of gawk you get strange errors when multi language support is generated like:  
+`awk: line 2: function strtonum never defined
+sed: couldn't write 4 items to stdout: Broken pipe
+./lang-build.sh: 121: ./lang-build.sh: arithmetic expression: expecting EOF: "0x"awk: line 2: function strtonum never defined
+sed: couldn't write 4 items to stdout: Broken pipe
+tr: write error: Broken pipe
+./lang-build.sh: 121: ./lang-build.sh: arithmetic expression: expecting EOF: "0x"awk: line 2: function strtonum never defined
+sed: couldn't write 4 items to stdout: Broken pipe
+tr: write error: Broken pipe
+tr: write error
+cut: write error: Broken pipeNG! - some texts not found in lang_en.txt! updating binary:
+  primary language ids...awk: line 2: function strtonum never defined
+sed: couldn't flush stdout: Broken pipe`
+   
+1. Run `./build.sh`
+   - Output hex file is at `"PrusaFirmware/lang/firmware.hex"` . In the same folder you can hex files for other languages as well.
+
+1. Connect your printer and flash with PrusaSlicer ( Configuration --> Flash printer firmware ) or Slic3r PE.
+   - If you wish to flash from Arduino, follow step [2.c](#2c) from Windows build first.
+
+
+_Notes:_
+
+The script downloads Arduino with our modifications and Rambo board support installed, unpacks it into folder `PF-build-env-\<version\>` on the same level, as your Prusa-Firmware folder is located, builds firmware for MK3 using that Arduino in Prusa-Firmware-build folder on the same level as Prusa-Firmware, runs secondary language support scripts. Firmware with secondary language support is generated in lang subfolder. Use firmware.hex for MK3 variant. Use `firmware_\<lang\>.hex` for other printers. Don't forget to follow step [2.b](#2b) first for non-MK3 printers.
+
+## Windows
+### Using Arduino
+_Note: Multi language build is not supported._
+
+#### 1. Development environment preparation
+
+**a.** Install `"Arduino Software IDE"` from the official website `https://www.arduino.cc -> Software->Downloads` 
+   
+   _It is recommended to use version `"1.8.5"`, as it is used on out build server to produce official builds._
+
+**b.** Setup Arduino to use Prusa Rambo board definition
+
+* Open Arduino and navigate to File -> Preferences -> Settings
+* To the text field `"Additional Boards Manager URLSs"` add `https://raw.githubusercontent.com/prusa3d/Arduino_Boards/master/IDE_Board_Manager/package_prusa3d_index.json`
+* Open Board manager (`Tools->Board->Board manager`), and install `Prusa Research AVR Boards by Prusa Research`
+
+**c.** Modify compiler flags in `platform.txt` file
+     
+* The platform.txt file can be found in Arduino instalation directory, or after Arduino has been updated at: `"C:\Users\(user)\AppData\Local\Arduino15\packages\arduino\hardware\avr\(version)"` If you can locate the file in both places, file from user profile is probably used.
+       
+* Add `"-Wl,-u,vfprintf -lprintf_flt -lm"` to `"compiler.c.elf.flags="` before existing flag "-Wl,--gc-sections"  
+
+    For example:  `"compiler.c.elf.flags=-w -Os -Wl,-u,vfprintf -lprintf_flt -lm -Wl,--gc-sections"`
+   
+_Notes:_
+
+
+_In the case of persistent compilation problems, check the version of the currently used C/C++ compiler (GCC) - should be at leas `4.8.1`; 
+If you are not sure where the file is placed (depends on how `"Arduino Software IDE"` was installed), you can use the search feature within the file system_
+
+_Name collision for `"LiquidCrystal"` library known from previous versions is now obsolete (so there is no need to delete or rename original file/-s)_
+
+#### 2. Source code compilation
+
+**a.** Clone this repository`https://github.com/prusa3d/Prusa-Firmware/` to your local drive.
+
+**b.**<a name="2b"></a> 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 it into `"Firmware/"` directory.  
+
+**c.**<a name="2c"></a> In file `"Firmware/config.h"` set LANG_MODE to 0.
+
+**d.** Run `"Arduino IDE"`; select the file `"Firmware.ino"` from the subdirectory `"Firmware/"` at the location, where you placed the source code `File->Open` Make the desired code customizations; **all changes are on your own risk!**  
+
+**e.** Select the target board `"Tools->Board->PrusaResearch Einsy RAMBo"`  
+
+**f.** Run the compilation `Sketch->Verify/Compile`  
+
+**g.** Upload the result code into the connected printer `Sketch->Upload`  
+
+* 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/"`_  
+
+### Using Linux subsystem under Windows 10 64-bit
+_notes: Script and instructions contributed by 3d-gussner. Use at your own risk. Script downloads Arduino executables outside of Prusa control. Report problems [there.](https://github.com/3d-gussner/Prusa-Firmware/issues) Multi language build is supported._
+- follow the Microsoft guide https://docs.microsoft.com/en-us/windows/wsl/install-win10
+  You can also use the 'prepare_winbuild.ps1' powershell script with Administrator rights
+- Tested versions are at this moment
+  - Ubuntu other may different
+  - After the installation and reboot please open your Ubuntu bash and do following steps
+  - run command `apt-get update`
+  - to install zip run `apt-get install zip`
+  - add few lines at the top of `~/.bashrc` by running `sudo nano ~/.bashrc`
+	
+	export OS="Linux"
+	export JAVA_TOOL_OPTIONS="-Djava.net.preferIPv4Stack=true"
+	export GPG_TTY=$(tty)
+	
+	use `CRTL-X` to close nano and confirm to write the new entries
+  - restart Ubuntu bash
+Now your Ubuntu subsystem is ready to use the automatic `PF-build.sh` script and compile your firmware correctly
+
+#### Some Tips for Ubuntu
+- Linux is case sensetive so please don't forget to use capital letters where needed, like changing to a directory
+- To change the path to your Prusa-Firmware location you downloaded and unzipped
+  - Example: You files are under `C:\Users\<your-username>\Downloads\Prusa-Firmware-MK3`
+  - use under Ubuntu the following command `cd /mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3`
+    to change to the right folder
+- Unix and windows have different line endings (LF vs CRLF), try dos2unix to convert
+  - This should fix the `"$'\r': command not found"` error
+  - to install run `apt-get install dos2unix`
+- If your Windows isn't in English the Paths may look different
+  Example in other languages
+  - English `/mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender/<your-username>/Downloads/Prusa-Firmware-MK3`
+#### Compile Prusa-firmware with Ubuntu Linux subsystem installed
+- open Ubuntu bash
+- change to your source code folder (case sensitive)
+- run `./PF-build.sh`
+- follow the instructions
+
+### Using Git-bash under Windows 10 64-bit
+_notes: Script and instructions contributed by 3d-gussner. Use at your own risk. Script downloads Arduino executables outside of Prusa control. Report problems [there.](https://github.com/3d-gussner/Prusa-Firmware/issues) Multi language build is supported._
+- Download and install the 64bit Git version https://git-scm.com/download/win
+- Also follow these instructions https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058
+- Download and install 7z-zip from its official website https://www.7-zip.org/
+  By default, it is installed under the directory /c/Program\ Files/7-Zip in Windows 10
+- Run `Git-Bash` under Administrator privilege
+- navigate to the directory /c/Program\ Files/Git/mingw64/bin
+- run `ln -s /c/Program\ Files/7-Zip/7z.exe zip.exe`
+- If your Windows isn't in English the Paths may look different
+  Example in other languages
+  - English `/mnt/c/Users/<your-username>/Downloads/Prusa-Firmware-MK3` will be on a German Windows`/mnt/c/Anwender/<your-username>/Downloads/Prusa-Firmware-MK3`
+  - English `ln -s /c/Program\ Files/7-Zip/7z.exe zip.exe` will be on a Spanish Windows `ln -s /c/Archivos\ de\ programa/7-Zip/7z.exe zip.exe`
+#### Compile Prusa-firmware with Git-bash installed
+- open Git-bash
+- change to your source code folder
+- run `bash PF-build.sh`
+- follow the instructions
+
+
+# 3. Automated tests
+## Prerequisites
+* c++11 compiler e.g. g++ 6.3.1
+* cmake
+* build system - ninja or gnu make
+
+## Building
+Create a folder where you want to build tests.
+
+Example:
+
+`cd ..`
+
+`mkdir Prusa-Firmware-test`
+
+Generate build scripts in target folder.
+
+Example:
+
+`cd Prusa-Firmware-test`
+
+`cmake -G "Eclipse CDT4 - Ninja" ../Prusa-Firmware`
+
+or for DEBUG build:
+
+`cmake -G "Eclipse CDT4 - Ninja" -DCMAKE_BUILD_TYPE=Debug ../Prusa-Firmware`
+
+Build it.
+
+Example:
+
+`ninja`
+
+## Running
+`./tests`
+
+# 4. Documentation
+run [doxygen](http://www.doxygen.nl/) in Firmware folder
+or visit https://prusa3d.github.io/Prusa-Firmware-Doc for doxygen generated output
+
+# 5. FAQ
+Q:I built firmware using Arduino and I see "?" instead of numbers in printer user interface.
+
+A:Step 1.c was ommited or you updated Arduino and now platform.txt located somewhere in your user profile is used.
+
+Q:I built firmware using Arduino and printer now speaks Klingon (nonsense characters and symbols are displayed @^#$&*°;~ÿ)
+
+A:Step 2.c was omitted.
+
+Q:What environment does Prusa use to build the firmware in the first place?
+
+A:Our production builds are 99.9% equivalent to https://github.com/prusa3d/Prusa-Firmware#linux this is also easiest way to build as only one step is needed - run single script, which downloads patched Arduino from github, builds using it, then extracts translated strings and creates language variants (for MK2x) or language hex file for external SPI flash (MK3x). But you need Linux or Linux in virtual machine. This is also what happens when you open pull request to our repository - all variants are built by Travis http://travis-ci.org/ (to check for compilation errors). You can see, what is happening in .travis.yml. It would be also possible to get hex built by travis, only deploy step is missing in .travis.yml. You can get inspiration how to deploy hex by travis and how to setup travis in https://github.com/prusa3d/MM-control-01/ repository. Final hex is located in ./lang/firmware.hex Community reproduced this for Windows in https://github.com/prusa3d/Prusa-Firmware#using-linux-subsystem-under-windows-10-64-bit or https://github.com/prusa3d/Prusa-Firmware#using-git-bash-under-windows-10-64-bit .
+
+Q:Why are build instructions for Arduino mess.
+
+Y:We are too lazy to ship proper board definition for Arduino. We plan to swich to cmake + ninja to be inherently multiplatform, easily integrate build tools, suport more IDEs, get 10 times shorter build times and be able to update compiler whenewer we want.

+ 3 - 2
build.sh

@@ -1,5 +1,5 @@
 #!/bin/bash 
-BUILD_ENV="1.0.6"
+BUILD_ENV="1.0.6.1"
 SCRIPT_PATH="$( cd "$(dirname "$0")" ; pwd -P )"
 
 if [ ! -d "build-env" ]; then
@@ -8,7 +8,8 @@ fi
 cd build-env || exit 2
 
 if [ ! -f "PF-build-env-Linux64-$BUILD_ENV.zip" ]; then
-    wget https://github.com/mkbel/PF-build-env/releases/download/$BUILD_ENV/PF-build-env-Linux64-$BUILD_ENV.zip || exit 3
+    #wget https://github.com/3d-gussner/PF-build-env-1/releases/download/$BUILD_ENV-Linux64/PF-build-env-Linux64-$BUILD_ENV.zip || exit 3
+	wget https://github.com/prusa3d/PF-build-env/releases/download/$BUILD_ENV-Linux64/PF-build-env-Linux64-$BUILD_ENV.zip || exit 3
 fi
 
 if [ ! -d "../../PF-build-env-$BUILD_ENV" ]; then

+ 1 - 1
lang/lang-add.sh

@@ -70,5 +70,5 @@ cat lang_add.txt | sed 's/^/"/;s/$/"/' | while read new_s; do
 	fi
 done
 
-read x
+read -t 5
 exit 0

+ 1 - 1
lang/lang-check.sh

@@ -71,5 +71,5 @@ else
  echo 'binary data NG!'
 fi
 
-read
+read -t 5
 exit

+ 121 - 35
lang/lang_en.txt

@@ -1,6 +1,12 @@
 #
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 
+#MSG_03_OR_OLDER c=18
+" 0.3 or older"
+
+#MSG_04_OR_NEWER c=18
+" 0.4 or newer"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 
@@ -31,7 +37,10 @@
 #
 "Ambient"
 
-#MSG_PRESS c=20
+#MSG_AUTO c=6
+"Auto"
+
+#MSG_PRESS c=20 r=2
 "and press the knob"
 
 #MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
@@ -43,7 +52,7 @@
 #MSG_AUTO_HOME
 "Auto home"
 
-#MSG_AUTOLOAD_FILAMENT c=17
+#MSG_AUTOLOAD_FILAMENT c=18
 "AutoLoad filament"
 
 #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
@@ -70,13 +79,22 @@
 #MSG_BED_CORRECTION_MENU
 "Bed level correct"
 
-#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#MSG_BELTTEST c=17
+"Belt test        "
+
+#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 
+#MSG_BRIGHT c=6
+"Bright"
+
+#MSG_BRIGHTNESS c=18
+"Brightness"
+
 #MSG_BED
 "Bed"
 
-#MSG_MENU_BELT_STATUS c=15 r=1
+#MSG_MENU_BELT_STATUS c=18
 "Belt status"
 
 #MSG_RECOVER_PRINT c=20 r=2
@@ -124,8 +142,9 @@
 #
 "Copy selected language?"
 
-#MSG_CRASHDETECT
+#MSG_CRASHDETECT c=13
 "Crash det."
+
 #
 "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 
@@ -150,10 +169,13 @@
 #MSG_BABYSTEP_Z_NOT_SET c=20 r=12
 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 
+#MSG_FS_CONTINUE c=5
+"Cont."
+
 #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
 "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 
-#MSG_EXTRUDER_CORRECTION c=10
+#MSG_EXTRUDER_CORRECTION c=13
 "E-correct:"
 
 #MSG_EJECT_FILAMENT c=17 r=1
@@ -162,7 +184,7 @@
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
 
-#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
 "Endstop not hit"
 
 #MSG_SELFTEST_ENDSTOP
@@ -174,16 +196,28 @@
 #MSG_STACK_ERROR c=20 r=4
 "Error - static memory has been overwritten"
 
+#MSG_CUT_FILAMENT c=16
+"Cut filament"
+
+#MSG_CUTTER c=9
+"Cutter"
+
+# c=18
+"Cutting filament"
+
 #MSG_FSENS_NOT_RESPONDING c=20 r=4
 "ERROR: Filament sensor is not responding, please check connection."
 
+#MSG_DIM c=6
+"Dim"
+
 #MSG_ERROR
 "ERROR:"
 
 #MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
 "Extruder fan:"
 
-#MSG_INFO_EXTRUDER c=15 r=1
+#MSG_INFO_EXTRUDER c=18
 "Extruder info"
 
 #MSG_MOVE_E
@@ -192,7 +226,7 @@
 #
 "Fail stats MMU"
 
-#MSG_FSENSOR_AUTOLOAD
+#MSG_FSENSOR_AUTOLOAD c=13
 "F. autoload"
 
 #
@@ -210,7 +244,7 @@
 #MSG_FSENSOR
 "Fil. sensor"
 
-#
+# c=14
 "Filam. runouts"
 
 #MSG_FILAMENT_CLEAN c=20 r=2
@@ -222,19 +256,25 @@
 #MSG_FILAMENT_SENSOR c=20
 "Filament sensor"
 
-#MSG_FILAMENT_USED c=19 r=1
+#MSG_FILAMENT_USED c=19
 "Filament used"
 
 #MSG_PRINT_TIME c=19 r=1
 "Print time"
 
-#MSG_FILE_INCOMPLETE c=20 r=2
+#MSG_FS_ACTION c=10
+"FS Action"
+
+# c=18
+"FS v0.4 or newer"
+
+#MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 
-#MSG_FINISHING_MOVEMENTS c=20 r=1
+#MSG_FINISHING_MOVEMENTS c=20
 "Finishing movements"
 
-#MSG_V2_CALIBRATION c=17 r=1
+#MSG_V2_CALIBRATION c=18
 "First layer cal."
 
 #MSG_WIZARD_SELFTEST c=20 r=8
@@ -357,6 +397,9 @@
 #MSG_BABYSTEP_Z
 "Live adjust Z"
 
+# c=20 r=6
+"Insert the filament (do not load it) into the extruder and then press the knob."
+
 #MSG_LOAD_FILAMENT c=17
 "Load filament"
 
@@ -372,12 +415,18 @@
 #
 "Load to nozzle"
 
-#MSG_M117_V2_CALIBRATION c=25 r=1
+#MSG_M117_V2_CALIBRATION c=25
 "M117 First layer cal."
 
 #MSG_MAIN
 "Main"
 
+#MSG_BL_HIGH c=12
+"Level Bright"
+
+#MSG_BL_LOW c=12
+"Level Dimmed"
+
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
 
@@ -408,6 +457,9 @@
 #MSG_MODE
 "Mode"
 
+# c=20 r=3
+"MK3 firmware detected on MK3S printer"
+
 #MSG_NORMAL
 "Normal"
 
@@ -477,7 +529,7 @@
 #MSG_NOZZLE
 "Nozzle"
 
-#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
 "Old settings found. Default PID, Esteps etc. will be set."
 
 #
@@ -501,7 +553,7 @@
 #MSG_PINDA_PREHEAT c=20 r=1
 "PINDA Heating"
 
-#MSG_PAPER c=20 r=8
+#MSG_PAPER c=20 r=10
 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 
 #MSG_WIZARD_CLEAN_HEATBED c=20 r=8
@@ -555,22 +607,28 @@
 #MSG_WIZARD_HEATING c=20 r=3
 "Preheating nozzle. Please wait."
 
+# c=14
+"PINDA"
+
 #
 "Please upgrade."
 
 #MSG_PRESS_TO_PREHEAT c=20 r=4
 "Press knob to preheat nozzle and continue."
 
+#MSG_FS_PAUSE c=5
+"Pause"
+
 #
 "Power failures"
 
 #MSG_PRINT_ABORTED c=20
 "Print aborted"
 
-#
+# c=20
 "Preheating to load"
 
-#
+# c=20
 "Preheating to unload"
 
 #MSG_SELFTEST_PRINT_FAN_SPEED c=18
@@ -609,13 +667,16 @@
 #MSG_BED_CORRECTION_REAR c=14 r=1
 "Rear side [um]"
 
-#MSG_RECOVERING_PRINT c=20 r=1
+# c=20 r=4
+"Please unload the filament first, then repeat this action."
+
+#MSG_RECOVERING_PRINT c=20
 "Recovering print    "
 
-#MSG_REMOVE_OLD_FILAMENT c=20 r=4
+#MSG_REMOVE_OLD_FILAMENT c=20 r=5
 "Remove old filament and press the knob to start loading new filament."
 
-#
+# c=20
 "Prusa i3 MK3S OK."
 
 #MSG_CALIBRATE_BED_RESET
@@ -627,7 +688,7 @@
 #MSG_RESUME_PRINT
 "Resume print"
 
-#MSG_RESUMING_PRINT c=20 r=1
+#MSG_RESUMING_PRINT c=20
 "Resuming print"
 
 #MSG_BED_CORRECTION_RIGHT c=14 r=1
@@ -678,16 +739,25 @@
 #MSG_SET_TEMPERATURE c=19 r=1
 "Set temperature:"
 
+# c=20
+"Prusa i3 MK2.5 OK."
+
+# c=20
+"Prusa i3 MK2.5S OK."
+
+# c=20
+"Prusa i3 MK3 OK."
+
 #MSG_SETTINGS
 "Settings"
 
-#MSG_SHOW_END_STOPS c=17 r=1
+#MSG_SHOW_END_STOPS c=18
 "Show end stops"
 
 #
 "Sensor state"
 
-#MSG_FILE_CNT c=20 r=4
+#MSG_FILE_CNT c=20 r=6
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 
 #MSG_SORT
@@ -717,6 +787,9 @@
 #MSG_SOUND
 "Sound"
 
+# c=7
+"Runouts"
+
 #
 "Some problem encountered, Z-leveling enforced ..."
 
@@ -750,7 +823,7 @@
 #
 "Select filament:"
 
-#MSG_TEMP_CALIBRATION c=12 r=1
+#MSG_TEMP_CALIBRATION c=14
 "Temp. cal."
 
 #
@@ -765,13 +838,16 @@
 #MSG_TEMP_CALIBRATION_DONE c=20 r=12
 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 
+# c=20 r=3
+"Sensor verified, remove the filament now."
+
 #MSG_TEMPERATURE
 "Temperature"
 
 #MSG_MENU_TEMPERATURES c=15 r=1
 "Temperatures"
 
-#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
+#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 
 #
@@ -843,7 +919,7 @@
 #MSG_WIZARD c=17 r=1
 "Wizard"
 
-#MSG_XYZ_DETAILS c=19 r=1
+#MSG_XYZ_DETAILS c=18
 "XYZ cal. details"
 
 #MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
@@ -861,7 +937,10 @@
 #MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 
-#
+#MSG_TIMEOUT c=12
+"Timeout"
+
+#MSG_X_CORRECTION c=13
 "X-correct:"
 
 #MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
@@ -891,7 +970,10 @@
 #
 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 
-#
+# c=20 r=5
+"Verification failed, remove the filament and try again."
+
+#MSG_Y_CORRECTION c=13
 "Y-correct:"
 
 #MSG_OFF
@@ -972,10 +1054,10 @@
 #
 "PINDA:"
 
-#
+# c=20
 "Preheating to cut"
 
-#
+# c=20
 "Preheating to eject"
 
 #
@@ -984,6 +1066,9 @@
 #
 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 
+# c=20
+"%s level expected"
+
 #
 "Rename"
 
@@ -993,17 +1078,18 @@
 #
 "Sensor info"
 
-#
+#MSG_SHEET c=10
 "Sheet"
 
 #MSG_SOUND_BLIND
 "Assist"
 
-#
+# c=18
 "Steel sheets"
 
-#
+#MSG_Z_CORRECTION c=13
 "Z-correct:"
 
 #MSG_Z_PROBE_NR
 "Z-probe nr."
+

+ 153 - 40
lang/lang_en_cz.txt

@@ -2,6 +2,14 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
 
+#MSG_03_OR_OLDER c=18
+" 0.3 or older"
+" 0.3 nebo starsi"
+
+#MSG_04_OR_NEWER c=18
+" 0.4 or newer"
+" 0.4 nebo novejsi"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " z 4"
@@ -42,7 +50,11 @@
 "Ambient"
 "Okoli"
 
-#MSG_PRESS c=20
+#MSG_AUTO c=6
+"Auto"
+"\x00"
+
+#MSG_PRESS c=20 r=2
 "and press the knob"
 "a stisknete tlacitko"
 
@@ -58,7 +70,7 @@
 "Auto home"
 "\x00"
 
-#MSG_AUTOLOAD_FILAMENT c=17
+#MSG_AUTOLOAD_FILAMENT c=18
 "AutoLoad filament"
 "AutoZavedeni fil."
 
@@ -94,15 +106,27 @@
 "Bed level correct"
 "Korekce podlozky"
 
-#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#MSG_BELTTEST c=17
+"Belt test        "
+"Test remenu      "
+
+#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
 
+#MSG_BRIGHT c=6
+"Bright"
+"Jasny"
+
+#MSG_BRIGHTNESS c=18
+"Brightness"
+"Podsviceni"
+
 #MSG_BED
 "Bed"
 "Podlozka"
 
-#MSG_MENU_BELT_STATUS c=15 r=1
+#MSG_MENU_BELT_STATUS c=18
 "Belt status"
 "Stav remenu"
 
@@ -166,13 +190,13 @@
 "Copy selected language?"
 "Kopirovat vybrany jazyk?"
 
-#MSG_CRASHDETECT
+#MSG_CRASHDETECT c=13
 "Crash det."
 "\x00"
 
 #
-"Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
 "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+"Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
 
 #MSG_CRASH_DETECTED c=20 r=1
 "Crash detected."
@@ -202,11 +226,15 @@
 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
 
+#MSG_FS_CONTINUE c=5
+"Cont."
+"Pokr."
+
 #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
 "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
 
-#MSG_EXTRUDER_CORRECTION c=10
+#MSG_EXTRUDER_CORRECTION c=13
 "E-correct:"
 "Korekce E:"
 
@@ -218,7 +246,7 @@
 "Ejecting filament"
 "Vysouvam filament"
 
-#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
 "Endstop not hit"
 "Kon. spinac nesepnut"
 
@@ -234,9 +262,25 @@
 "Error - static memory has been overwritten"
 "Chyba - Doslo k prepisu staticke pameti!"
 
+#MSG_CUT_FILAMENT c=16
+"Cut filament"
+"Ustrihnout"
+
+#MSG_CUTTER c=9
+"Cutter"
+"Strihani"
+
+# c=18
+"Cutting filament"
+"Strihani filamentu"
+
 #MSG_FSENS_NOT_RESPONDING c=20 r=4
 "ERROR: Filament sensor is not responding, please check connection."
-"CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
+"CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni."
+
+#MSG_DIM c=6
+"Dim"
+"Temny"
 
 #MSG_ERROR
 "ERROR:"
@@ -246,7 +290,7 @@
 "Extruder fan:"
 "Levy vent.:"
 
-#MSG_INFO_EXTRUDER c=15 r=1
+#MSG_INFO_EXTRUDER c=18
 "Extruder info"
 "\x00"
 
@@ -258,7 +302,7 @@
 "Fail stats MMU"
 "Selhani MMU"
 
-#MSG_FSENSOR_AUTOLOAD
+#MSG_FSENSOR_AUTOLOAD c=13
 "F. autoload"
 "F. autozav."
 
@@ -282,7 +326,7 @@
 "Fil. sensor"
 "Fil. senzor"
 
-#
+# c=14
 "Filam. runouts"
 "Vypadky filam."
 
@@ -298,23 +342,31 @@
 "Filament sensor"
 "Senzor filamentu"
 
-#MSG_FILAMENT_USED c=19 r=1
+#MSG_FILAMENT_USED c=19
 "Filament used"
-"Spotrebovano filamentu"
+"Spotrebovano filam."
 
 #MSG_PRINT_TIME c=19 r=1
 "Print time"
 "Cas tisku"
 
-#MSG_FILE_INCOMPLETE c=20 r=2
+#MSG_FS_ACTION c=10
+"FS Action"
+"FS reakce"
+
+# c=18
+"FS v0.4 or newer"
+"FS v0.4 a novejsi"
+
+#MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Soubor nekompletni. Pokracovat?"
 
-#MSG_FINISHING_MOVEMENTS c=20 r=1
+#MSG_FINISHING_MOVEMENTS c=20
 "Finishing movements"
 "Dokoncovani pohybu"
 
-#MSG_V2_CALIBRATION c=17 r=1
+#MSG_V2_CALIBRATION c=18
 "First layer cal."
 "Kal. prvni vrstvy"
 
@@ -478,6 +530,10 @@
 "Live adjust Z"
 "Doladeni osy Z"
 
+# c=20 r=6
+"Insert the filament (do not load it) into the extruder and then press the knob."
+"Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko"
+
 #MSG_LOAD_FILAMENT c=17
 "Load filament"
 "Zavest filament"
@@ -498,7 +554,7 @@
 "Load to nozzle"
 "Zavest do trysky"
 
-#MSG_M117_V2_CALIBRATION c=25 r=1
+#MSG_M117_V2_CALIBRATION c=25
 "M117 First layer cal."
 "M117 Kal. prvni vrstvy"
 
@@ -506,6 +562,14 @@
 "Main"
 "Hlavni nabidka"
 
+#MSG_BL_HIGH c=12
+"Level Bright"
+"\x00"
+
+#MSG_BL_LOW c=12
+"Level Dimmed"
+"\x00"
+
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
 "Merim referencni vysku kalibracniho bodu"
@@ -546,6 +610,10 @@
 "Mode"
 "Mod"
 
+# c=20 r=3
+"MK3 firmware detected on MK3S printer"
+"\x00"
+
 #MSG_NORMAL
 "Normal"
 "\x00"
@@ -638,7 +706,7 @@
 "Nozzle"
 "Tryska"
 
-#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
 "Old settings found. Default PID, Esteps etc. will be set."
 "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
 
@@ -670,7 +738,7 @@
 "PINDA Heating"
 "Nahrivani PINDA"
 
-#MSG_PAPER c=20 r=8
+#MSG_PAPER c=20 r=10
 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu."
 
@@ -742,6 +810,10 @@
 "Preheating nozzle. Please wait."
 "Predehrev trysky. Prosim cekejte."
 
+# c=14
+"PINDA"
+"\x00"
+
 #
 "Please upgrade."
 "Prosim aktualizujte."
@@ -750,6 +822,10 @@
 "Press knob to preheat nozzle and continue."
 "Pro nahrati trysky a pokracovani stisknete tlacitko."
 
+#MSG_FS_PAUSE c=5
+"Pause"
+"\x00"
+
 #
 "Power failures"
 "Vypadky proudu"
@@ -758,11 +834,11 @@
 "Print aborted"
 "Tisk prerusen"
 
-#
+# c=20
 "Preheating to load"
 "Predehrev k zavedeni"
 
-#
+# c=20
 "Preheating to unload"
 "Predehrev k vyjmuti"
 
@@ -814,15 +890,19 @@
 "Rear side [um]"
 "Vzadu [um]"
 
-#MSG_RECOVERING_PRINT c=20 r=1
+# c=20 r=4
+"Please unload the filament first, then repeat this action."
+"Prosim vyjmete filament a zopakujte tuto akci"
+
+#MSG_RECOVERING_PRINT c=20
 "Recovering print    "
-"Obnovovani tisku "
+"Obnovovani tisku    "
 
-#MSG_REMOVE_OLD_FILAMENT c=20 r=4
+#MSG_REMOVE_OLD_FILAMENT c=20 r=5
 "Remove old filament and press the knob to start loading new filament."
 "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
 
-#
+# c=20
 "Prusa i3 MK3S OK."
 "\x00"
 
@@ -838,7 +918,7 @@
 "Resume print"
 "Pokracovat"
 
-#MSG_RESUMING_PRINT c=20 r=1
+#MSG_RESUMING_PRINT c=20
 "Resuming print"
 "Obnoveni tisku"
 
@@ -906,11 +986,23 @@
 "Set temperature:"
 "Nastavte teplotu:"
 
+# c=20
+"Prusa i3 MK2.5 OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK2.5S OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK3 OK."
+"\x00"
+
 #MSG_SETTINGS
 "Settings"
 "Nastaveni"
 
-#MSG_SHOW_END_STOPS c=17 r=1
+#MSG_SHOW_END_STOPS c=18
 "Show end stops"
 "Stav konc. spin."
 
@@ -918,7 +1010,7 @@
 "Sensor state"
 "Stav senzoru"
 
-#MSG_FILE_CNT c=20 r=4
+#MSG_FILE_CNT c=20 r=6
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
 
@@ -958,6 +1050,10 @@
 "Sound"
 "Zvuk"
 
+# c=7
+"Runouts"
+"\x00"
+
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Vyskytl se problem, srovnavam osu Z ..."
@@ -1002,7 +1098,7 @@
 "Select filament:"
 "Zvolte filament:"
 
-#MSG_TEMP_CALIBRATION c=12 r=1
+#MSG_TEMP_CALIBRATION c=14
 "Temp. cal."
 "Tepl. kal."
 
@@ -1022,6 +1118,10 @@
 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 "Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
 
+# c=20 r=3
+"Sensor verified, remove the filament now."
+"Senzor overen, vyjmete filament."
+
 #MSG_TEMPERATURE
 "Temperature"
 "Teplota"
@@ -1030,7 +1130,7 @@
 "Temperatures"
 "Teploty"
 
-#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
+#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
 
@@ -1126,7 +1226,7 @@
 "Wizard"
 "Pruvodce"
 
-#MSG_XYZ_DETAILS c=19 r=1
+#MSG_XYZ_DETAILS c=18
 "XYZ cal. details"
 "Detaily XYZ kal."
 
@@ -1150,7 +1250,11 @@
 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
 
-#
+#MSG_TIMEOUT c=12
+"Timeout"
+"\x00"
+
+#MSG_X_CORRECTION c=13
 "X-correct:"
 "Korekce X:"
 
@@ -1190,7 +1294,11 @@
 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 "Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
 
-#
+# c=20 r=5
+"Verification failed, remove the filament and try again."
+"Overeni selhalo, vyjmete filament a zkuste znovu."
+
+#MSG_Y_CORRECTION c=13
 "Y-correct:"
 "Korekce Y:"
 
@@ -1298,11 +1406,11 @@
 "PINDA:"
 "\x00"
 
-#
+# c=20
 "Preheating to cut"
-"Predehrev k ustrizeni"
+"Predehrev ke strihu"
 
-#
+# c=20
 "Preheating to eject"
 "Predehrev k vysunuti"
 
@@ -1314,6 +1422,10 @@
 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 "Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
 
+# c=20
+"%s level expected"
+"\x00"
+
 #
 "Rename"
 "Prejmenovat"
@@ -1326,7 +1438,7 @@
 "Sensor info"
 "Senzor info"
 
-#
+#MSG_SHEET c=10
 "Sheet"
 "Plat"
 
@@ -1334,14 +1446,15 @@
 "Assist"
 "Asist."
 
-#
+# c=18
 "Steel sheets"
 "Tiskove platy"
 
-#
+#MSG_Z_CORRECTION c=13
 "Z-correct:"
 "Korekce Z:"
 
 #MSG_Z_PROBE_NR
 "Z-probe nr."
 "Pocet mereni Z"
+

+ 153 - 40
lang/lang_en_de.txt

@@ -2,6 +2,14 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
 
+#MSG_03_OR_OLDER c=18
+" 0.3 or older"
+" 0.3 oder aelter"
+
+#MSG_04_OR_NEWER c=18
+" 0.4 or newer"
+" 0.4 oder neuer"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " von 4"
@@ -42,7 +50,11 @@
 "Ambient"
 "Raumtemp."
 
-#MSG_PRESS c=20
+#MSG_AUTO c=6
+"Auto"
+"\x00"
+
+#MSG_PRESS c=20 r=2
 "and press the knob"
 "und Knopf druecken"
 
@@ -58,7 +70,7 @@
 "Auto home"
 "Startposition"
 
-#MSG_AUTOLOAD_FILAMENT c=17
+#MSG_AUTOLOAD_FILAMENT c=18
 "AutoLoad filament"
 "AutoLaden Filament"
 
@@ -94,15 +106,27 @@
 "Bed level correct"
 "Ausgleich Bett ok"
 
-#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#MSG_BELTTEST c=17
+"Belt test        "
+"Riementest       "
+
+#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
 
+#MSG_BRIGHT c=6
+"Bright"
+"Hell"
+
+#MSG_BRIGHTNESS c=18
+"Brightness"
+"Helligkeit"
+
 #MSG_BED
 "Bed"
 "Bett"
 
-#MSG_MENU_BELT_STATUS c=15 r=1
+#MSG_MENU_BELT_STATUS c=18
 "Belt status"
 "Gurtstatus"
 
@@ -166,7 +190,7 @@
 "Copy selected language?"
 "Gewaehlte Sprache kopieren?"
 
-#MSG_CRASHDETECT
+#MSG_CRASHDETECT c=13
 "Crash det."
 "Crash Erk."
 
@@ -202,11 +226,15 @@
 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 "Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
 
+#MSG_FS_CONTINUE c=5
+"Cont."
+"\x00"
+
 #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
 "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 "Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
 
-#MSG_EXTRUDER_CORRECTION c=10
+#MSG_EXTRUDER_CORRECTION c=13
 "E-correct:"
 "E-Korrektur:"
 
@@ -218,7 +246,7 @@
 "Ejecting filament"
 "werfe Filament aus"
 
-#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
 "Endstop not hit"
 "Ende nicht getroffen"
 
@@ -234,10 +262,26 @@
 "Error - static memory has been overwritten"
 "Fehler - statischer Speicher wurde ueberschrieben"
 
+#MSG_CUT_FILAMENT c=16
+"Cut filament"
+"Fil. schneiden"
+
+#MSG_CUTTER c=9
+"Cutter"
+"Messer"
+
+# c=18
+"Cutting filament"
+"Schneide filament"
+
 #MSG_FSENS_NOT_RESPONDING c=20 r=4
 "ERROR: Filament sensor is not responding, please check connection."
 "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
 
+#MSG_DIM c=6
+"Dim"
+"Dimm"
+
 #MSG_ERROR
 "ERROR:"
 "FEHLER:"
@@ -246,7 +290,7 @@
 "Extruder fan:"
 "Extruder Luefter:"
 
-#MSG_INFO_EXTRUDER c=15 r=1
+#MSG_INFO_EXTRUDER c=18
 "Extruder info"
 "Extruder Info"
 
@@ -258,7 +302,7 @@
 "Fail stats MMU"
 "MMU-Fehler"
 
-#MSG_FSENSOR_AUTOLOAD
+#MSG_FSENSOR_AUTOLOAD c=13
 "F. autoload"
 "F. autoladen"
 
@@ -280,9 +324,9 @@
 
 #MSG_FSENSOR
 "Fil. sensor"
-"\x00"
+"Fil. Sensor"
 
-#
+# c=14
 "Filam. runouts"
 "Filam. Maengel"
 
@@ -298,7 +342,7 @@
 "Filament sensor"
 "Filamentsensor"
 
-#MSG_FILAMENT_USED c=19 r=1
+#MSG_FILAMENT_USED c=19
 "Filament used"
 "Filament benutzt"
 
@@ -306,15 +350,23 @@
 "Print time"
 "Druckzeit"
 
-#MSG_FILE_INCOMPLETE c=20 r=2
+#MSG_FS_ACTION c=10
+"FS Action"
+"FS Aktion"
+
+# c=18
+"FS v0.4 or newer"
+"FS v0.4 oder neuer"
+
+#MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Datei unvollstaendig Trotzdem fortfahren?"
 
-#MSG_FINISHING_MOVEMENTS c=20 r=1
+#MSG_FINISHING_MOVEMENTS c=20
 "Finishing movements"
 "Bewegung beenden"
 
-#MSG_V2_CALIBRATION c=17 r=1
+#MSG_V2_CALIBRATION c=18
 "First layer cal."
 "Erste-Schicht Kal."
 
@@ -478,6 +530,10 @@
 "Live adjust Z"
 "Z einstellen"
 
+# c=20 r=6
+"Insert the filament (do not load it) into the extruder and then press the knob."
+"Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf."
+
 #MSG_LOAD_FILAMENT c=17
 "Load filament"
 "Filament laden"
@@ -498,7 +554,7 @@
 "Load to nozzle"
 "In Druckduese laden"
 
-#MSG_M117_V2_CALIBRATION c=25 r=1
+#MSG_M117_V2_CALIBRATION c=25
 "M117 First layer cal."
 "M117 Erste-Schicht Kal."
 
@@ -506,6 +562,14 @@
 "Main"
 "Hauptmenue"
 
+#MSG_BL_HIGH c=12
+"Level Bright"
+"Hell.wert"
+
+#MSG_BL_LOW c=12
+"Level Dimmed"
+"Dimmwert"
+
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
 "Messen der Referenzhoehe des Kalibrierpunktes"
@@ -546,6 +610,10 @@
 "Mode"
 "Modus"
 
+# c=20 r=3
+"MK3 firmware detected on MK3S printer"
+"MK3-Firmware am MK3S-Drucker erkannt"
+
 #MSG_NORMAL
 "Normal"
 "\x00"
@@ -568,7 +636,7 @@
 
 #MSG_AUTO_POWER
 "Auto power"
-"\x00"
+"Auto Leist"
 
 #MSG_HIGH_POWER
 "High power"
@@ -638,7 +706,7 @@
 "Nozzle"
 "Duese"
 
-#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
 "Old settings found. Default PID, Esteps etc. will be set."
 "Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
 
@@ -670,7 +738,7 @@
 "PINDA Heating"
 "PINDA erwaermen"
 
-#MSG_PAPER c=20 r=8
+#MSG_PAPER c=20 r=10
 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 "Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
 
@@ -742,6 +810,10 @@
 "Preheating nozzle. Please wait."
 "Vorheizen der Duese. Bitte warten."
 
+# c=14
+"PINDA"
+"\x00"
+
 #
 "Please upgrade."
 "Bitte aktualisieren."
@@ -750,6 +822,10 @@
 "Press knob to preheat nozzle and continue."
 "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
 
+#MSG_FS_PAUSE c=5
+"Pause"
+"\x00"
+
 #
 "Power failures"
 "Netzfehler"
@@ -758,11 +834,11 @@
 "Print aborted"
 "Druck abgebrochen"
 
-#
+# c=20
 "Preheating to load"
 "Heizen zum Laden"
 
-#
+# c=20
 "Preheating to unload"
 "Heizen zum Entladen"
 
@@ -814,15 +890,19 @@
 "Rear side [um]"
 "Hinten [um]"
 
-#MSG_RECOVERING_PRINT c=20 r=1
+# c=20 r=4
+"Please unload the filament first, then repeat this action."
+"Bitte entladen Sie erst das Filament und versuchen Sie es nochmal."
+
+#MSG_RECOVERING_PRINT c=20
 "Recovering print    "
-"Druck wiederherst    "
+"Druck wiederherst   "
 
-#MSG_REMOVE_OLD_FILAMENT c=20 r=4
+#MSG_REMOVE_OLD_FILAMENT c=20 r=5
 "Remove old filament and press the knob to start loading new filament."
 "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
 
-#
+# c=20
 "Prusa i3 MK3S OK."
 "\x00"
 
@@ -838,7 +918,7 @@
 "Resume print"
 "Druck fortsetzen"
 
-#MSG_RESUMING_PRINT c=20 r=1
+#MSG_RESUMING_PRINT c=20
 "Resuming print"
 "Druck fortgesetzt"
 
@@ -906,11 +986,23 @@
 "Set temperature:"
 "Temp. einstellen:"
 
+# c=20
+"Prusa i3 MK2.5 OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK2.5S OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK3 OK."
+"\x00"
+
 #MSG_SETTINGS
 "Settings"
 "Einstellungen"
 
-#MSG_SHOW_END_STOPS c=17 r=1
+#MSG_SHOW_END_STOPS c=18
 "Show end stops"
 "Endschalter Status"
 
@@ -918,7 +1010,7 @@
 "Sensor state"
 "Sensorstatus"
 
-#MSG_FILE_CNT c=20 r=4
+#MSG_FILE_CNT c=20 r=6
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
 
@@ -956,6 +1048,10 @@
 
 #MSG_SOUND
 "Sound"
+"Ton"
+
+# c=7
+"Runouts"
 "\x00"
 
 #
@@ -1002,7 +1098,7 @@
 "Select filament:"
 "Filament auswaehlen:"
 
-#MSG_TEMP_CALIBRATION c=12 r=1
+#MSG_TEMP_CALIBRATION c=14
 "Temp. cal."
 "Temp Kalib."
 
@@ -1022,6 +1118,10 @@
 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
 
+# c=20 r=3
+"Sensor verified, remove the filament now."
+"Sensor ueberprueft, entladen Sie jetzt das Filament."
+
 #MSG_TEMPERATURE
 "Temperature"
 "Temperatur"
@@ -1030,9 +1130,9 @@
 "Temperatures"
 "Temperaturen"
 
-#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
+#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-"Es ist noch notwendig die Z-Kalibrierung auszufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
+"Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
 
 #
 "Total filament"
@@ -1126,7 +1226,7 @@
 "Wizard"
 "Assistent"
 
-#MSG_XYZ_DETAILS c=19 r=1
+#MSG_XYZ_DETAILS c=18
 "XYZ cal. details"
 "XYZ Kal. Details"
 
@@ -1150,7 +1250,11 @@
 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
 
-#
+#MSG_TIMEOUT c=12
+"Timeout"
+"Verzoegerung"
+
+#MSG_X_CORRECTION c=13
 "X-correct:"
 "X-Korrektur:"
 
@@ -1190,7 +1294,11 @@
 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
 
-#
+# c=20 r=5
+"Verification failed, remove the filament and try again."
+"Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut."
+
+#MSG_Y_CORRECTION c=13
 "Y-correct:"
 "Y-Korrektur:"
 
@@ -1298,11 +1406,11 @@
 "PINDA:"
 "\x00"
 
-#
+# c=20
 "Preheating to cut"
 "Heizen zum Schnitt"
 
-#
+# c=20
 "Preheating to eject"
 "Heizen zum Auswurf"
 
@@ -1314,6 +1422,10 @@
 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
 
+# c=20
+"%s level expected"
+"\x00"
+
 #
 "Rename"
 "Umbenennen"
@@ -1326,22 +1438,23 @@
 "Sensor info"
 "Sensor Info"
 
-#
+#MSG_SHEET c=10
 "Sheet"
-"Blech"
+"Stahlblech"
 
 #MSG_SOUND_BLIND
 "Assist"
 "\x00"
 
-#
+# c=18
 "Steel sheets"
 "Stahlbleche"
 
-#
+#MSG_Z_CORRECTION c=13
 "Z-correct:"
 "Z-Korrektur:"
 
 #MSG_Z_PROBE_NR
 "Z-probe nr."
 "\x00"
+

+ 165 - 52
lang/lang_en_es.txt

@@ -2,6 +2,14 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
 
+#MSG_03_OR_OLDER c=18
+" 0.3 or older"
+" 0.3 o mayor"
+
+#MSG_04_OR_NEWER c=18
+" 0.4 or newer"
+" 0.4 o mas nueva"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " de 4"
@@ -42,7 +50,11 @@
 "Ambient"
 "Ambiente"
 
-#MSG_PRESS c=20
+#MSG_AUTO c=6
+"Auto"
+"\x00"
+
+#MSG_PRESS c=20 r=2
 "and press the knob"
 "Haz clic"
 
@@ -58,9 +70,9 @@
 "Auto home"
 "Llevar al origen"
 
-#MSG_AUTOLOAD_FILAMENT c=17
+#MSG_AUTOLOAD_FILAMENT c=18
 "AutoLoad filament"
-"Carga automatica de filamento"
+"Carga auto. filam."
 
 #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
 "Autoloading filament available only when filament sensor is turned on..."
@@ -94,17 +106,29 @@
 "Bed level correct"
 "Corr. de la cama"
 
-#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#MSG_BELTTEST c=17
+"Belt test        "
+"Test cinturon    "
+
+#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 "Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
 
+#MSG_BRIGHT c=6
+"Bright"
+"Brill."
+
+#MSG_BRIGHTNESS c=18
+"Brightness"
+"Brillo"
+
 #MSG_BED
 "Bed"
 "Base"
 
-#MSG_MENU_BELT_STATUS c=15 r=1
+#MSG_MENU_BELT_STATUS c=18
 "Belt status"
-"Estado de la correa"
+"Estado de correa"
 
 #MSG_RECOVER_PRINT c=20 r=2
 "Blackout occurred. Recover print?"
@@ -166,7 +190,7 @@
 "Copy selected language?"
 "Copiar idioma seleccionado?"
 
-#MSG_CRASHDETECT
+#MSG_CRASHDETECT c=13
 "Crash det."
 "Det. choque"
 
@@ -202,23 +226,27 @@
 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 "Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
 
+#MSG_FS_CONTINUE c=5
+"Cont."
+"\x00"
+
 #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
 "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 "Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
 
-#MSG_EXTRUDER_CORRECTION c=10
+#MSG_EXTRUDER_CORRECTION c=13
 "E-correct:"
 "Corregir-E:"
 
 #MSG_EJECT_FILAMENT c=17 r=1
 "Eject filament"
-"Expulsar filamento"
+"Expulsar fil."
 
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
 "Expulsando filamento"
 
-#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
 "Endstop not hit"
 "Endstop no alcanzado"
 
@@ -234,10 +262,26 @@
 "Error - static memory has been overwritten"
 "Error - se ha sobre-escrito la memoria estatica"
 
+#MSG_CUT_FILAMENT c=16
+"Cut filament"
+"Cortar filament"
+
+#MSG_CUTTER c=9
+"Cutter"
+"Cuchillo"
+
+# c=18
+"Cutting filament"
+"Corte de filament"
+
 #MSG_FSENS_NOT_RESPONDING c=20 r=4
 "ERROR: Filament sensor is not responding, please check connection."
 "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
 
+#MSG_DIM c=6
+"Dim"
+"\x00"
+
 #MSG_ERROR
 "ERROR:"
 "\x00"
@@ -246,9 +290,9 @@
 "Extruder fan:"
 "Vent.extrusor:"
 
-#MSG_INFO_EXTRUDER c=15 r=1
+#MSG_INFO_EXTRUDER c=18
 "Extruder info"
-"Informacion del extrusor"
+"Info. del extrusor"
 
 #MSG_MOVE_E
 "Extruder"
@@ -258,7 +302,7 @@
 "Fail stats MMU"
 "Estadistica de fallos MMU"
 
-#MSG_FSENSOR_AUTOLOAD
+#MSG_FSENSOR_AUTOLOAD c=13
 "F. autoload"
 "Autocarg.fil."
 
@@ -268,7 +312,7 @@
 
 #MSG_FAN_SPEED c=14
 "Fan speed"
-"Velocidad Vent."
+"Velocidad Vent"
 
 #MSG_SELFTEST_FAN c=20
 "Fan test"
@@ -282,7 +326,7 @@
 "Fil. sensor"
 "Sensor Fil."
 
-#
+# c=14
 "Filam. runouts"
 "Filam. acabado"
 
@@ -298,7 +342,7 @@
 "Filament sensor"
 "Sensor de filamento"
 
-#MSG_FILAMENT_USED c=19 r=1
+#MSG_FILAMENT_USED c=19
 "Filament used"
 "Filamento usado"
 
@@ -306,15 +350,23 @@
 "Print time"
 "Tiempo de imp.:"
 
-#MSG_FILE_INCOMPLETE c=20 r=2
+#MSG_FS_ACTION c=10
+"FS Action"
+"FS accion"
+
+# c=18
+"FS v0.4 or newer"
+"FS v0.4 o +nueva"
+
+#MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Archivo incompleto. ?Continuar de todos modos?"
 
-#MSG_FINISHING_MOVEMENTS c=20 r=1
+#MSG_FINISHING_MOVEMENTS c=20
 "Finishing movements"
 "Term. movimientos"
 
-#MSG_V2_CALIBRATION c=17 r=1
+#MSG_V2_CALIBRATION c=18
 "First layer cal."
 "Cal. primera cap."
 
@@ -356,7 +408,7 @@
 
 #MSG_HEATING_COMPLETE c=20
 "Heating done."
-"Calentamiento acabado."
+"Calentando acabado."
 
 #MSG_HEATING
 "Heating"
@@ -396,7 +448,7 @@
 
 #MSG_SELFTEST_CHECK_FSENSOR c=20
 "Checking sensors "
-"Comprobando los sensores"
+"Comprobando sensores"
 
 #MSG_SELFTEST_CHECK_X c=20
 "Checking X axis  "
@@ -444,7 +496,7 @@
 
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
-"?Esta colocada la lamina de acero sobre la base?"
+"?Esta colocada la lamina sobre la base"
 
 #
 "Last print failures"
@@ -478,6 +530,10 @@
 "Live adjust Z"
 "Micropaso Eje Z"
 
+# c=20 r=6
+"Insert the filament (do not load it) into the extruder and then press the knob."
+"Inserte el filamento (no lo cargue) en el extrusor y luego presione el dial."
+
 #MSG_LOAD_FILAMENT c=17
 "Load filament"
 "Introducir filam."
@@ -498,7 +554,7 @@
 "Load to nozzle"
 "Cargar a la boquilla"
 
-#MSG_M117_V2_CALIBRATION c=25 r=1
+#MSG_M117_V2_CALIBRATION c=25
 "M117 First layer cal."
 "M117 Cal. primera cap."
 
@@ -506,6 +562,14 @@
 "Main"
 "Menu principal"
 
+#MSG_BL_HIGH c=12
+"Level Bright"
+"Valor brill."
+
+#MSG_BL_LOW c=12
+"Level Dimmed"
+"\x00"
+
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
 "Midiendo altura del punto de calibracion"
@@ -546,6 +610,10 @@
 "Mode"
 "Modo"
 
+# c=20 r=3
+"MK3 firmware detected on MK3S printer"
+"Firmware MK3 detectado en impresora MK3S"
+
 #MSG_NORMAL
 "Normal"
 "\x00"
@@ -638,7 +706,7 @@
 "Nozzle"
 "Boquilla"
 
-#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
 "Old settings found. Default PID, Esteps etc. will be set."
 "Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del extrusor, etc"
 
@@ -670,7 +738,7 @@
 "PINDA Heating"
 "Calentando PINDA"
 
-#MSG_PAPER c=20 r=8
+#MSG_PAPER c=20 r=10
 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."
 
@@ -732,7 +800,7 @@
 
 #MSG_PREHEAT_NOZZLE c=20
 "Preheat the nozzle!"
-"Precalienta extrusor!"
+"Precalienta extrusor"
 
 #MSG_PREHEAT
 "Preheat"
@@ -742,6 +810,10 @@
 "Preheating nozzle. Please wait."
 "Precalentando nozzle. Espera por favor."
 
+# c=14
+"PINDA"
+"\x00"
+
 #
 "Please upgrade."
 "Actualize por favor"
@@ -750,6 +822,10 @@
 "Press knob to preheat nozzle and continue."
 "Pulsa el dial para precalentar la boquilla y continue."
 
+#MSG_FS_PAUSE c=5
+"Pause"
+"Pausa"
+
 #
 "Power failures"
 "Cortes de energia"
@@ -758,13 +834,13 @@
 "Print aborted"
 "Impresion cancelada"
 
-#
+# c=20
 "Preheating to load"
-"Precalentar para cargar"
+"Precalent. cargar"
 
-#
+# c=20
 "Preheating to unload"
-"Precalentar para descargar"
+"Precalent. descargar"
 
 #MSG_SELFTEST_PRINT_FAN_SPEED c=18
 "Print fan:"
@@ -814,15 +890,19 @@
 "Rear side [um]"
 "Trasera [um]"
 
-#MSG_RECOVERING_PRINT c=20 r=1
+# c=20 r=4
+"Please unload the filament first, then repeat this action."
+"Primero descargue el filamento, luego repita esta accion."
+
+#MSG_RECOVERING_PRINT c=20
 "Recovering print    "
-"Recuperando impresion"
+"Recuper. impresion  "
 
-#MSG_REMOVE_OLD_FILAMENT c=20 r=4
+#MSG_REMOVE_OLD_FILAMENT c=20 r=5
 "Remove old filament and press the knob to start loading new filament."
 "Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo filamento."
 
-#
+# c=20
 "Prusa i3 MK3S OK."
 "\x00"
 
@@ -838,9 +918,9 @@
 "Resume print"
 "Reanudar impres."
 
-#MSG_RESUMING_PRINT c=20 r=1
+#MSG_RESUMING_PRINT c=20
 "Resuming print"
-"Continuando impresion"
+"Continuan. impresion"
 
 #MSG_BED_CORRECTION_RIGHT c=14 r=1
 "Right side[um]"
@@ -884,7 +964,7 @@
 
 #MSG_SELFTEST
 "Selftest         "
-"Selftest"
+"\x00"
 
 #MSG_SELFTEST_ERROR
 "Selftest error !"
@@ -906,11 +986,23 @@
 "Set temperature:"
 "Establecer temp.:"
 
+# c=20
+"Prusa i3 MK2.5 OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK2.5S OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK3 OK."
+"\x00"
+
 #MSG_SETTINGS
 "Settings"
 "Configuracion"
 
-#MSG_SHOW_END_STOPS c=17 r=1
+#MSG_SHOW_END_STOPS c=18
 "Show end stops"
 "Mostrar endstops"
 
@@ -918,7 +1010,7 @@
 "Sensor state"
 "Estado del sensor"
 
-#MSG_FILE_CNT c=20 r=4
+#MSG_FILE_CNT c=20 r=6
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
 
@@ -958,6 +1050,10 @@
 "Sound"
 "Sonido"
 
+# c=7
+"Runouts"
+"\x00"
+
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Problema encontrado, nivelacion Z forzosa ..."
@@ -1002,7 +1098,7 @@
 "Select filament:"
 "Selecciona filamento:"
 
-#MSG_TEMP_CALIBRATION c=12 r=1
+#MSG_TEMP_CALIBRATION c=14
 "Temp. cal."
 "Cal. temp."
 
@@ -1022,6 +1118,10 @@
 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 "Calibracion temperatura terminada. Haz clic para continuar."
 
+# c=20 r=3
+"Sensor verified, remove the filament now."
+"Sensor verificado, retire el filamento ahora."
+
 #MSG_TEMPERATURE
 "Temperature"
 "Temperatura"
@@ -1030,7 +1130,7 @@
 "Temperatures"
 "Temperaturas"
 
-#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
+#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 "Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
 
@@ -1126,9 +1226,9 @@
 "Wizard"
 "\x00"
 
-#MSG_XYZ_DETAILS c=19 r=1
+#MSG_XYZ_DETAILS c=18
 "XYZ cal. details"
-"Detalles de calibracion XYZ"
+"Detalles cal. XYZ"
 
 #MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
 "XYZ calibration failed. Please consult the manual."
@@ -1150,7 +1250,11 @@
 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
 
-#
+#MSG_TIMEOUT c=12
+"Timeout"
+"Expirar"
+
+#MSG_X_CORRECTION c=13
 "X-correct:"
 "Corregir-X:"
 
@@ -1190,7 +1294,11 @@
 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 "La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
 
-#
+# c=20 r=5
+"Verification failed, remove the filament and try again."
+"La verificacion fallo, retire el filamento e intente nuevamente."
+
+#MSG_Y_CORRECTION c=13
 "Y-correct:"
 "Corregir-Y:"
 
@@ -1298,13 +1406,13 @@
 "PINDA:"
 "PINDA:"
 
-#
+# c=20
 "Preheating to cut"
-"Precalentando para laminar"
+"Precalent. laminar"
 
-#
+# c=20
 "Preheating to eject"
-"Precalentar para expulsar"
+"Precalent. expulsar"
 
 #
 "Printer nozzle diameter differs from the G-code. Continue?"
@@ -1314,6 +1422,10 @@
 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 "Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
 
+# c=20
+"%s level expected"
+"\x00"
+
 #
 "Rename"
 "Renombrar"
@@ -1326,7 +1438,7 @@
 "Sensor info"
 "Info sensor"
 
-#
+#MSG_SHEET c=10
 "Sheet"
 "Lamina"
 
@@ -1334,14 +1446,15 @@
 "Assist"
 "Asistido"
 
-#
+# c=18
 "Steel sheets"
 "Lamina de acero"
 
-#
+#MSG_Z_CORRECTION c=13
 "Z-correct:"
 "Corregir-Z:"
 
 #MSG_Z_PROBE_NR
 "Z-probe nr."
 "Z-sensor nr."
+

+ 171 - 55
lang/lang_en_fr.txt

@@ -2,6 +2,14 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
 
+#MSG_03_OR_OLDER c=18
+" 0.3 or older"
+" 0.3 ou +ancien"
+
+#MSG_04_OR_NEWER c=18
+" 0.4 or newer"
+" 0.4 ou +recent"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " de 4"
@@ -20,7 +28,7 @@
 
 #MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
 "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-"ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode feutre"
+"ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode furtif"
 
 #
 ">Cancel"
@@ -42,9 +50,13 @@
 "Ambient"
 "Ambiant"
 
-#MSG_PRESS c=20
+#MSG_AUTO c=6
+"Auto"
+"\x00"
+
+#MSG_PRESS c=20 r=2
 "and press the knob"
-"et pressez le bouton"
+"et appuyez sur le bouton"
 
 #MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
 "Are left and right Z~carriages all up?"
@@ -58,7 +70,7 @@
 "Auto home"
 "Mise a 0 des axes"
 
-#MSG_AUTOLOAD_FILAMENT c=17
+#MSG_AUTOLOAD_FILAMENT c=18
 "AutoLoad filament"
 "Autocharge du fil."
 
@@ -94,15 +106,27 @@
 "Bed level correct"
 "Corr. niveau plateau"
 
-#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#MSG_BELTTEST c=17
+"Belt test        "
+"Test de courroie "
+
+#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-"Echec bed leveling. Capt. non declenche. Debris sur buse? En attente d'un reset."
+"Capt. non declenche pendant que je nivele le plateau. Debris sur buse? En attente d'un reset."
+
+#MSG_BRIGHT c=6
+"Bright"
+"Brill."
+
+#MSG_BRIGHTNESS c=18
+"Brightness"
+"Luminosite"
 
 #MSG_BED
 "Bed"
 "Lit"
 
-#MSG_MENU_BELT_STATUS c=15 r=1
+#MSG_MENU_BELT_STATUS c=18
 "Belt status"
 "Statut courroie"
 
@@ -164,9 +188,9 @@
 
 #
 "Copy selected language?"
-"Copier la langue selectionne?"
+"Copier la langue choisie?"
 
-#MSG_CRASHDETECT
+#MSG_CRASHDETECT c=13
 "Crash det."
 "Detect.crash"
 
@@ -202,11 +226,15 @@
 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 "La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
 
+#MSG_FS_CONTINUE c=5
+"Cont."
+"\x00"
+
 #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
 "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-"Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant?"
+"Voulez-vous refaire l'etape pour reajuster la hauteur entre la buse et le plateau chauffant?"
 
-#MSG_EXTRUDER_CORRECTION c=10
+#MSG_EXTRUDER_CORRECTION c=13
 "E-correct:"
 "Correct-E:"
 
@@ -218,7 +246,7 @@
 "Ejecting filament"
 "Le fil. remonte"
 
-#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
 "Endstop not hit"
 "Butee non atteinte"
 
@@ -234,10 +262,26 @@
 "Error - static memory has been overwritten"
 "Erreur - la memoire statique a ete ecrasee"
 
+#MSG_CUT_FILAMENT c=16
+"Cut filament"
+"Coupe filament"
+
+#MSG_CUTTER c=9
+"Cutter"
+"Coupeur"
+
+# c=18
+"Cutting filament"
+"Je coupe filament"
+
 #MSG_FSENS_NOT_RESPONDING c=20 r=4
 "ERROR: Filament sensor is not responding, please check connection."
 "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
 
+#MSG_DIM c=6
+"Dim"
+"\x00"
+
 #MSG_ERROR
 "ERROR:"
 "ERREUR:"
@@ -246,7 +290,7 @@
 "Extruder fan:"
 "Ventilo extrudeur:"
 
-#MSG_INFO_EXTRUDER c=15 r=1
+#MSG_INFO_EXTRUDER c=18
 "Extruder info"
 "Infos extrudeur"
 
@@ -258,9 +302,10 @@
 "Fail stats MMU"
 "Stat. d'echec MMU"
 
-#MSG_FSENSOR_AUTOLOAD
+#MSG_FSENSOR_AUTOLOAD c=13
 "F. autoload"
-"Autochargeur"
+"F. autocharg."
+
 #
 "Fail stats"
 "Stat. d'echec"
@@ -280,9 +325,10 @@
 #MSG_FSENSOR
 "Fil. sensor"
 "Capteur Fil."
-#
+
+# c=14
 "Filam. runouts"
-"Fins de filament"
+"Fins filament"
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
@@ -296,7 +342,7 @@
 "Filament sensor"
 "Capteur de filament"
 
-#MSG_FILAMENT_USED c=19 r=1
+#MSG_FILAMENT_USED c=19
 "Filament used"
 "Filament utilise"
 
@@ -304,15 +350,23 @@
 "Print time"
 "Temps d'impression"
 
-#MSG_FILE_INCOMPLETE c=20 r=2
+#MSG_FS_ACTION c=10
+"FS Action"
+"\x00"
+
+# c=18
+"FS v0.4 or newer"
+"FS v0.4 ou +recent"
+
+#MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Fichier incomplet. Continuer qd meme?"
 
-#MSG_FINISHING_MOVEMENTS c=20 r=1
+#MSG_FINISHING_MOVEMENTS c=20
 "Finishing movements"
 "Mouvement final"
 
-#MSG_V2_CALIBRATION c=17 r=1
+#MSG_V2_CALIBRATION c=18
 "First layer cal."
 "Cal. 1ere couche"
 
@@ -382,7 +436,7 @@
 
 #MSG_SELFTEST_CHECK_BED c=20
 "Checking bed     "
-"Verification du lit"
+"Verif. plateau chauf"
 
 #MSG_SELFTEST_CHECK_ENDSTOPS c=20
 "Checking endstops"
@@ -442,7 +496,7 @@
 
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
-"Plaque d'impression sur le lit chauffant?"
+"Est la plaque sur le plat. chauffant?"
 
 #
 "Last print failures"
@@ -450,7 +504,7 @@
 
 #
 "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
-"Si vous avez d'autres feuilles d'acier,  calibrez leurs pre-reglages dans Reglages - Config HW - Feuilles d'acier."
+"Si vous avez d'autres feuilles d'acier,  calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
 
 #
 "Last print"
@@ -458,7 +512,7 @@
 
 #MSG_SELFTEST_EXTRUDER_FAN c=20
 "Left hotend fan?"
-"Ventilo tete gauche?"
+"Ventilo gauche?"
 
 #
 "Left"
@@ -476,6 +530,10 @@
 "Live adjust Z"
 "Ajuster Z en dir."
 
+# c=20 r=6
+"Insert the filament (do not load it) into the extruder and then press the knob."
+"Veuillez inserer le filament ( ne le chargez pas) dans l'extrudeur, puis appuyez sur le bouton."
+
 #MSG_LOAD_FILAMENT c=17
 "Load filament"
 "Charger filament"
@@ -496,7 +554,7 @@
 "Load to nozzle"
 "Charger la buse"
 
-#MSG_M117_V2_CALIBRATION c=25 r=1
+#MSG_M117_V2_CALIBRATION c=25
 "M117 First layer cal."
 "M117 Cal. 1ere couche"
 
@@ -504,9 +562,17 @@
 "Main"
 "Menu principal"
 
+#MSG_BL_HIGH c=12
+"Level Bright"
+"Niveau brill"
+
+#MSG_BL_LOW c=12
+"Level Dimmed"
+"\x00"
+
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
-"Mesure de la hauteur de reference du point de calibration"
+"Je mesure la hauteur de reference du point de calibrage"
 
 #MSG_MESH_BED_LEVELING
 "Mesh Bed Leveling"
@@ -544,13 +610,17 @@
 "Mode"
 "\x00"
 
+# c=20 r=3
+"MK3 firmware detected on MK3S printer"
+"Firmware MK3 detecte sur imprimante MK3S"
+
 #MSG_NORMAL
 "Normal"
 "\x00"
 
 #MSG_SILENT
 "Silent"
-"Feutre"
+"Furtif"
 
 #
 "MMU needs user attention."
@@ -636,7 +706,7 @@
 "Nozzle"
 "Buse"
 
-#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
 "Old settings found. Default PID, Esteps etc. will be set."
 "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
 
@@ -668,13 +738,13 @@
 "PINDA Heating"
 "Chauffe de la PINDA"
 
-#MSG_PAPER c=20 r=8
+#MSG_PAPER c=20 r=10
 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 "Placez une feuille de papier sous la buse pendant la calibration des 4 premiers points. Si la buse accroche le papier, eteignez vite l'imprimante."
 
 #MSG_WIZARD_CLEAN_HEATBED c=20 r=8
 "Please clean heatbed and then press the knob."
-"Nettoyez la plaque en acier et appuyez sur le bouton."
+"Nettoyez plateau chauffant en acier et appuyez sur le bouton."
 
 #MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
 "Please clean the nozzle for calibration. Click when done."
@@ -740,6 +810,10 @@
 "Preheating nozzle. Please wait."
 "Prechauffage de la buse. Merci de patienter."
 
+# c=14
+"PINDA"
+"\x00"
+
 #
 "Please upgrade."
 "Mettez a jour le FW."
@@ -748,6 +822,10 @@
 "Press knob to preheat nozzle and continue."
 "Appuyez sur le bouton pour prechauffer la buse et continuer."
 
+#MSG_FS_PAUSE c=5
+"Pause"
+"\x00"
+
 #
 "Power failures"
 "Coup.de courant"
@@ -756,11 +834,11 @@
 "Print aborted"
 "Impression annulee"
 
-# c=20 r=1
+# c=20
 "Preheating to load"
 "Chauffe pour charger"
 
-# c=20 r=1
+# c=20
 "Preheating to unload"
 "Chauf.pour decharger"
 
@@ -812,15 +890,19 @@
 "Rear side [um]"
 "Arriere [um]"
 
-#MSG_RECOVERING_PRINT c=20 r=1
+# c=20 r=4
+"Please unload the filament first, then repeat this action."
+"SVP, dechargez le filament et reessayez."
+
+#MSG_RECOVERING_PRINT c=20
 "Recovering print    "
-"Recup. impression"
+"Recup. impression   "
 
-#MSG_REMOVE_OLD_FILAMENT c=20 r=4
+#MSG_REMOVE_OLD_FILAMENT c=20 r=5
 "Remove old filament and press the knob to start loading new filament."
 "Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau."
 
-#
+# c=20
 "Prusa i3 MK3S OK."
 "\x00"
 
@@ -836,7 +918,7 @@
 "Resume print"
 "Reprendre impression"
 
-#MSG_RESUMING_PRINT c=20 r=1
+#MSG_RESUMING_PRINT c=20
 "Resuming print"
 "Reprise de l'impr."
 
@@ -866,7 +948,7 @@
 
 #MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
 "Searching bed calibration point"
-"Recherche du point de calibration du lit"
+"Recherche du point de calibration du plateau chauffant"
 
 #MSG_LANGUAGE_SELECT
 "Select language"
@@ -904,11 +986,23 @@
 "Set temperature:"
 "Regler temp.:"
 
+# c=20
+"Prusa i3 MK2.5 OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK2.5S OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK3 OK."
+"\x00"
+
 #MSG_SETTINGS
 "Settings"
 "Reglages"
 
-#MSG_SHOW_END_STOPS c=17 r=1
+#MSG_SHOW_END_STOPS c=18
 "Show end stops"
 "Afficher butees"
 
@@ -916,7 +1010,7 @@
 "Sensor state"
 "Etat capteur"
 
-#MSG_FILE_CNT c=20 r=4
+#MSG_FILE_CNT c=20 r=6
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
 
@@ -956,6 +1050,10 @@
 "Sound"
 "Son"
 
+# c=7
+"Runouts"
+"\x00"
+
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
@@ -963,6 +1061,7 @@
 #MSG_SOUND_ONCE
 "Once"
 "Une fois"
+
 #MSG_SPEED
 "Speed"
 "Vitesse"
@@ -999,7 +1098,7 @@
 "Select filament:"
 "Selectionnez le filament:"
 
-#MSG_TEMP_CALIBRATION c=12 r=1
+#MSG_TEMP_CALIBRATION c=14
 "Temp. cal."
 "Calib. Temp."
 
@@ -1019,6 +1118,10 @@
 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 "La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
 
+# c=20 r=3
+"Sensor verified, remove the filament now."
+"Capteur verifie, retirez le filament maintenant."
+
 #MSG_TEMPERATURE
 "Temperature"
 "\x00"
@@ -1027,7 +1130,7 @@
 "Temperatures"
 "\x00"
 
-#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
+#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 "Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
 
@@ -1069,7 +1172,7 @@
 
 #
 "Total"
-"\x00"
+"Totale"
 
 #MSG_USED c=19 r=1
 "Used during print"
@@ -1089,7 +1192,7 @@
 
 #MSG_WAITING_TEMP c=20 r=3
 "Waiting for nozzle and bed cooling"
-"Attente du refroidissement des buse et plateau"
+"Attente du refroidissement des buse et plateau chauffant"
 
 #MSG_WAITING_TEMP_PINDA c=20 r=3
 "Waiting for PINDA probe cooling"
@@ -1123,7 +1226,7 @@
 "Wizard"
 "Assistant"
 
-#MSG_XYZ_DETAILS c=19 r=1
+#MSG_XYZ_DETAILS c=18
 "XYZ cal. details"
 "Details calib. XYZ"
 
@@ -1147,7 +1250,11 @@
 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
 
-#
+#MSG_TIMEOUT c=12
+"Timeout"
+"\x00"
+
+#MSG_X_CORRECTION c=13
 "X-correct:"
 "Correct-X:"
 
@@ -1187,7 +1294,11 @@
 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 "L'imprimante commencera a  imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
 
-#
+# c=20 r=5
+"Verification failed, remove the filament and try again."
+"Verification en echec, retirez le filament et reessayez."
+
+#MSG_Y_CORRECTION c=13
 "Y-correct:"
 "Correct-Y:"
 
@@ -1269,11 +1380,11 @@
 
 #
 "G-code sliced for a different level. Continue?"
-"\x00"
+"Le G-code a ete prepare pour un niveau different. Continuer?"
 
 #
 "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-"\x00"
+"Le G-code a ete prepare pour un niveau different. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
 
 #
 "G-code sliced for a different printer type. Continue?"
@@ -1295,11 +1406,11 @@
 "PINDA:"
 "PINDA:"
 
-# c=20 r=1
+# c=20
 "Preheating to cut"
 "Chauffe pour couper"
 
-# c=20 r=1
+# c=20
 "Preheating to eject"
 "Chauf. pour remonter"
 
@@ -1311,6 +1422,10 @@
 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee."
 
+# c=20
+"%s level expected"
+"\x00"
+
 #
 "Rename"
 "Renommer"
@@ -1323,7 +1438,7 @@
 "Sensor info"
 "Info capteur"
 
-#
+#MSG_SHEET c=10
 "Sheet"
 "Plaque"
 
@@ -1331,14 +1446,15 @@
 "Assist"
 "\x00"
 
-#
+# c=18
 "Steel sheets"
 "Plaques en acier"
 
-#
+#MSG_Z_CORRECTION c=13
 "Z-correct:"
 "Correct-Z:"
 
 #MSG_Z_PROBE_NR
 "Z-probe nr."
 "Mesurer x-fois"
+

+ 184 - 70
lang/lang_en_it.txt

@@ -2,6 +2,14 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
 
+#MSG_03_OR_OLDER c=18
+" 0.3 or older"
+" 0.3 o inferiore"
+
+#MSG_04_OR_NEWER c=18
+" 0.4 or newer"
+" 0.4 o superiore"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " su 4"
@@ -42,7 +50,11 @@
 "Ambient"
 "Ambiente"
 
-#MSG_PRESS c=20
+#MSG_AUTO c=6
+"Auto"
+"\x00"
+
+#MSG_PRESS c=20 r=2
 "and press the knob"
 "e cliccare manopola"
 
@@ -52,13 +64,13 @@
 
 #MSG_AUTO_DEPLETE c=17 r=1
 "SpoolJoin"
-"\x00"
+""
 
 #MSG_AUTO_HOME
 "Auto home"
 "Trova origine"
 
-#MSG_AUTOLOAD_FILAMENT c=17
+#MSG_AUTOLOAD_FILAMENT c=18
 "AutoLoad filament"
 "Autocaric. filam."
 
@@ -80,7 +92,7 @@
 
 #MSG_SELFTEST_BEDHEATER
 "Bed / Heater"
-"Letto/Riscald."
+"Piano/Riscald."
 
 #MSG_BED_DONE
 "Bed done"
@@ -88,27 +100,39 @@
 
 #MSG_BED_HEATING
 "Bed Heating"
-"Riscald. letto"
+"Riscald. piano"
 
 #MSG_BED_CORRECTION_MENU
 "Bed level correct"
-"Correz. liv.letto"
+"Correz. liv.piano"
+
+#MSG_BELTTEST c=17
+"Belt test        "
+"Test cinghie     "
 
-#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-"Livellamento letto fallito.NoRispSensore.Residui su ugello? In attesa di reset."
+"Livellamento piano fallito. Sensore KO? Residui su ugello? In attesa di reset."
+
+#MSG_BRIGHT c=6
+"Bright"
+"Chiaro"
+
+#MSG_BRIGHTNESS c=18
+"Brightness"
+"Luminosita'"
 
 #MSG_BED
 "Bed"
-"Letto"
+"Piano"
 
-#MSG_MENU_BELT_STATUS c=15 r=1
+#MSG_MENU_BELT_STATUS c=18
 "Belt status"
 "Stato cinghie"
 
 #MSG_RECOVER_PRINT c=20 r=2
 "Blackout occurred. Recover print?"
-"C'e stato un Blackout. Recuperare la stampa?"
+"Blackout rilevato. Recuperare la stampa?"
 
 #
 "Calibrating home"
@@ -166,7 +190,7 @@
 "Copy selected language?"
 "Copiare la lingua selezionata?"
 
-#MSG_CRASHDETECT
+#MSG_CRASHDETECT c=13
 "Crash det."
 "Rileva.crash"
 
@@ -200,27 +224,31 @@
 
 #MSG_BABYSTEP_Z_NOT_SET c=20 r=12
 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-"Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo layer."
+"Distanza tra la punta dell'ugello e la superficie del piano non ancora impostata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo strato."
+
+#MSG_FS_CONTINUE c=5
+"Cont."
+"\x00"
 
 #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
 "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
 
-#MSG_EXTRUDER_CORRECTION c=10
+#MSG_EXTRUDER_CORRECTION c=13
 "E-correct:"
 "Correzione-E:"
 
 #MSG_EJECT_FILAMENT c=17 r=1
 "Eject filament"
-"Espelli filamento "
+"Espelli filamento"
 
 #MSG_EJECTING_FILAMENT c=20 r=1
 "Ejecting filament"
-"Espellendo filamento "
+"Espellendo filamento"
 
-#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
 "Endstop not hit"
-"Finecorsa fuori portata"
+"Finec. fuori portata"
 
 #MSG_SELFTEST_ENDSTOP
 "Endstop"
@@ -232,12 +260,28 @@
 
 #MSG_STACK_ERROR c=20 r=4
 "Error - static memory has been overwritten"
-"Errore - la memoria statica e stata sovrascritta"
+"Errore - la memoria statica e' stata sovrascritta"
+
+#MSG_CUT_FILAMENT c=16
+"Cut filament"
+"Taglia filamento"
+
+#MSG_CUTTER c=9
+"Cutter"
+"Tagliatr."
+
+# c=18
+"Cutting filament"
+"Tagliando filam."
 
 #MSG_FSENS_NOT_RESPONDING c=20 r=4
 "ERROR: Filament sensor is not responding, please check connection."
 "ERRORE: il sensore filam. non risponde,Controllare conness."
 
+#MSG_DIM c=6
+"Dim"
+"Scuro"
+
 #MSG_ERROR
 "ERROR:"
 "ERRORE:"
@@ -246,7 +290,7 @@
 "Extruder fan:"
 "Ventola estr:"
 
-#MSG_INFO_EXTRUDER c=15 r=1
+#MSG_INFO_EXTRUDER c=18
 "Extruder info"
 "Info estrusore"
 
@@ -258,7 +302,7 @@
 "Fail stats MMU"
 "Stat.fall. MMU"
 
-#MSG_FSENSOR_AUTOLOAD
+#MSG_FSENSOR_AUTOLOAD c=13
 "F. autoload"
 "Autocar.fil."
 
@@ -281,13 +325,14 @@
 #MSG_FSENSOR
 "Fil. sensor"
 "Sensore fil."
-#
+
+# c=14
 "Filam. runouts"
-"Filam. esauriti"
+"Fil. esauriti"
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
-"Filamento estruso & con il giusto colore?"
+"Filamento estruso e con colore corretto?"
 
 #MSG_NOT_LOADED c=19
 "Filament not loaded"
@@ -297,23 +342,31 @@
 "Filament sensor"
 "Sensore filam."
 
-#MSG_FILAMENT_USED c=19 r=1
+#MSG_FILAMENT_USED c=19
 "Filament used"
-"Filamento utilizzato"
+"Fil. utilizzato"
 
 #MSG_PRINT_TIME c=19 r=1
 "Print time"
 "Tempo di stampa"
 
-#MSG_FILE_INCOMPLETE c=20 r=2
+#MSG_FS_ACTION c=10
+"FS Action"
+"Azione FS"
+
+# c=18
+"FS v0.4 or newer"
+"FS 0.4 o superiore"
+
+#MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "File incompleto. Continuare comunque?"
 
-#MSG_FINISHING_MOVEMENTS c=20 r=1
+#MSG_FINISHING_MOVEMENTS c=20
 "Finishing movements"
-"Finalizzando gli spostamenti"
+"Finaliz. spostamenti"
 
-#MSG_V2_CALIBRATION c=17 r=1
+#MSG_V2_CALIBRATION c=18
 "First layer cal."
 "Cal. primo strato"
 
@@ -323,7 +376,7 @@
 
 #
 "Fix the issue and then press button on MMU unit."
-"Risolvi il problema e quindi premi il bottone sull'unita MMU. "
+"Risolvere il problema e premere il bottone sull'unita MMU. "
 
 #MSG_FLOW
 "Flow"
@@ -379,7 +432,7 @@
 
 #MSG_CORRECTLY c=20
 "Changed correctly?"
-"Cambiato correttamente?"
+"Cambio corretto?"
 
 #MSG_SELFTEST_CHECK_BED c=20
 "Checking bed     "
@@ -439,11 +492,11 @@
 
 #MSG_WIZARD_FILAMENT_LOADED c=20 r=2
 "Is filament loaded?"
-"Il filamento e stato caricato?"
+"Il filamento e' stato caricato?"
 
 #MSG_STEEL_SHEET_CHECK c=20 r=2
 "Is steel sheet on heatbed?"
-"La piastra d'acciaio e sul piano riscaldato?"
+"Piastra d'acciaio su piano riscaldato?"
 
 #
 "Last print failures"
@@ -477,6 +530,10 @@
 "Live adjust Z"
 "Compensazione Z"
 
+# c=20 r=6
+"Insert the filament (do not load it) into the extruder and then press the knob."
+"Inserire filamento (senza caricarlo) nell'estrusore e premere la manopola."
+
 #MSG_LOAD_FILAMENT c=17
 "Load filament"
 "Carica filamento"
@@ -497,21 +554,29 @@
 "Load to nozzle"
 "Carica ugello"
 
-#MSG_M117_V2_CALIBRATION c=25 r=1
+#MSG_M117_V2_CALIBRATION c=25
 "M117 First layer cal."
-"M117 Calibrazione primo layer."
+"M117 Calibr. primo strato"
 
 #MSG_MAIN
 "Main"
 "Menu principale"
 
+#MSG_BL_HIGH c=12
+"Level Bright"
+"Liv. Chiaro"
+
+#MSG_BL_LOW c=12
+"Level Dimmed"
+"Liv. Scuro"
+
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
 "Misura altezza di rif. del punto di calib."
 
 #MSG_MESH_BED_LEVELING
 "Mesh Bed Leveling"
-"Livel. piatto"
+"Liv. grilia piano"
 
 #MSG_MMU_OK_RESUMING_POSITION c=20 r=4
 "MMU OK. Resuming position..."
@@ -545,6 +610,10 @@
 "Mode"
 "Mod."
 
+# c=20 r=3
+"MK3 firmware detected on MK3S printer"
+"Firmware MK3 rilevato su stampante MK3S"
+
 #MSG_NORMAL
 "Normal"
 "Normale"
@@ -607,7 +676,7 @@
 
 #MSG_NA
 "N/A"
-"\x00"
+"N/D"
 
 #MSG_NO
 "No"
@@ -637,7 +706,7 @@
 "Nozzle"
 "Ugello"
 
-#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
 "Old settings found. Default PID, Esteps etc. will be set."
 "Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
 
@@ -669,7 +738,7 @@
 "PINDA Heating"
 "Riscaldamento PINDA"
 
-#MSG_PAPER c=20 r=8
+#MSG_PAPER c=20 r=10
 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 "Posizionare un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere subito la stampante."
 
@@ -741,6 +810,10 @@
 "Preheating nozzle. Please wait."
 "Preriscaldando l'ugello. Attendere prego."
 
+# c=14
+"PINDA"
+"\x00"
+
 #
 "Please upgrade."
 "Prego aggiornare."
@@ -749,6 +822,10 @@
 "Press knob to preheat nozzle and continue."
 "Premete la manopola per preriscaldare l'ugello e continuare."
 
+#MSG_FS_PAUSE c=5
+"Pause"
+"Pausa"
+
 #
 "Power failures"
 "Mancanza corrente"
@@ -757,13 +834,13 @@
 "Print aborted"
 "Stampa interrotta"
 
-#
+# c=20
 "Preheating to load"
-"Preriscaldamento per caricare"
+"Preriscald. carico"
 
-#
+# c=20
 "Preheating to unload"
-"Preriscaldamento per scaricare"
+"Preriscald. scarico"
 
 #MSG_SELFTEST_PRINT_FAN_SPEED c=18
 "Print fan:"
@@ -813,15 +890,19 @@
 "Rear side [um]"
 "Retro [um]"
 
-#MSG_RECOVERING_PRINT c=20 r=1
+# c=20 r=4
+"Please unload the filament first, then repeat this action."
+"Scaricare prima il filamento, poi ripetere l'operazione."
+
+#MSG_RECOVERING_PRINT c=20
 "Recovering print    "
-"Recupero stampa"
+"Recupero stampa     "
 
-#MSG_REMOVE_OLD_FILAMENT c=20 r=4
+#MSG_REMOVE_OLD_FILAMENT c=20 r=5
 "Remove old filament and press the knob to start loading new filament."
-"Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento. "
+"Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento."
 
-#
+# c=20
 "Prusa i3 MK3S OK."
 "\x00"
 
@@ -837,7 +918,7 @@
 "Resume print"
 "Riprendi stampa"
 
-#MSG_RESUMING_PRINT c=20 r=1
+#MSG_RESUMING_PRINT c=20
 "Resuming print"
 "Riprendi stampa"
 
@@ -883,7 +964,7 @@
 
 #MSG_SELFTEST
 "Selftest         "
-"Autotest"
+"Autotest         "
 
 #MSG_SELFTEST_ERROR
 "Selftest error !"
@@ -903,13 +984,25 @@
 
 #MSG_SET_TEMPERATURE c=19 r=1
 "Set temperature:"
-"Imposta temperatura:"
+"Imposta temperatura"
+
+# c=20
+"Prusa i3 MK2.5 OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK2.5S OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK3 OK."
+"\x00"
 
 #MSG_SETTINGS
 "Settings"
 "Impostazioni"
 
-#MSG_SHOW_END_STOPS c=17 r=1
+#MSG_SHOW_END_STOPS c=18
 "Show end stops"
 "Stato finecorsa"
 
@@ -917,7 +1010,7 @@
 "Sensor state"
 "Stato sensore"
 
-#MSG_FILE_CNT c=20 r=4
+#MSG_FILE_CNT c=20 r=6
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
 
@@ -957,6 +1050,10 @@
 "Sound"
 "Suono"
 
+# c=7
+"Runouts"
+"Esaurim"
+
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Sono stati rilevati problemi, avviato livellamento Z ..."
@@ -1001,7 +1098,7 @@
 "Select filament:"
 "Seleziona il filamento:"
 
-#MSG_TEMP_CALIBRATION c=12 r=1
+#MSG_TEMP_CALIBRATION c=14
 "Temp. cal."
 "Calib. temp."
 
@@ -1021,6 +1118,10 @@
 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 "Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
 
+# c=20 r=3
+"Sensor verified, remove the filament now."
+"Sensore verificato, rimuovere il filamento."
+
 #MSG_TEMPERATURE
 "Temperature"
 "\x00"
@@ -1029,7 +1130,7 @@
 "Temperatures"
 "Temperature"
 
-#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
+#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 "E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
 
@@ -1125,7 +1226,7 @@
 "Wizard"
 "\x00"
 
-#MSG_XYZ_DETAILS c=19 r=1
+#MSG_XYZ_DETAILS c=18
 "XYZ cal. details"
 "XYZ Cal. dettagli"
 
@@ -1149,7 +1250,11 @@
 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
 
-#
+#MSG_TIMEOUT c=12
+"Timeout"
+"\x00"
+
+#MSG_X_CORRECTION c=13
 "X-correct:"
 "Correzione-X:"
 
@@ -1171,7 +1276,7 @@
 
 #
 "XYZ calibration failed. Bed calibration point was not found."
-"Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
+"Calibrazione XYZ fallita. Il punto di calibrazione sul piano non e' stato trovato."
 
 #
 "XYZ calibration failed. Front calibration points not reachable."
@@ -1189,7 +1294,11 @@
 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 "La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
 
-#
+# c=20 r=5
+"Verification failed, remove the filament and try again."
+"Verifica fallita, rimuovere il filamento e riprovare."
+
+#MSG_Y_CORRECTION c=13
 "Y-correct:"
 "Correzione-Y:"
 
@@ -1231,7 +1340,7 @@
 
 #
 "HW Setup"
-"Installazione HW"
+"Impostazioni HW"
 
 #
 "IR:"
@@ -1247,7 +1356,7 @@
 
 #
 "Mesh bed leveling"
-"Mesh livel. letto"
+"Liv. griglia piano"
 
 #
 "MK3S firmware detected on MK3 printer"
@@ -1297,13 +1406,13 @@
 "PINDA:"
 "\x00"
 
-#
+# c=20
 "Preheating to cut"
-"Preriscaldamento per taglio"
+"Preriscalda. taglio"
 
-#
+# c=20
 "Preheating to eject"
-"Preriscaldamento per espulsione"
+"Preriscalda. espuls."
 
 #
 "Printer nozzle diameter differs from the G-code. Continue?"
@@ -1313,6 +1422,10 @@
 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 "Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
 
+# c=20
+"%s level expected"
+"atteso livello %s"
+
 #
 "Rename"
 "Rinomina"
@@ -1325,7 +1438,7 @@
 "Sensor info"
 "Info Sensore"
 
-#
+#MSG_SHEET c=10
 "Sheet"
 "Piano"
 
@@ -1333,14 +1446,15 @@
 "Assist"
 "Assist."
 
-#
+# c=18
 "Steel sheets"
 "Piani d'acciaio"
 
-#
+#MSG_Z_CORRECTION c=13
 "Z-correct:"
 "Correzione-Z:"
 
 #MSG_Z_PROBE_NR
 "Z-probe nr."
-"\x00"
+"Nr. Z-test"
+

+ 253 - 232
lang/lang_en_nl.txt

@@ -2,6 +2,14 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Z instell.\x0awaarde ingesteld,\x0averder of bij 0\x0abeginen?\x0a%cVerder%cReset"
 
+#MSG_03_OR_OLDER c=18
+" 0.3 or older"
+" 0.3 of ouder"
+
+#MSG_04_OR_NEWER c=18
+" 0.4 or newer"
+" 0.4 of nieuwer"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " van 4"
@@ -40,9 +48,13 @@
 
 #
 "Ambient"
-"EINSY  "
+"Kamertemp."
+
+#MSG_AUTO c=6
+"Auto"
+"\x00"
 
-#MSG_PRESS c=20
+#MSG_PRESS c=20 r=2
 "and press the knob"
 "en druk op knop"
 
@@ -50,29 +62,21 @@
 "Are left and right Z~carriages all up?"
 "Zijn beide Z wagen heelemaal boven?"
 
-#MSG_AUTO_DEPLETE_ON c=17 r=1
-"SpoolJoin    [on]"
-"SpoolJoin   [aan]"
-
-#
-"SpoolJoin   [N/A]"
-"SpoolJoin   [N/V]"
-
-#MSG_AUTO_DEPLETE_OFF c=17 r=1
-"SpoolJoin   [off]"
-"SpoolJoin   [uit]"
+#MSG_AUTO_DEPLETE c=17 r=1
+"SpoolJoin"
+"\x00"
 
 #MSG_AUTO_HOME
 "Auto home"
 "Startpositie"
 
-#MSG_AUTOLOAD_FILAMENT c=17
+#MSG_AUTOLOAD_FILAMENT c=18
 "AutoLoad filament"
-"Auto-Laden Filament"
+"Autoladen Filament"
 
 #MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
 "Autoloading filament available only when filament sensor is turned on..."
-"Autoloading filament alleen beschikbaar wanneer filamentsensor is ingeschakeld ..."
+"Auto. laden van fil. is enkel beschikbaar wanneer fil.sensor is ingeschakeld ..."
 
 #MSG_AUTOLOADING_ENABLED c=20 r=4
 "Autoloading filament is active, just press the knob and insert filament..."
@@ -102,15 +106,27 @@
 "Bed level correct"
 "Bed niveau correct"
 
-#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#MSG_BELTTEST c=17
+"Belt test        "
+"Riemtest       "
+
+#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 "Bed leveling mislukt. Sensor heeft niet geactiveerd. Puin op tuit? Wacht op reset."
 
+#MSG_BRIGHT c=6
+"Bright"
+"Helder"
+
+#MSG_BRIGHTNESS c=18
+"Brightness"
+"Helderheid"
+
 #MSG_BED
 "Bed"
 "Bed"
 
-#MSG_MENU_BELT_STATUS c=15 r=1
+#MSG_MENU_BELT_STATUS c=18
 "Belt status"
 "Riem status"
 
@@ -174,22 +190,14 @@
 "Copy selected language?"
 "Geselecteerde taal kopieren?"
 
-#MSG_CRASHDETECT_ON
-"Crash det.   [on]"
-"Crashdet.   [aan]"
+#MSG_CRASHDETECT c=13
+"Crash det."
+"Crashdet."
 
 #
 "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 "Kies een filament voor de kalibratie van de eerste laag en selecteer deze in het schermmenu."
 
-#MSG_CRASHDETECT_NA
-"Crash det.  [N/A]"
-"Crashdet.   [N/V]"
-
-#MSG_CRASHDETECT_OFF
-"Crash det.  [off]"
-"Crashdet.   [uit]"
-
 #MSG_CRASH_DETECTED c=20 r=1
 "Crash detected."
 "Crash gedetecteerd."
@@ -218,11 +226,15 @@
 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 "Afstand tussen tip van de tuit en het print oppervlak is nog niet vastgesteld. Volg de handleiding, First steps, sectie First layer calibration."
 
+#MSG_FS_CONTINUE c=5
+"Cont."
+"\x00"
+
 #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
 "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 "Wilt u de laatste stap herhalen om de afstand tussen de tuit en de bed opnieuw in te stellen?"
 
-#MSG_EXTRUDER_CORRECTION c=10
+#MSG_EXTRUDER_CORRECTION c=13
 "E-correct:"
 "E-correctie:"
 
@@ -234,7 +246,7 @@
 "Ejecting filament"
 "Werp filament uit"
 
-#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
 "Endstop not hit"
 "Endstop niet geraakt"
 
@@ -250,10 +262,26 @@
 "Error - static memory has been overwritten"
 "Fout - het statische geheugen is overschreven"
 
+#MSG_CUT_FILAMENT c=16
+"Cut filament"
+"Fil. knippen"
+
+#MSG_CUTTER c=9
+"Cutter"
+"Mes"
+
+# c=18
+"Cutting filament"
+"Knippe filament"
+
 #MSG_FSENS_NOT_RESPONDING c=20 r=4
 "ERROR: Filament sensor is not responding, please check connection."
 "FOUT: Filamentsensor reageert niet, controleer de verbinding."
 
+#MSG_DIM c=6
+"Dim"
+"\x00"
+
 #MSG_ERROR
 "ERROR:"
 "FOUT:"
@@ -262,9 +290,9 @@
 "Extruder fan:"
 "Extruder fan:"
 
-#MSG_INFO_EXTRUDER c=15 r=1
+#MSG_INFO_EXTRUDER c=18
 "Extruder info"
-"Extruder Info"
+"\x00"
 
 #MSG_MOVE_E
 "Extruder"
@@ -274,17 +302,9 @@
 "Fail stats MMU"
 "MMU-Fouten"
 
-#MSG_FSENS_AUTOLOAD_ON c=17 r=1
-"F. autoload  [on]"
-"F.autoladen [aan]"
-
-#MSG_FSENS_AUTOLOAD_NA c=17 r=1
-"F. autoload [N/A]"
-"F.autoladen [N/V]"
-
-#MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-"F. autoload [off]"
-"F.autoladen [uit]"
+#MSG_FSENSOR_AUTOLOAD c=13
+"F. autoload"
+"F. autoladen"
 
 #
 "Fail stats"
@@ -298,27 +318,15 @@
 "Fan test"
 "Fan test"
 
-#MSG_FANS_CHECK_ON c=17 r=1
-"Fans check   [on]"
-"Fans check  [aan]"
-
-#MSG_FANS_CHECK_OFF c=17 r=1
-"Fans check  [off]"
-"Fans check  [uit]"
-
-#MSG_FSENSOR_ON
-"Fil. sensor  [on]"
-"Fil. sensor [aan]"
-
-#MSG_FSENSOR_NA
-"Fil. sensor [N/A]"
-"Fil. sensor [N/V]"
+#MSG_FANS_CHECK
+"Fans check"
+"Fans check"
 
-#MSG_FSENSOR_OFF
-"Fil. sensor [off]"
-"Fil. sensor [uit]"
+#MSG_FSENSOR
+"Fil. sensor"
+"\x00"
 
-#
+# c=14
 "Filam. runouts"
 "Fil. fouten"
 
@@ -334,7 +342,7 @@
 "Filament sensor"
 "Filamentsensor"
 
-#MSG_FILAMENT_USED c=19 r=1
+#MSG_FILAMENT_USED c=19
 "Filament used"
 "Gebruikte filament"
 
@@ -342,15 +350,23 @@
 "Print time"
 "Print tijd"
 
-#MSG_FILE_INCOMPLETE c=20 r=2
+#MSG_FS_ACTION c=10
+"FS Action"
+"FS actie"
+
+# c=18
+"FS v0.4 or newer"
+"FS v0.4 of nieuwer"
+
+#MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Bestand onvolledig. Toch doorgaan?"
 
-#MSG_FINISHING_MOVEMENTS c=20 r=1
+#MSG_FINISHING_MOVEMENTS c=20
 "Finishing movements"
 "Voortgang afwerken"
 
-#MSG_V2_CALIBRATION c=17 r=1
+#MSG_V2_CALIBRATION c=18
 "First layer cal."
 "Eerste laag kal."
 
@@ -514,6 +530,10 @@
 "Live adjust Z"
 "Live Z aanpassen"
 
+# c=20 r=6
+"Insert the filament (do not load it) into the extruder and then press the knob."
+"Steek a.u.b. filament (maar niet laden) in de extruder en druk op knop."
+
 #MSG_LOAD_FILAMENT c=17
 "Load filament"
 "Filament laden"
@@ -534,14 +554,22 @@
 "Load to nozzle"
 "Tot tuit laden"
 
-#MSG_M117_V2_CALIBRATION c=25 r=1
+#MSG_M117_V2_CALIBRATION c=25
 "M117 First layer cal."
-"M117 eerste laag kal."
+"M117 Eerste laag kal."
 
 #MSG_MAIN
 "Main"
 "Hoofdmenu"
 
+#MSG_BL_HIGH c=12
+"Level Bright"
+"Helder waard"
+
+#MSG_BL_LOW c=12
+"Level Dimmed"
+"Dim waarde"
+
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
 "Referentie hoogte van het kalibratiepunt meten"
@@ -578,13 +606,21 @@
 "MMU OK. Resuming..."
 "MMU OK. Hervatten..."
 
-#MSG_STEALTH_MODE_OFF
-"Mode     [Normal]"
-"Stand   [Normaal]"
+#MSG_MODE
+"Mode"
+"Stand"
 
-#MSG_SILENT_MODE_ON
-"Mode     [silent]"
-"Stand      [stil]"
+# c=20 r=3
+"MK3 firmware detected on MK3S printer"
+"MK3-firmware bij MK3S-printer gedetecteerd"
+
+#MSG_NORMAL
+"Normal"
+"Normaal"
+
+#MSG_SILENT
+"Silent"
+"Stil"
 
 #
 "MMU needs user attention."
@@ -594,17 +630,17 @@
 "MMU power fails"
 "MMU stroomstor."
 
-#MSG_STEALTH_MODE_ON
-"Mode    [Stealth]"
-"Stand   [Stealth]"
+#MSG_STEALTH
+"Stealth"
+"\x00"
 
-#MSG_AUTO_MODE_ON
-"Mode [auto power]"
-"Mode[automatisch]"
+#MSG_AUTO_POWER
+"Auto power"
+"\x00"
 
-#MSG_SILENT_MODE_OFF
-"Mode [high power]"
-"Stand      [hoog]"
+#MSG_HIGH_POWER
+"High power"
+"Hoog verm."
 
 #
 "MMU2 connected"
@@ -638,7 +674,7 @@
 "No SD card"
 "Geen SD kaart"
 
-#
+#MSG_NA
 "N/A"
 "N/V"
 
@@ -670,7 +706,7 @@
 "Nozzle"
 "Tuit"
 
-#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
 "Old settings found. Default PID, Esteps etc. will be set."
 "Oude instellingen gevonden. Standaard PID, E-steps etc. instellingen worden geladen."
 
@@ -702,7 +738,7 @@
 "PINDA Heating"
 "PINDA opwarmen"
 
-#MSG_PAPER c=20 r=8
+#MSG_PAPER c=20 r=10
 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 "Leg een vel papier onder de tuit tijdens de kalibratie van de eerste 4 punten. Als de tuit het papier beweegt, de printer onmiddellijk uitschakelen."
 
@@ -774,6 +810,10 @@
 "Preheating nozzle. Please wait."
 "Opwarmen van de tuit. Wacht aub."
 
+# c=14
+"PINDA"
+"\x00"
+
 #
 "Please upgrade."
 "Voer een upgrade uit."
@@ -782,6 +822,10 @@
 "Press knob to preheat nozzle and continue."
 "Druk op de knop om de tuit voor te verwarmen en door te gaan."
 
+#MSG_FS_PAUSE c=5
+"Pause"
+"Pauze"
+
 #
 "Power failures"
 "Stroomstoringen"
@@ -790,11 +834,11 @@
 "Print aborted"
 "Print afgebroken"
 
-#
+# c=20
 "Preheating to load"
 "Opwarmen invoeren"
 
-#
+# c=20
 "Preheating to unload"
 "Opwarmen uitwerpen"
 
@@ -846,15 +890,19 @@
 "Rear side [um]"
 "Achterkant[um]"
 
-#MSG_RECOVERING_PRINT c=20 r=1
+# c=20 r=4
+"Please unload the filament first, then repeat this action."
+"Verwijder eerst het filament en probeer het opnieuw."
+
+#MSG_RECOVERING_PRINT c=20
 "Recovering print    "
 "Print herstellen    "
 
-#MSG_REMOVE_OLD_FILAMENT c=20 r=4
+#MSG_REMOVE_OLD_FILAMENT c=20 r=5
 "Remove old filament and press the knob to start loading new filament."
 "Verwijder de oude filament en druk op de knop om nieuwe filament te laden."
 
-#
+# c=20
 "Prusa i3 MK3S OK."
 "\x00"
 
@@ -870,7 +918,7 @@
 "Resume print"
 "Print hervatten"
 
-#MSG_RESUMING_PRINT c=20 r=1
+#MSG_RESUMING_PRINT c=20
 "Resuming print"
 "Hervatten print"
 
@@ -878,25 +926,21 @@
 "Right side[um]"
 "Recht.kant[um]"
 
-#MSG_SECOND_SERIAL_ON c=17 r=1
-"RPi port     [on]"
-"RPi port    [aan]"
-
-#MSG_SECOND_SERIAL_OFF c=17 r=1
-"RPi port    [off]"
-"RPi port    [uit]"
+#MSG_RPI_PORT
+"RPi port"
+"\x00"
 
 #MSG_WIZARD_RERUN c=20 r=7
 "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 "Starten van de Wizard verwijdert de huidige kalibreringsresultaten en begint vanaf het begin. Doorgaan?"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-"SD card  [normal]"
-"SD card [normaal]"
+#MSG_SD_CARD
+"SD card"
+"SD kaart"
 
-#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-"SD card [flshAir]"
-"SD Karte[flshAir]"
+#MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+"FlashAir"
+"\x00"
 
 #
 "Right"
@@ -942,11 +986,23 @@
 "Set temperature:"
 "Temp. instellen:"
 
+# c=20
+"Prusa i3 MK2.5 OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK2.5S OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK3 OK."
+"\x00"
+
 #MSG_SETTINGS
 "Settings"
 "Instellingen"
 
-#MSG_SHOW_END_STOPS c=17 r=1
+#MSG_SHOW_END_STOPS c=18
 "Show end stops"
 "Toon endstops"
 
@@ -954,53 +1010,57 @@
 "Sensor state"
 "Sensorstatus"
 
-#MSG_FILE_CNT c=20 r=4
+#MSG_FILE_CNT c=20 r=6
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Sommige bestanden worden niet gesorteerd omdat het maximum aantal bestanden per map 100 is."
 
-#MSG_SORT_NONE c=17 r=1
-"Sort       [none]"
-"Sortering  [geen]"
+#MSG_SORT
+"Sort"
+"Sort."
 
-#MSG_SORT_TIME c=17 r=1
-"Sort       [time]"
-"Sortering  [tijd]"
+#MSG_NONE
+"None"
+"Geen"
+
+#MSG_SORT_TIME
+"Time"
+"Tijd"
 
 #
 "Severe skew:"
 "Erg scheef:"
 
-#MSG_SORT_ALPHA c=17 r=1
-"Sort   [alphabet]"
-"Sort    [alfabet]"
+#MSG_SORT_ALPHA
+"Alphabet"
+"Alfabet"
 
 #MSG_SORTING c=20 r=1
 "Sorting files"
 "Bestanden sorteren"
 
-#MSG_SOUND_LOUD c=17 r=1
-"Sound      [loud]"
-"Geluid     [hard]"
+#MSG_SOUND_LOUD
+"Loud"
+"Hard"
 
 #
 "Slight skew:"
 "Iets scheef:"
 
-#MSG_SOUND_MUTE c=17 r=1
-"Sound      [mute]"
-"Geluid      [uit]"
+#MSG_SOUND
+"Sound"
+"Geluid"
+
+# c=7
+"Runouts"
+"\x00"
 
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Er is een probleem opgetreden, Z-kalibratie afgedwongen ..."
 
-#MSG_SOUND_ONCE c=17 r=1
-"Sound      [once]"
-"Geluid  [eenmaal]"
-
-#MSG_SOUND_SILENT c=17 r=1
-"Sound    [silent]"
-"Geluid     [stil]"
+#MSG_SOUND_ONCE
+"Once"
+"Eenmaal"
 
 #MSG_SPEED
 "Speed"
@@ -1038,22 +1098,14 @@
 "Select filament:"
 "Kies filament:"
 
-#MSG_TEMP_CALIBRATION c=20 r=1
-"Temp. cal.          "
-"Tempkalibratie      "
-
-#MSG_TEMP_CALIBRATION_ON c=20 r=1
-"Temp. cal.   [on]"
-"Tempkal.    [aan]"
+#MSG_TEMP_CALIBRATION c=14
+"Temp. cal."
+"Tempkalib."
 
 #
 "Select temperature which matches your material."
 "Selecteer de temperatuur die overeenkomt met uw materiaal."
 
-#MSG_TEMP_CALIBRATION_OFF c=20 r=1
-"Temp. cal.  [off]"
-"Tempkal.    [uit]"
-
 #MSG_CALIBRATION_PINDA_MENU c=17 r=1
 "Temp. calibration"
 "Tempkalibratie"
@@ -1066,6 +1118,10 @@
 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 "Temperatuurkalibratie kan worden uitgeschakeld in het menu Instellingen-> Tempkalibratie."
 
+# c=20 r=3
+"Sensor verified, remove the filament now."
+"Sensor geverifieerd, verwijder nu het filament."
+
 #MSG_TEMPERATURE
 "Temperature"
 "Temperatuur"
@@ -1074,7 +1130,7 @@
 "Temperatures"
 "Temperaturen"
 
-#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
+#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 "Er is nog steeds een noodzaak om de Z-kalibratie uit te voeren. Volg de handleiding, hoofdstuk First steps, section Calibration flow."
 
@@ -1170,7 +1226,7 @@
 "Wizard"
 "Wizard"
 
-#MSG_XYZ_DETAILS c=19 r=1
+#MSG_XYZ_DETAILS c=18
 "XYZ cal. details"
 "XZY kal. details"
 
@@ -1194,7 +1250,11 @@
 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 "XYZ-kalibratie in orde. X / Y-assen zijn licht scheef. Goed gedaan!"
 
-#
+#MSG_TIMEOUT c=12
+"Timeout"
+"Time-out"
+
+#MSG_X_CORRECTION c=13
 "X-correct:"
 "X-correctie:"
 
@@ -1234,13 +1294,21 @@
 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 "\x00"
 
-#
+# c=20 r=5
+"Verification failed, remove the filament and try again."
+"Verificatie mislukt, verwijder het filament en probeer het opnieuw."
+
+#MSG_Y_CORRECTION c=13
 "Y-correct:"
 "Y-correctie:"
 
 #MSG_OFF
-" [off]"
-" [uit]"
+"Off"
+"Uit"
+
+#MSG_ON
+"On"
+"Aan"
 
 #
 "Back"
@@ -1258,16 +1326,16 @@
 "FINDA:"
 "\x00"
 
-#
-"Firmware   [none]"
-"Firmware   [geen]"
+#MSG_FIRMWARE
+"Firmware"
+"\x00"
 
-#
-"Firmware [strict]"
-"Firmware [strikt]"
+#MSG_STRICT
+"Strict"
+"Strikt"
 
-#
-"Firmware   [warn]"
+#MSG_WARN
+"Warn"
 "\x00"
 
 #
@@ -1278,24 +1346,12 @@
 "IR:"
 "\x00"
 
-#
-"Magnets comp.[N/A]"
-"Magnet. comp.[N/V]"
-
-#
-"Magnets comp.[Off]"
-"Magnet. comp.[Uit]"
-
-#
-"Magnets comp. [On]"
-"Magnet. comp.[Aan]"
-
-#
-"Mesh         [3x3]"
-"\x00"
+#MSG_MAGNETS_COMP
+"Magnets comp."
+"Magnet. comp."
 
-#
-"Mesh         [7x7]"
+#MSG_MESH
+"Mesh"
 "\x00"
 
 #
@@ -1306,53 +1362,21 @@
 "MK3S firmware detected on MK3 printer"
 "MK3S-firmware op MK3-printer ontdekt"
 
-#
-"MMU Mode [Normal]"
-"MMU Mod.[Normaal]"
-
-#
-"MMU Mode[Stealth]"
-"MMU Mod.[Stealth]"
+#MSG_MMU_MODE
+"MMU Mode"
+"MMU Mod"
 
 #
 "Mode change in progress ..."
 "Moduswijziging bezig..."
 
-#
-"Model      [none]"
-"Model      [geen]"
-
-#
-"Model    [strict]"
-"Model    [strikt]"
-
-#
-"Model      [warn]"
-"Model    [alarm.]"
-
-#
-"Nozzle d.  [0.25]"
-"Tuit d.    [0.25]"
-
-#
-"Nozzle d.  [0.40]"
-"Tuit d.    [0.40]"
-
-#
-"Nozzle d.  [0.60]"
-"Tuit d.    [0.60]"
-
-#
-"Nozzle     [none]"
-"Tuit       [geen]"
-
-#
-"Nozzle   [strict]"
-"Tuit     [strikt]"
+#MSG_MODEL
+"Model"
+"\x00"
 
-#
-"Nozzle     [warn]"
-"Tuit     [alarm.]"
+#MSG_NOZZLE_DIAMETER
+"Nozzle d."
+"Tuit d."
 
 #
 "G-code sliced for a different level. Continue?"
@@ -1382,11 +1406,11 @@
 "PINDA:"
 "\x00"
 
-#
+# c=20
 "Preheating to cut"
 "Opwarm. te snijden"
 
-#
+# c=20
 "Preheating to eject"
 "Opwarm.te uitwerpen"
 
@@ -1398,6 +1422,10 @@
 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 "De diameter van de tuit van de printer verschilt van de G-code. Controleer de waarde in de instellingen. Afdrukken geannuleerd."
 
+# c=20
+"%s level expected"
+"\x00"
+
 #
 "Rename"
 "Hernoem"
@@ -1410,30 +1438,23 @@
 "Sensor info"
 "Sensor info"
 
-#
+#MSG_SHEET c=10
 "Sheet"
-"Plaat"
+"Staalplaat"
 
-#
-"Sound    [assist]"
-"Geluid   [assist]"
+#MSG_SOUND_BLIND
+"Assist"
+"\x00"
 
-#
+# c=18
 "Steel sheets"
 "Staalplaten"
 
-#
+#MSG_Z_CORRECTION c=13
 "Z-correct:"
 "Z-correctie:"
 
-#
-"Z-probe nr.    [1]"
-"Z-probe nr.    [1]"
-
-#
-"Z-probe nr.    [3]"
-"Z-probe nr.    [3]"
+#MSG_Z_PROBE_NR
+"Z-probe nr."
+"\x00"
 
-#
-"Z-probe nr.    [5]"
-"Z-probe nr.    [5]"

+ 159 - 45
lang/lang_en_pl.txt

@@ -2,6 +2,14 @@
 "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 "[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
 
+#MSG_03_OR_OLDER c=18
+" 0.3 or older"
+" 0.3 lub starszy"
+
+#MSG_04_OR_NEWER c=18
+" 0.4 or newer"
+" 0.4 lub nowszy"
+
 #MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
 " of 4"
 " z 4"
@@ -42,7 +50,11 @@
 "Ambient"
 "Otoczenie"
 
-#MSG_PRESS c=20
+#MSG_AUTO c=6
+"Auto"
+"\x00"
+
+#MSG_PRESS c=20 r=2
 "and press the knob"
 "i nacisnij pokretlo"
 
@@ -58,7 +70,7 @@
 "Auto home"
 "Auto zerowanie"
 
-#MSG_AUTOLOAD_FILAMENT c=17
+#MSG_AUTOLOAD_FILAMENT c=18
 "AutoLoad filament"
 "Autoladowanie fil."
 
@@ -94,15 +106,27 @@
 "Bed level correct"
 "Korekta stolu"
 
-#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
+#MSG_BELTTEST c=17
+"Belt test        "
+"Test paskow"
+
+#MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
 "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 "Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
 
+#MSG_BRIGHT c=6
+"Bright"
+"Jasny"
+
+#MSG_BRIGHTNESS c=18
+"Brightness"
+"Jasnosc"
+
 #MSG_BED
 "Bed"
 "Stol"
 
-#MSG_MENU_BELT_STATUS c=15 r=1
+#MSG_MENU_BELT_STATUS c=18
 "Belt status"
 "Stan paskow"
 
@@ -202,11 +226,15 @@
 "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 "Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
 
+#MSG_FS_CONTINUE c=5
+"Cont."
+"Kont."
+
 #MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
 "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 "Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
 
-#MSG_EXTRUDER_CORRECTION c=10
+#MSG_EXTRUDER_CORRECTION c=13
 "E-correct:"
 "Korekcja-E:"
 
@@ -218,7 +246,7 @@
 "Ejecting filament"
 "Wysuwanie filamentu"
 
-#MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
+#MSG_SELFTEST_ENDSTOP_NOTHIT c=20
 "Endstop not hit"
 "Krancowka nie aktyw."
 
@@ -234,10 +262,26 @@
 "Error - static memory has been overwritten"
 "Blad - pamiec statyczna zostala nadpisana"
 
+#MSG_CUT_FILAMENT c=16
+"Cut filament"
+"Ciecie filamentu"
+
+#MSG_CUTTER c=9
+"Cutter"
+"Nozyk"
+
+# c=18
+"Cutting filament"
+"Obcinanie fil."
+
 #MSG_FSENS_NOT_RESPONDING c=20 r=4
 "ERROR: Filament sensor is not responding, please check connection."
 "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
 
+#MSG_DIM c=6
+"Dim"
+"Sciemn"
+
 #MSG_ERROR
 "ERROR:"
 "BLAD:"
@@ -246,7 +290,7 @@
 "Extruder fan:"
 "WentHotend:"
 
-#MSG_INFO_EXTRUDER c=15 r=1
+#MSG_INFO_EXTRUDER c=18
 "Extruder info"
 "Ekstruder - info"
 
@@ -258,7 +302,7 @@
 "Fail stats MMU"
 "Bledy MMU"
 
-#MSG_FSENSOR_AUTOLOAD
+#MSG_FSENSOR_AUTOLOAD c=13
 "F. autoload"
 "Autolad. fil."
 
@@ -282,13 +326,13 @@
 "Fil. sensor"
 "Czuj. filam."
 
-#
+# c=14
 "Filam. runouts"
-"Konc. filamentu"
+"Konc.filamentu"
 
 #MSG_FILAMENT_CLEAN c=20 r=2
 "Filament extruding & with correct color?"
-"Filament wychodzi z dyszy, kolor jest ok?"
+"Filament wychodzi z dyszy,kolor jest ok?"
 
 #MSG_NOT_LOADED c=19
 "Filament not loaded"
@@ -298,7 +342,7 @@
 "Filament sensor"
 "Czujnik filamentu"
 
-#MSG_FILAMENT_USED c=19 r=1
+#MSG_FILAMENT_USED c=19
 "Filament used"
 "Uzyty filament"
 
@@ -306,15 +350,23 @@
 "Print time"
 "Czas druku"
 
-#MSG_FILE_INCOMPLETE c=20 r=2
+#MSG_FS_ACTION c=10
+"FS Action"
+"Akcja FS"
+
+# c=18
+"FS v0.4 or newer"
+"FS v0.4 lub nowszy"
+
+#MSG_FILE_INCOMPLETE c=20 r=3
 "File incomplete. Continue anyway?"
 "Plik niekompletny. Kontynowac?"
 
-#MSG_FINISHING_MOVEMENTS c=20 r=1
+#MSG_FINISHING_MOVEMENTS c=20
 "Finishing movements"
 "Konczenie druku"
 
-#MSG_V2_CALIBRATION c=17 r=1
+#MSG_V2_CALIBRATION c=18
 "First layer cal."
 "Kal. 1. warstwy"
 
@@ -396,7 +448,7 @@
 
 #MSG_SELFTEST_CHECK_FSENSOR c=20
 "Checking sensors "
-"Sprawdzanie czujnikow"
+"Kontrola czujnikow"
 
 #MSG_SELFTEST_CHECK_X c=20
 "Checking X axis  "
@@ -478,6 +530,10 @@
 "Live adjust Z"
 "Ustaw. Live Z"
 
+# c=20 r=6
+"Insert the filament (do not load it) into the extruder and then press the knob."
+"Wsun filament (nie uzywaj funkcji ladowania) do ekstrudera i nacisnij pokretlo."
+
 #MSG_LOAD_FILAMENT c=17
 "Load filament"
 "Ladowanie fil."
@@ -498,7 +554,7 @@
 "Load to nozzle"
 "Zaladuj do dyszy"
 
-#MSG_M117_V2_CALIBRATION c=25 r=1
+#MSG_M117_V2_CALIBRATION c=25
 "M117 First layer cal."
 "M117 Kal. 1. warstwy"
 
@@ -506,6 +562,14 @@
 "Main"
 "Menu glowne"
 
+#MSG_BL_HIGH c=12
+"Level Bright"
+"Poziom jasn."
+
+#MSG_BL_LOW c=12
+"Level Dimmed"
+"Poziom ciem."
+
 #MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
 "Measuring reference height of calibration point"
 "Okreslam wysokosc odniesienia punktu kalibracyjnego"
@@ -546,9 +610,13 @@
 "Mode"
 "Tryb"
 
+# c=20 r=3
+"MK3 firmware detected on MK3S printer"
+"Wykryto firmware MK3 w drukarce MK3S"
+
 #MSG_NORMAL
 "Normal"
-"Normalny"
+"Normalni"
 
 #MSG_SILENT
 "Silent"
@@ -638,7 +706,7 @@
 "Nozzle"
 "Dysza"
 
-#MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
+#MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
 "Old settings found. Default PID, Esteps etc. will be set."
 "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
 
@@ -670,7 +738,7 @@
 "PINDA Heating"
 "Grzanie sondy PINDA"
 
-#MSG_PAPER c=20 r=8
+#MSG_PAPER c=20 r=10
 "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 "Umiesc kartke papieru na stole roboczym i podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke."
 
@@ -742,6 +810,10 @@
 "Preheating nozzle. Please wait."
 "Nagrzewanie dyszy. Prosze czekac."
 
+# c=14
+"PINDA"
+"\x00"
+
 #
 "Please upgrade."
 "Prosze zaktualizowac."
@@ -750,6 +822,10 @@
 "Press knob to preheat nozzle and continue."
 "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
 
+#MSG_FS_PAUSE c=5
+"Pause"
+"Pauza"
+
 #
 "Power failures"
 "Zaniki zasilania"
@@ -758,11 +834,11 @@
 "Print aborted"
 "Druk przerwany"
 
-#
+# c=20
 "Preheating to load"
-"Nagrzew. do ladowania"
+"Nagrzew.do ladowania"
 
-#
+# c=20
 "Preheating to unload"
 "Nagrzew. do rozlad."
 
@@ -814,17 +890,21 @@
 "Rear side [um]"
 "Tyl [um]"
 
-#MSG_RECOVERING_PRINT c=20 r=1
+# c=20 r=4
+"Please unload the filament first, then repeat this action."
+"Najpierw rozladuj filament, nastepnie powtorz czynnosc."
+
+#MSG_RECOVERING_PRINT c=20
 "Recovering print    "
-"Wznawianie wydruku"
+"Wznawianie wydruku  "
 
-#MSG_REMOVE_OLD_FILAMENT c=20 r=4
+#MSG_REMOVE_OLD_FILAMENT c=20 r=5
 "Remove old filament and press the knob to start loading new filament."
 "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
 
-#
+# c=20
 "Prusa i3 MK3S OK."
-"Prusa i3 MK3S OK"
+"\x00"
 
 #MSG_CALIBRATE_BED_RESET
 "Reset XYZ calibr."
@@ -838,7 +918,7 @@
 "Resume print"
 "Wznowic wydruk"
 
-#MSG_RESUMING_PRINT c=20 r=1
+#MSG_RESUMING_PRINT c=20
 "Resuming print"
 "Wznawianie druku"
 
@@ -906,11 +986,23 @@
 "Set temperature:"
 "Ustaw temperature:"
 
+# c=20
+"Prusa i3 MK2.5 OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK2.5S OK."
+"\x00"
+
+# c=20
+"Prusa i3 MK3 OK."
+"\x00"
+
 #MSG_SETTINGS
 "Settings"
 "Ustawienia"
 
-#MSG_SHOW_END_STOPS c=17 r=1
+#MSG_SHOW_END_STOPS c=18
 "Show end stops"
 "Pokaz krancowki"
 
@@ -918,7 +1010,7 @@
 "Sensor state"
 "Stan czujnikow"
 
-#MSG_FILE_CNT c=20 r=4
+#MSG_FILE_CNT c=20 r=6
 "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 "Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
 
@@ -958,6 +1050,10 @@
 "Sound"
 "Dzwiek"
 
+# c=7
+"Runouts"
+"Konce f"
+
 #
 "Some problem encountered, Z-leveling enforced ..."
 "Wykryto problem, wymuszono poziomowanie osi Z."
@@ -965,6 +1061,7 @@
 #MSG_SOUND_ONCE
 "Once"
 "1-raz"
+
 #MSG_SPEED
 "Speed"
 "Predkosc"
@@ -1001,9 +1098,9 @@
 "Select filament:"
 "Wybierz filament:"
 
-#MSG_TEMP_CALIBRATION c=12 r=1
+#MSG_TEMP_CALIBRATION c=14
 "Temp. cal."
-"Kalibracja temp."
+"Kalib. temp."
 
 #
 "Select temperature which matches your material."
@@ -1021,6 +1118,10 @@
 "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 "Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
 
+# c=20 r=3
+"Sensor verified, remove the filament now."
+"Czujnik sprawdzony, wyciagnij filament."
+
 #MSG_TEMPERATURE
 "Temperature"
 "Temperatura"
@@ -1029,7 +1130,7 @@
 "Temperatures"
 "Temperatury"
 
-#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
+#MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
 "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 "Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
 
@@ -1125,7 +1226,7 @@
 "Wizard"
 "Asystent"
 
-#MSG_XYZ_DETAILS c=19 r=1
+#MSG_XYZ_DETAILS c=18
 "XYZ cal. details"
 "Szczegoly kal. XYZ"
 
@@ -1149,7 +1250,11 @@
 "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
 
-#
+#MSG_TIMEOUT c=12
+"Timeout"
+"Wyl. czas."
+
+#MSG_X_CORRECTION c=13
 "X-correct:"
 "Korekcja-X:"
 
@@ -1189,7 +1294,11 @@
 "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
 "Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."
 
-#
+# c=20 r=5
+"Verification failed, remove the filament and try again."
+"Niepowodzenie sprawdzenia, wyciagnij filament i sprobuj ponownie."
+
+#MSG_Y_CORRECTION c=13
 "Y-correct:"
 "Korekcja-Y:"
 
@@ -1271,7 +1380,7 @@
 
 #
 "G-code sliced for a different level. Continue?"
-"\x00"
+"G-code pociety dla innej wersji. Kontynuowac?"
 
 #
 "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
@@ -1297,13 +1406,13 @@
 "PINDA:"
 "\x00"
 
-#
+# c=20
 "Preheating to cut"
-"Nagrzewanie do obciecia"
+"Nagrzew. obciecia"
 
-#
+# c=20
 "Preheating to eject"
-"Nagrzewanie do wysuniecia"
+"Nagrzew. wysuniecia"
 
 #
 "Printer nozzle diameter differs from the G-code. Continue?"
@@ -1313,6 +1422,10 @@
 "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 "Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
 
+# c=20
+"%s level expected"
+"Oczekiwano wersji %s"
+
 #
 "Rename"
 "Zmien nazwe"
@@ -1325,7 +1438,7 @@
 "Sensor info"
 "Info o sensorach"
 
-#
+#MSG_SHEET c=10
 "Sheet"
 "Plyta"
 
@@ -1333,14 +1446,15 @@
 "Assist"
 "Asyst."
 
-#
+# c=18
 "Steel sheets"
 "Plyty stalowe"
 
-#
+#MSG_Z_CORRECTION c=13
 "Z-correct:"
 "Korekcja-Z:"
 
 #MSG_Z_PROBE_NR
 "Z-probe nr."
 "Ilosc Pomiarow"
+

+ 592 - 531
lang/po/Firmware.pot

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: en\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:17:55 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:17:55 PM\n"
+"POT-Creation-Date: Wed May 13 17:40:37 CEST 2020\n"
+"PO-Revision-Date: Wed May 13 17:40:37 CEST 2020\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,18 +20,28 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr ""
 
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr ""
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr ""
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
+#: messages.c:36
 msgid " of 4"
 msgstr ""
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
+#: messages.c:56
 msgid " of 9"
 msgstr ""
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
+#: ultralcd.cpp:3064
 msgid "[0;0] point offset"
 msgstr ""
 
@@ -46,53 +56,48 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2470
+#: ultralcd.cpp:2460
 msgid ">Cancel"
 msgstr ""
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
+#: ultralcd.cpp:3184
 msgid "Adjusting Z:"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
+#: ultralcd.cpp:8677
 msgid "All correct      "
 msgstr ""
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
+#: messages.c:99
 msgid "All is done. Happy printing!"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1993
+#: ultralcd.cpp:1956
 msgid "Ambient"
 msgstr ""
 
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
 msgid "and press the knob"
 msgstr ""
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
+#: ultralcd.cpp:3506
 msgid "Are left and right Z~carriages all up?"
 msgstr ""
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr ""
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
 msgstr ""
 
 # MSG_AUTO_HOME
@@ -100,723 +105,773 @@ msgstr ""
 msgid "Auto home"
 msgstr ""
 
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
 msgid "AutoLoad filament"
 msgstr ""
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
+#: ultralcd.cpp:4445
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr ""
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
+#: ultralcd.cpp:2804
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr ""
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
+#: ultralcd.cpp:8325
 msgid "Axis length"
 msgstr ""
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
+#: ultralcd.cpp:8327
 msgid "Axis"
 msgstr ""
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
+#: ultralcd.cpp:8269
 msgid "Bed / Heater"
 msgstr ""
 
 # MSG_BED_DONE
-#: messages.c:16
+#: messages.c:15
 msgid "Bed done"
 msgstr ""
 
 # MSG_BED_HEATING
-#: messages.c:17
+#: messages.c:16
 msgid "Bed Heating"
 msgstr ""
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
+#: ultralcd.cpp:5861
 msgid "Bed level correct"
 msgstr ""
 
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr ""
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr ""
 
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr ""
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr ""
+
 # MSG_BED
-#: messages.c:15
+#: messages.c:14
 msgid "Bed"
 msgstr ""
 
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
 msgid "Belt status"
 msgstr ""
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
+#: messages.c:67
 msgid "Blackout occurred. Recover print?"
 msgstr ""
 
 # 
-#: ultralcd.cpp:8404
+#: ultralcd.cpp:8679
 msgid "Calibrating home"
 msgstr ""
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
+#: ultralcd.cpp:5850
 msgid "Calibrate XYZ"
 msgstr ""
 
 # MSG_HOMEYZ
-#: messages.c:48
+#: messages.c:44
 msgid "Calibrate Z"
 msgstr ""
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
+#: ultralcd.cpp:4637
 msgid "Calibrate"
 msgstr ""
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr ""
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
+#: messages.c:19
 msgid "Calibrating Z"
 msgstr ""
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr ""
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
+#: ultralcd.cpp:865
 msgid "Calibration done"
 msgstr ""
 
 # MSG_MENU_CALIBRATION
-#: messages.c:61
+#: messages.c:57
 msgid "Calibration"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:4815
 msgid "Cancel"
 msgstr ""
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:8812
+#: ultralcd.cpp:9090
 msgid "Card removed"
 msgstr ""
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2719
+#: ultralcd.cpp:2709
 msgid "Color not correct"
 msgstr ""
 
 # MSG_COOLDOWN
-#: messages.c:23
+#: messages.c:22
 msgid "Cooldown"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4584
+#: ultralcd.cpp:4570
 msgid "Copy selected language?"
 msgstr ""
 
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr ""
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
 msgstr ""
 
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
 msgstr ""
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
+#: messages.c:23
 msgid "Crash detected."
 msgstr ""
 
 # 
-#: Marlin_main.cpp:596
+#: Marlin_main.cpp:607
 msgid "Crash detected. Resume print?"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1837
+#: ultralcd.cpp:1785
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
+#: ultralcd.cpp:6002
 msgid "Current"
 msgstr ""
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
+#: ultralcd.cpp:2163
 msgid "Date:"
 msgstr ""
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
+#: ultralcd.cpp:5743
 msgid "Disable steppers"
 msgstr ""
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
+#: messages.c:13
 msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 msgstr ""
 
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
+#: ultralcd.cpp:5125
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr ""
 
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
 msgid "E-correct:"
 msgstr ""
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
+#: messages.c:49
 msgid "Eject filament"
 msgstr ""
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
+#: mmu.cpp:1416
 msgid "Ejecting filament"
 msgstr ""
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
 msgid "Endstop not hit"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
+#: ultralcd.cpp:8287
 msgid "Endstop"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
+#: ultralcd.cpp:8275
 msgid "Endstops"
 msgstr ""
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
+#: ultralcd.cpp:6998
 msgid "Error - static memory has been overwritten"
 msgstr ""
 
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr ""
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr ""
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr ""
+
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
+#: ultralcd.cpp:4458
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr ""
 
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr ""
+
 # MSG_ERROR
-#: messages.c:28
+#: messages.c:25
 msgid "ERROR:"
 msgstr ""
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
+#: ultralcd.cpp:8686
 msgid "Extruder fan:"
 msgstr ""
 
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
 msgid "Extruder info"
 msgstr ""
 
 # MSG_MOVE_E
-#: messages.c:29
+#: messages.c:26
 msgid "Extruder"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6952
+#: ultralcd.cpp:6985
 msgid "Fail stats MMU"
 msgstr ""
 
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr ""
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr ""
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6949
+#: ultralcd.cpp:6982
 msgid "Fail stats"
 msgstr ""
 
 # MSG_FAN_SPEED c=14
-#: messages.c:31
+#: messages.c:28
 msgid "Fan speed"
 msgstr ""
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:78
+#: messages.c:74
 msgid "Fan test"
 msgstr ""
 
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr ""
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr ""
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr ""
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
 msgstr ""
 
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
 msgstr ""
 
-# 
-#: ultralcd.cpp:1836
+#  c=14
+#: ultralcd.cpp:1784
 msgid "Filam. runouts"
 msgstr ""
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
+#: messages.c:29
 msgid "Filament extruding & with correct color?"
 msgstr ""
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
+#: ultralcd.cpp:2705
 msgid "Filament not loaded"
 msgstr ""
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
+#: messages.c:80
 msgid "Filament sensor"
 msgstr ""
 
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
 msgid "Filament used"
 msgstr ""
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
+#: ultralcd.cpp:2870
 msgid "Print time"
 msgstr ""
 
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr ""
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr ""
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
 msgid "File incomplete. Continue anyway?"
 msgstr ""
 
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
 msgid "Finishing movements"
 msgstr ""
 
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
 msgid "First layer cal."
 msgstr ""
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:5046
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr ""
 
 # 
-#: mmu.cpp:724
+#: mmu.cpp:727
 msgid "Fix the issue and then press button on MMU unit."
 msgstr ""
 
 # MSG_FLOW
-#: ultralcd.cpp:7038
+#: ultralcd.cpp:7125
 msgid "Flow"
 msgstr ""
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
+#: ultralcd.cpp:2156
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
+#: messages.c:71
 msgid "Front print fan?"
 msgstr ""
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
+#: ultralcd.cpp:3266
 msgid "Front side[um]"
 msgstr ""
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
+#: ultralcd.cpp:8333
 msgid "Front/left fans"
 msgstr ""
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
+#: ultralcd.cpp:8263
 msgid "Heater/Thermistor"
 msgstr ""
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
+#: Marlin_main.cpp:9440
 msgid "Heating disabled by safety timer."
 msgstr ""
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:47
+#: messages.c:43
 msgid "Heating done."
 msgstr ""
 
 # MSG_HEATING
-#: messages.c:46
+#: messages.c:42
 msgid "Heating"
 msgstr ""
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
+#: ultralcd.cpp:5025
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr ""
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
+#: ultralcd.cpp:2157
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:37
+#: messages.c:34
 msgid "Change filament"
 msgstr ""
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
+#: ultralcd.cpp:2620
 msgid "Change success!"
 msgstr ""
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
+#: ultralcd.cpp:2697
 msgid "Changed correctly?"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
+#: messages.c:77
 msgid "Checking bed     "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
+#: ultralcd.cpp:8668
 msgid "Checking endstops"
 msgstr ""
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
+#: ultralcd.cpp:8674
 msgid "Checking hotend  "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
+#: messages.c:78
 msgid "Checking sensors "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
+#: ultralcd.cpp:7482
 msgid "Checking X axis  "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
+#: ultralcd.cpp:7491
 msgid "Checking Y axis  "
 msgstr ""
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
+#: ultralcd.cpp:8671
 msgid "Checking Z axis  "
 msgstr ""
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
+#: messages.c:45
 msgid "Choose extruder:"
 msgstr ""
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
+#: messages.c:46
 msgid "Choose filament:"
 msgstr ""
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:30
+#: messages.c:27
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
+#: ultralcd.cpp:5055
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr ""
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
+#: ultralcd.cpp:5063
 msgid "I will run z calibration now."
 msgstr ""
 
 # MSG_WATCH
-#: messages.c:99
+#: messages.c:97
 msgid "Info screen"
 msgstr ""
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
+#: ultralcd.cpp:2605
 msgid "Insert filament"
 msgstr ""
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
+#: ultralcd.cpp:4835
 msgid "Is filament loaded?"
 msgstr ""
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
+#: messages.c:90
 msgid "Is steel sheet on heatbed?"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1779
+#: ultralcd.cpp:1727
 msgid "Last print failures"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1756
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr ""
+
+# 
+#: ultralcd.cpp:1704
 msgid "Last print"
 msgstr ""
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
+#: messages.c:72
 msgid "Left hotend fan?"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3011
+#: ultralcd.cpp:2993
 msgid "Left"
 msgstr ""
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
+#: ultralcd.cpp:3264
 msgid "Left side [um]"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5747
+#: ultralcd.cpp:5766
 msgid "Lin. correction"
 msgstr ""
 
 # MSG_BABYSTEP_Z
-#: messages.c:13
+#: messages.c:12
 msgid "Live adjust Z"
 msgstr ""
 
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr ""
+
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:51
+#: messages.c:47
 msgid "Load filament"
 msgstr ""
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2645
 msgid "Loading color"
 msgstr ""
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:52
+#: messages.c:48
 msgid "Loading filament"
 msgstr ""
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
+#: ultralcd.cpp:8317
 msgid "Loose pulley"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6944
 msgid "Load to nozzle"
 msgstr ""
 
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
 msgid "M117 First layer cal."
 msgstr ""
 
 # MSG_MAIN
-#: messages.c:56
+#: messages.c:52
 msgid "Main"
 msgstr ""
 
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr ""
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr ""
+
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
+#: messages.c:55
 msgid "Measuring reference height of calibration point"
 msgstr ""
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
+#: ultralcd.cpp:5856
 msgid "Mesh Bed Leveling"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
+#: mmu.cpp:765
 msgid "MMU OK. Resuming position..."
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
+#: mmu.cpp:758
 msgid "MMU OK. Resuming temperature..."
 msgstr ""
 
 # 
-#: ultralcd.cpp:3052
+#: ultralcd.cpp:3034
 msgid "Measured skew"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1780
+#: ultralcd.cpp:1728
 msgid "MMU fails"
 msgstr ""
 
 # 
-#: mmu.cpp:1592
+#: mmu.cpp:1588
 msgid "MMU load failed     "
 msgstr ""
 
 # 
-#: ultralcd.cpp:1781
+#: ultralcd.cpp:1729
 msgid "MMU load fails"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
+#: mmu.cpp:776
 msgid "MMU OK. Resuming..."
 msgstr ""
 
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
 msgstr ""
 
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr ""
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
 msgstr ""
 
 # 
-#: mmu.cpp:719
+#: mmu.cpp:722
 msgid "MMU needs user attention."
 msgstr ""
 
 # 
-#: ultralcd.cpp:1807
+#: ultralcd.cpp:1755
 msgid "MMU power fails"
 msgstr ""
 
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
 msgstr ""
 
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
 msgstr ""
 
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2203
+#: ultralcd.cpp:2186
 msgid "MMU2 connected"
 msgstr ""
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:83
+#: messages.c:79
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
+#: ultralcd.cpp:5741
 msgid "Move axis"
 msgstr ""
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4375
+#: ultralcd.cpp:4361
 msgid "Move X"
 msgstr ""
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4376
+#: ultralcd.cpp:4362
 msgid "Move Y"
 msgstr ""
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4377
+#: ultralcd.cpp:4363
 msgid "Move Z"
 msgstr ""
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5293
+#: Marlin_main.cpp:5541
 msgid "No move."
 msgstr ""
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6878
+#: ultralcd.cpp:6911
 msgid "No SD card"
 msgstr ""
 
-# 
-#: ultralcd.cpp:3017
+# MSG_NA
+#: messages.c:107
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:62
+#: messages.c:58
 msgid "No"
 msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
+#: ultralcd.cpp:8265
 msgid "Not connected"
 msgstr ""
 
@@ -826,527 +881,572 @@ msgid "New firmware version available:"
 msgstr ""
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
+#: messages.c:75
 msgid "Not spinning"
 msgstr ""
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
+#: ultralcd.cpp:4946
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr ""
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
+#: ultralcd.cpp:5071
 msgid "Now I will preheat nozzle for PLA."
 msgstr ""
 
 # MSG_NOZZLE
-#: messages.c:63
+#: messages.c:59
 msgid "Nozzle"
 msgstr ""
 
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr ""
 
 # 
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:5062
 msgid "Now remove the test print from steel sheet."
 msgstr ""
 
 # 
-#: ultralcd.cpp:1706
+#: ultralcd.cpp:1654
 msgid "Nozzle FAN"
 msgstr ""
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
+#: ultralcd.cpp:6875
 msgid "Pause print"
 msgstr ""
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
+#: ultralcd.cpp:1539
 msgid "PID cal.           "
 msgstr ""
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
+#: ultralcd.cpp:1545
 msgid "PID cal. finished"
 msgstr ""
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
+#: ultralcd.cpp:5862
 msgid "PID calibration"
 msgstr ""
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
+#: ultralcd.cpp:896
 msgid "PINDA Heating"
 msgstr ""
 
-# MSG_PAPER c=20 r=8
-#: messages.c:64
+# MSG_PAPER c=20 r=10
+#: messages.c:60
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr ""
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
+#: ultralcd.cpp:5128
 msgid "Please clean heatbed and then press the knob."
 msgstr ""
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
+#: messages.c:21
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr ""
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
+#: ultralcd.cpp:8257
 msgid "Please check :"
 msgstr ""
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
+#: messages.c:98
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr ""
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
+#: Marlin_main.cpp:3138
 msgid "Please open idler and remove filament manually."
 msgstr ""
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
+#: messages.c:61
 msgid "Please place steel sheet on heatbed."
 msgstr ""
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
+#: messages.c:64
 msgid "Please press the knob to unload filament"
 msgstr ""
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
+#: messages.c:66
 msgid "Please pull out filament immediately"
 msgstr ""
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
+#: mmu.cpp:1422
 msgid "Please remove filament and then press the knob."
 msgstr ""
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
+#: messages.c:70
 msgid "Please remove steel sheet from heatbed."
 msgstr ""
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
+#: Marlin_main.cpp:4583
 msgid "Please run XYZ calibration first."
 msgstr ""
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
+#: mmu.cpp:1341
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr ""
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:66
+#: messages.c:62
 msgid "Please wait"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5070
+#: ultralcd.cpp:5061
 msgid "Please remove shipping helpers first."
 msgstr ""
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
+#: messages.c:63
 msgid "Preheat the nozzle!"
 msgstr ""
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6825
+#: ultralcd.cpp:6853
 msgid "Preheat"
 msgstr ""
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
+#: messages.c:100
 msgid "Preheating nozzle. Please wait."
 msgstr ""
 
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
 # 
 #: util.cpp:297
 msgid "Please upgrade."
 msgstr ""
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
+#: Marlin_main.cpp:11526
 msgid "Press knob to preheat nozzle and continue."
 msgstr ""
 
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr ""
+
 # 
-#: ultralcd.cpp:1835
+#: ultralcd.cpp:1783
 msgid "Power failures"
 msgstr ""
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:69
+#: messages.c:65
 msgid "Print aborted"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2452
+#  c=20
+#: ultralcd.cpp:2442
 msgid "Preheating to load"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2456
+#  c=20
+#: ultralcd.cpp:2446
 msgid "Preheating to unload"
 msgstr ""
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
+#: ultralcd.cpp:8689
 msgid "Print fan:"
 msgstr ""
 
 # MSG_CARD_MENU
-#: messages.c:21
+#: messages.c:20
 msgid "Print from SD"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2301
+#: ultralcd.cpp:2289
 msgid "Press the knob"
 msgstr ""
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
+#: ultralcd.cpp:1118
 msgid "Print paused"
 msgstr ""
 
 # 
-#: mmu.cpp:723
+#: mmu.cpp:726
 msgid "Press the knob to resume nozzle temperature."
 msgstr ""
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
+#: messages.c:38
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr ""
 
 # 
-#: ultralcd.cpp:1707
+#: ultralcd.cpp:1655
 msgid "Print FAN"
 msgstr ""
 
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr ""
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr ""
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr ""
+
 # MSG_PRUSA3D
-#: ultralcd.cpp:2189
+#: ultralcd.cpp:2155
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
+#: ultralcd.cpp:3267
 msgid "Rear side [um]"
 msgstr ""
 
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr ""
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
 msgid "Recovering print    "
 msgstr ""
 
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr ""
 
-# 
+#  c=20
 #: 
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
+#: ultralcd.cpp:5867
 msgid "Reset XYZ calibr."
 msgstr ""
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3268
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
+#: ultralcd.cpp:6861
 msgid "Resume print"
 msgstr ""
 
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
 msgid "Resuming print"
 msgstr ""
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
+#: ultralcd.cpp:3265
 msgid "Right side[um]"
 msgstr ""
 
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr ""
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
 msgstr ""
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
+#: ultralcd.cpp:4864
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr ""
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
 msgstr ""
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3012
+#: ultralcd.cpp:2994
 msgid "Right"
 msgstr ""
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
+#: messages.c:35
 msgid "Searching bed calibration point"
 msgstr ""
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5779
 msgid "Select language"
 msgstr ""
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
+#: ultralcd.cpp:7812
 msgid "Self test OK"
 msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
+#: ultralcd.cpp:7582
 msgid "Self test start  "
 msgstr ""
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5820
+#: ultralcd.cpp:5843
 msgid "Selftest         "
 msgstr ""
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
+#: ultralcd.cpp:8255
 msgid "Selftest error !"
 msgstr ""
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:77
+#: messages.c:73
 msgid "Selftest failed  "
 msgstr ""
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1550
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr ""
 
 # 
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5102
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr ""
 
-# 
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3286
+msgid "Set temperature:"
+msgstr ""
+
+#  c=20
 #: 
-msgid "Select PLA filament:"
+msgid "Prusa i3 MK2.5 OK."
 msgstr ""
 
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
-msgid "Set temperature:"
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
 msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:86
+#: messages.c:82
 msgid "Settings"
 msgstr ""
 
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
 msgid "Show end stops"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4022
+#: ultralcd.cpp:4008
 msgid "Sensor state"
 msgstr ""
 
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr ""
 
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
 msgstr ""
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr ""
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3055
+#: ultralcd.cpp:3037
 msgid "Severe skew:"
 msgstr ""
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
 msgstr ""
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
+#: cardreader.cpp:745
 msgid "Sorting files"
 msgstr ""
 
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3054
+#: ultralcd.cpp:3036
 msgid "Slight skew:"
 msgstr ""
 
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
 msgstr ""
 
-# 
-#: Marlin_main.cpp:4875
-msgid "Some problem encountered, Z-leveling enforced ..."
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
 msgstr ""
 
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
+# 
+#: Marlin_main.cpp:5101
+msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr ""
 
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
 msgstr ""
 
 # MSG_SPEED
-#: ultralcd.cpp:7032
+#: ultralcd.cpp:7119
 msgid "Speed"
 msgstr ""
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
+#: messages.c:76
 msgid "Spinning"
 msgstr ""
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
+#: Marlin_main.cpp:4596
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr ""
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6945
+#: ultralcd.cpp:6978
 msgid "Statistics  "
 msgstr ""
 
 # MSG_STOP_PRINT
-#: messages.c:93
+#: messages.c:91
 msgid "Stop print"
 msgstr ""
 
 # MSG_STOPPED
-#: messages.c:94
+#: messages.c:92
 msgid "STOPPED. "
 msgstr ""
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6954
+#: ultralcd.cpp:6987
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
+#: ultralcd.cpp:8335
 msgid "Swapped"
 msgstr ""
 
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
 msgstr ""
 
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
 msgstr ""
 
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
 msgstr ""
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5873
 msgid "Temp. calibration"
 msgstr ""
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
+#: ultralcd.cpp:3933
 msgid "Temperature calibration failed"
 msgstr ""
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
+#: messages.c:94
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr ""
 
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr ""
+
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5717
+#: ultralcd.cpp:5739
 msgid "Temperature"
 msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2218
 msgid "Temperatures"
 msgstr ""
 
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr ""
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2891
 msgid "Total filament"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2892
 msgid "Total print time"
 msgstr ""
 
 # MSG_TUNE
-#: ultralcd.cpp:6822
+#: ultralcd.cpp:6850
 msgid "Tune"
 msgstr ""
 
@@ -1356,62 +1456,62 @@ msgid "Unload"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1804
+#: ultralcd.cpp:1752
 msgid "Total failures"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2308
+#: ultralcd.cpp:2296
 msgid "to load filament"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2312
+#: ultralcd.cpp:2300
 msgid "to unload filament"
 msgstr ""
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
+#: messages.c:95
 msgid "Unload filament"
 msgstr ""
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
+#: messages.c:96
 msgid "Unloading filament"
 msgstr ""
 
 # 
-#: ultralcd.cpp:1757
+#: ultralcd.cpp:1705
 msgid "Total"
 msgstr ""
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
+#: ultralcd.cpp:6001
 msgid "Used during print"
 msgstr ""
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
+#: ultralcd.cpp:2221
 msgid "Voltages"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2194
 msgid "unknown"
 msgstr ""
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5264
+#: Marlin_main.cpp:5511
 msgid "Wait for user..."
 msgstr ""
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
+#: ultralcd.cpp:3434
 msgid "Waiting for nozzle and bed cooling"
 msgstr ""
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
+#: ultralcd.cpp:3395
 msgid "Waiting for PINDA probe cooling"
 msgstr ""
 
@@ -1421,258 +1521,223 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr ""
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1510
 msgid "Warning: both printer type and motherboard type changed."
 msgstr ""
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1502
 msgid "Warning: motherboard type changed."
 msgstr ""
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1506
 msgid "Warning: printer type changed."
 msgstr ""
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
+#: Marlin_main.cpp:3128
 msgid "Was filament unload successful?"
 msgstr ""
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
+#: messages.c:81
 msgid "Wiring error"
 msgstr ""
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
+#: ultralcd.cpp:5834
 msgid "Wizard"
 msgstr ""
 
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
 msgid "XYZ cal. details"
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
+#: messages.c:18
 msgid "XYZ calibration failed. Please consult the manual."
 msgstr ""
 
 # MSG_YES
-#: messages.c:104
+#: messages.c:102
 msgid "Yes"
 msgstr ""
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
+#: messages.c:101
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
+#: ultralcd.cpp:3904
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
+#: ultralcd.cpp:3901
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5197
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
 msgid "X-correct:"
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
+#: ultralcd.cpp:3898
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
+#: ultralcd.cpp:3882
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr ""
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
+#: ultralcd.cpp:3885
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr ""
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
+#: ultralcd.cpp:6261
 msgid "Load all"
 msgstr ""
 
 # 
-#: ultralcd.cpp:3879
+#: ultralcd.cpp:3864
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr ""
 
 # 
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3870
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr ""
 
 # 
-#: ultralcd.cpp:3888
+#: ultralcd.cpp:3873
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr ""
 
 # 
-#: ultralcd.cpp:3009
+#: ultralcd.cpp:2991
 msgid "Y distance from min"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr ""
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr ""
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
 msgid "Y-correct:"
 msgstr ""
 
 # MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
+#: messages.c:105
+msgid "Off"
+msgstr ""
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
 msgstr ""
 
 # 
-#: messages.c:57
+#: messages.c:53
 msgid "Back"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5706
+#: ultralcd.cpp:5724
 msgid "Checks"
 msgstr ""
 
 # 
-#: ultralcd.cpp:8080
+#: ultralcd.cpp:8349
 msgid "False triggering"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4027
+#: ultralcd.cpp:4013
 msgid "FINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
 msgstr ""
 
 # 
-#: messages.c:87
+#: messages.c:83
 msgid "HW Setup"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4031
+#: ultralcd.cpp:4017
 msgid "IR:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
 msgstr ""
 
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5744
+#: ultralcd.cpp:5763
 msgid "Mesh bed leveling"
 msgstr ""
 
 # 
-#: Marlin_main.cpp:852
+#: Marlin_main.cpp:872
 msgid "MK3S firmware detected on MK3 printer"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4508
+#: ultralcd.cpp:4494
 msgid "Mode change in progress ..."
 msgstr ""
 
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
 msgstr ""
 
 # 
@@ -1706,17 +1771,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr ""
 
 # 
-#: ultralcd.cpp:4023
+#: ultralcd.cpp:4009
 msgid "PINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2462
+#  c=20
+#: ultralcd.cpp:2452
 msgid "Preheating to cut"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2459
+#  c=20
+#: ultralcd.cpp:2449
 msgid "Preheating to eject"
 msgstr ""
 
@@ -1730,52 +1795,48 @@ msgstr ""
 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 msgstr ""
 
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr ""
+
 # 
-#: ultralcd.cpp:6786
+#: ultralcd.cpp:6814
 msgid "Rename"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6779
+#: ultralcd.cpp:6807
 msgid "Select"
 msgstr ""
 
 # 
-#: ultralcd.cpp:2229
+#: ultralcd.cpp:2212
 msgid "Sensor info"
 msgstr ""
 
-# 
-#: messages.c:58
+# MSG_SHEET c=10
+#: messages.c:54
 msgid "Sheet"
 msgstr ""
 
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5704
+#  c=18
+#: ultralcd.cpp:5722
 msgid "Steel sheets"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5199
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
 msgid "Z-correct:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
 msgstr ""
 

+ 1842 - 1782
lang/po/Firmware_cs.po

@@ -1,1782 +1,1842 @@
-# Translation of Prusa-Firmware into Czech.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: cs\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:19:09 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:19:09 PM\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
-msgid " of 4"
-msgstr " z 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
-msgid " of 9"
-msgstr " z 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
-msgid "[0;0] point offset"
-msgstr "[0;0] odsazeni bodu"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Crash detekce muze\x0abyt zapnuta pouze v\x0aNormal modu"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "POZOR:\x0aCrash detekce\x0adeaktivovana ve\x0aStealth modu"
-
-# 
-#: ultralcd.cpp:2470
-msgid ">Cancel"
-msgstr ">Zrusit"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
-msgid "Adjusting Z:"
-msgstr "Doladeni Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
-msgid "All correct      "
-msgstr "Vse OK "
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
-msgid "All is done. Happy printing!"
-msgstr "Vse je hotovo."
-
-# 
-#: ultralcd.cpp:1993
-msgid "Ambient"
-msgstr "Okoli"
-
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
-msgid "and press the knob"
-msgstr "a stisknete tlacitko"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
-msgid "Are left and right Z~carriages all up?"
-msgstr "Dojely oba Z voziky k~hornimu dorazu?"
-
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin   [zap]"
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr ""
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [vyp]"
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr ""
-
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
-msgid "AutoLoad filament"
-msgstr "AutoZavedeni fil."
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Automaticke zavadeni filamentu je dostupne pouze pri zapnutem filament senzoru..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
-msgid "Axis length"
-msgstr "Delka osy"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
-msgid "Axis"
-msgstr "Osa"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
-msgid "Bed / Heater"
-msgstr "Podlozka / Topeni"
-
-# MSG_BED_DONE
-#: messages.c:16
-msgid "Bed done"
-msgstr "Bed OK."
-
-# MSG_BED_HEATING
-#: messages.c:17
-msgid "Bed Heating"
-msgstr "Zahrivani bedu"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
-msgid "Bed level correct"
-msgstr "Korekce podlozky"
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Podlozka"
-
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
-msgid "Belt status"
-msgstr "Stav remenu"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
-msgid "Blackout occurred. Recover print?"
-msgstr "Detekovan vypadek proudu.Obnovit tisk?"
-
-# 
-#: ultralcd.cpp:8404
-msgid "Calibrating home"
-msgstr "Kalibruji vychozi poz."
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
-msgid "Calibrate XYZ"
-msgstr "Kalibrace XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:48
-msgid "Calibrate Z"
-msgstr "Kalibrovat Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
-msgid "Calibrate"
-msgstr "Zkalibrovat"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
-msgid "Calibrating Z"
-msgstr "Kalibruji Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
-msgid "Calibration done"
-msgstr "Kalibrace OK"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:61
-msgid "Calibration"
-msgstr "Kalibrace"
-
-# 
-#: ultralcd.cpp:4828
-msgid "Cancel"
-msgstr "Zrusit"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:8812
-msgid "Card removed"
-msgstr "Karta vyjmuta"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2719
-msgid "Color not correct"
-msgstr "Barva neni cista"
-
-# MSG_COOLDOWN
-#: messages.c:23
-msgid "Cooldown"
-msgstr "Zchladit"
-
-# 
-#: ultralcd.cpp:4584
-msgid "Copy selected language?"
-msgstr "Kopirovat vybrany jazyk?"
-
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Crash det.  [zap]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr ""
-
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Crash det.  [vyp]"
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
-msgid "Crash detected."
-msgstr "Detekovan naraz."
-
-# 
-#: Marlin_main.cpp:596
-msgid "Crash detected. Resume print?"
-msgstr "Detekovan naraz. Obnovit tisk?"
-
-# 
-#: ultralcd.cpp:1837
-msgid "Crash"
-msgstr "Naraz"
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
-msgid "Current"
-msgstr "Pouze aktualni"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
-msgid "Date:"
-msgstr "Datum:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
-msgid "Disable steppers"
-msgstr "Vypnout motory"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
-
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
-msgid "E-correct:"
-msgstr "Korekce E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
-msgid "Eject filament"
-msgstr "Vysunout filament"
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
-msgid "Ejecting filament"
-msgstr "Vysouvam filament"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
-msgid "Endstop not hit"
-msgstr "Kon. spinac nesepnut"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
-msgid "Endstop"
-msgstr "Koncovy spinac"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
-msgid "Endstops"
-msgstr "Konc. spinace"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
-msgid "Error - static memory has been overwritten"
-msgstr "Chyba - Doslo k prepisu staticke pameti!"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
-
-# MSG_ERROR
-#: messages.c:28
-msgid "ERROR:"
-msgstr "CHYBA:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
-msgid "Extruder fan:"
-msgstr "Levy vent.:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
-msgid "Extruder info"
-msgstr ""
-
-# MSG_MOVE_E
-#: messages.c:29
-msgid "Extruder"
-msgstr ""
-
-# 
-#: ultralcd.cpp:6952
-msgid "Fail stats MMU"
-msgstr "Selhani MMU"
-
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "F. autozav. [zap]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "F. autozav. [N/A]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "F. autozav. [vyp]"
-
-# 
-#: ultralcd.cpp:6949
-msgid "Fail stats"
-msgstr "Selhani"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:31
-msgid "Fan speed"
-msgstr "Rychlost vent."
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:78
-msgid "Fan test"
-msgstr "Test ventilatoru"
-
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Kontr. vent.[zap]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Kontr. vent.[vyp]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Fil. senzor [zap]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Fil. senzor [N/A]"
-
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Fil. senzor [vyp]"
-
-# 
-#: ultralcd.cpp:1836
-msgid "Filam. runouts"
-msgstr "Vypadky filam."
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
-msgid "Filament extruding & with correct color?"
-msgstr "Filament vytlacen a spravne barvy?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
-msgid "Filament not loaded"
-msgstr "Filament nezaveden"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
-msgid "Filament sensor"
-msgstr "Senzor filamentu"
-
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
-msgid "Filament used"
-msgstr "Spotrebovano filamentu"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
-msgid "Print time"
-msgstr "Cas tisku"
-
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
-msgid "File incomplete. Continue anyway?"
-msgstr "Soubor nekompletni. Pokracovat?"
-
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
-msgid "Finishing movements"
-msgstr "Dokoncovani pohybu"
-
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
-msgid "First layer cal."
-msgstr "Kal. prvni vrstvy"
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny."
-
-# 
-#: mmu.cpp:724
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Opravte chybu a pote stisknete tlacitko na jednotce MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7038
-msgid "Flow"
-msgstr "Prutok"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
-msgid "Front print fan?"
-msgstr "Predni tiskovy vent?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
-msgid "Front side[um]"
-msgstr "Vpredu [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
-msgid "Front/left fans"
-msgstr "Predni/levy vent."
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
-msgid "Heater/Thermistor"
-msgstr "Topeni/Termistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
-msgid "Heating disabled by safety timer."
-msgstr "Zahrivani preruseno bezpecnostnim casovacem."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:47
-msgid "Heating done."
-msgstr "Zahrivani OK."
-
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Zahrivani"
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Vymenit filament"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
-msgid "Change success!"
-msgstr "Zmena uspesna!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
-msgid "Changed correctly?"
-msgstr "Vymena ok?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
-msgid "Checking bed     "
-msgstr "Kontrola podlozky"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
-msgid "Checking endstops"
-msgstr "Kontrola endstopu"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
-msgid "Checking hotend  "
-msgstr "Kontrola hotend "
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
-msgid "Checking sensors "
-msgstr "Kontrola senzoru"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
-msgid "Checking X axis  "
-msgstr "Kontrola osy X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
-msgid "Checking Y axis  "
-msgstr "Kontrola osy Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
-msgid "Checking Z axis  "
-msgstr "Kontrola osy Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Vyberte extruder:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Vyber filament:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr ""
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
-msgid "I will run z calibration now."
-msgstr "Nyni provedu z kalibraci."
-
-# MSG_WATCH
-#: messages.c:99
-msgid "Info screen"
-msgstr "Informace"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
-msgid "Insert filament"
-msgstr "Vlozte filament"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
-msgid "Is filament loaded?"
-msgstr "Je filament zaveden?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
-msgid "Is steel sheet on heatbed?"
-msgstr "Je tiskovy plat na podlozce?"
-
-# 
-#: ultralcd.cpp:1779
-msgid "Last print failures"
-msgstr "Selhani posl. tisku"
-
-# 
-#: ultralcd.cpp:1756
-msgid "Last print"
-msgstr "Posledni tisk"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
-msgid "Left hotend fan?"
-msgstr "Levy vent na trysce?"
-
-# 
-#: ultralcd.cpp:3011
-msgid "Left"
-msgstr "Vlevo"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
-msgid "Left side [um]"
-msgstr "Vlevo [um]"
-
-# 
-#: ultralcd.cpp:5747
-msgid "Lin. correction"
-msgstr "Korekce lin."
-
-# MSG_BABYSTEP_Z
-#: messages.c:13
-msgid "Live adjust Z"
-msgstr "Doladeni osy Z"
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:51
-msgid "Load filament"
-msgstr "Zavest filament"
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
-msgid "Loading color"
-msgstr "Cisteni barvy"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:52
-msgid "Loading filament"
-msgstr "Zavadeni filamentu"
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
-msgid "Loose pulley"
-msgstr "Uvolnena remenicka"
-
-# 
-#: ultralcd.cpp:6911
-msgid "Load to nozzle"
-msgstr "Zavest do trysky"
-
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
-msgid "M117 First layer cal."
-msgstr "M117 Kal. prvni vrstvy"
-
-# MSG_MAIN
-#: messages.c:56
-msgid "Main"
-msgstr "Hlavni nabidka"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
-msgid "Measuring reference height of calibration point"
-msgstr "Merim referencni vysku kalibracniho bodu"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
-msgid "Mesh Bed Leveling"
-msgstr ""
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Pokracuji v tisku..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Pokracuji v nahrivani..."
-
-# 
-#: ultralcd.cpp:3052
-msgid "Measured skew"
-msgstr "Merene zkoseni"
-
-# 
-#: ultralcd.cpp:1780
-msgid "MMU fails"
-msgstr "Selhani MMU"
-
-# 
-#: mmu.cpp:1592
-msgid "MMU load failed     "
-msgstr "Zavedeni MMU selhalo"
-
-# 
-#: ultralcd.cpp:1781
-msgid "MMU load fails"
-msgstr "MMU selhani zavadeni"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Pokracuji..."
-
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Mod      [Normal]"
-
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Mod       [tichy]"
-
-# 
-#: mmu.cpp:719
-msgid "MMU needs user attention."
-msgstr "MMU potrebuje zasah uzivatele."
-
-# 
-#: ultralcd.cpp:1807
-msgid "MMU power fails"
-msgstr "MMU vypadky proudu"
-
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Mod       [tichy]"
-
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Mod [automaticky]"
-
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Mod  [vys. vykon]"
-
-# 
-#: ultralcd.cpp:2203
-msgid "MMU2 connected"
-msgstr "MMU2 pripojeno"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:83
-msgid "Motor"
-msgstr ""
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
-msgid "Move axis"
-msgstr "Posunout osu"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4375
-msgid "Move X"
-msgstr "Posunout X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4376
-msgid "Move Y"
-msgstr "Posunout Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4377
-msgid "Move Z"
-msgstr "Posunout Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5293
-msgid "No move."
-msgstr "Bez pohybu."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6878
-msgid "No SD card"
-msgstr "Zadna SD karta"
-
-# 
-#: ultralcd.cpp:3017
-msgid "N/A"
-msgstr ""
-
-# MSG_NO
-#: messages.c:62
-msgid "No"
-msgstr "Ne"
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
-msgid "Not connected"
-msgstr "Nezapojeno "
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Vysla nova verze firmware:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
-msgid "Not spinning"
-msgstr "Netoci se"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem podlozky."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Nyni predehreji trysku pro PLA."
-
-# MSG_NOZZLE
-#: messages.c:63
-msgid "Nozzle"
-msgstr "Tryska"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
-
-# 
-#: ultralcd.cpp:5071
-msgid "Now remove the test print from steel sheet."
-msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu."
-
-# 
-#: ultralcd.cpp:1706
-msgid "Nozzle FAN"
-msgstr "Vent. trysky"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
-msgid "Pause print"
-msgstr "Pozastavit tisk"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
-msgid "PID cal.           "
-msgstr "PID kal. "
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
-msgid "PID cal. finished"
-msgstr "PID kal. ukoncena"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
-msgid "PID calibration"
-msgstr "PID kalibrace"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
-msgid "PINDA Heating"
-msgstr "Nahrivani PINDA"
-
-# MSG_PAPER c=20 r=8
-#: messages.c:64
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
-msgid "Please clean heatbed and then press the knob."
-msgstr "Prosim ocistete podlozku a stisknete tlacitko."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
-msgid "Please check :"
-msgstr "Zkontrolujte :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Prosim nahlednete do prirucky 3D tiskare a opravte problem. Pote obnovte Pruvodce restartovanim tiskarny."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
-msgid "Please open idler and remove filament manually."
-msgstr "Prosim otevrete idler a manualne odstrante filament."
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr "Umistete prosim tiskovy plat na podlozku"
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
-msgid "Please press the knob to unload filament"
-msgstr "Pro vysunuti filamentu stisknete prosim tlacitko"
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
-msgid "Please pull out filament immediately"
-msgstr "Prosim vyjmete urychlene filament"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
-msgid "Please remove filament and then press the knob."
-msgstr "Prosim vyjmete filament a pote stisknete tlacitko."
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr "Odstrante prosim tiskovy plat z podlozky."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
-msgid "Please run XYZ calibration first."
-msgstr "Nejprve spustte kalibraci XYZ."
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:66
-msgid "Please wait"
-msgstr "Prosim cekejte"
-
-# 
-#: ultralcd.cpp:5070
-msgid "Please remove shipping helpers first."
-msgstr "Nejprve prosim sundejte transportni soucastky."
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
-msgid "Preheat the nozzle!"
-msgstr "Predehrejte trysku!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6825
-msgid "Preheat"
-msgstr "Predehrev"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
-msgid "Preheating nozzle. Please wait."
-msgstr "Predehrev trysky. Prosim cekejte."
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Prosim aktualizujte."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko."
-
-# 
-#: ultralcd.cpp:1835
-msgid "Power failures"
-msgstr "Vypadky proudu"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:69
-msgid "Print aborted"
-msgstr "Tisk prerusen"
-
-# 
-#: ultralcd.cpp:2452
-msgid "Preheating to load"
-msgstr "Predehrev k zavedeni"
-
-# 
-#: ultralcd.cpp:2456
-msgid "Preheating to unload"
-msgstr "Predehrev k vyjmuti"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
-msgid "Print fan:"
-msgstr "Tiskovy vent.:"
-
-# MSG_CARD_MENU
-#: messages.c:21
-msgid "Print from SD"
-msgstr "Tisk z SD"
-
-# 
-#: ultralcd.cpp:2301
-msgid "Press the knob"
-msgstr "Stisknete hl. tlacitko"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
-msgid "Print paused"
-msgstr "Tisk pozastaven"
-
-# 
-#: mmu.cpp:723
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."
-
-# 
-#: ultralcd.cpp:1707
-msgid "Print FAN"
-msgstr "Tiskovy vent."
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2189
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
-msgid "Rear side [um]"
-msgstr "Vzadu [um]"
-
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
-msgid "Recovering print    "
-msgstr "Obnovovani tisku "
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
-
-# 
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
-msgid "Reset XYZ calibr."
-msgstr "Reset XYZ kalibr."
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
-msgid "Reset"
-msgstr ""
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
-msgid "Resume print"
-msgstr "Pokracovat"
-
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
-msgid "Resuming print"
-msgstr "Obnoveni tisku"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
-msgid "Right side[um]"
-msgstr "Vpravo [um]"
-
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "RPi port    [zap]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "RPi port    [vyp]"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Spusteni Pruvodce vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr ""
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "SD card [FlshAir]"
-
-# 
-#: ultralcd.cpp:3012
-msgid "Right"
-msgstr "Vpravo"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
-msgid "Searching bed calibration point"
-msgstr "Hledam kalibracni bod podlozky"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
-msgid "Select language"
-msgstr "Vyber jazyka"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
-msgid "Self test OK"
-msgstr ""
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
-msgid "Self test start  "
-msgstr "Self test start "
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5820
-msgid "Selftest         "
-msgstr "Selftest "
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
-msgid "Selftest error !"
-msgstr "Chyba Selftestu!"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:77
-msgid "Selftest failed  "
-msgstr "Selftest selhal "
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest."
-
-# 
-#: ultralcd.cpp:5111
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
-
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Vyberte PLA filament:"
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
-msgid "Set temperature:"
-msgstr "Nastavte teplotu:"
-
-# MSG_SETTINGS
-#: messages.c:86
-msgid "Settings"
-msgstr "Nastaveni"
-
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
-msgid "Show end stops"
-msgstr "Stav konc. spin."
-
-# 
-#: ultralcd.cpp:4022
-msgid "Sensor state"
-msgstr "Stav senzoru"
-
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Trideni   [Zadne]"
-
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Trideni     [cas]"
-
-# 
-#: ultralcd.cpp:3055
-msgid "Severe skew:"
-msgstr "Tezke zkoseni:"
-
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Trideni [Abeceda]"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
-msgid "Sorting files"
-msgstr "Trideni souboru"
-
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Zvuk    [hlasity]"
-
-# 
-#: ultralcd.cpp:3054
-msgid "Slight skew:"
-msgstr "Lehke zkoseni:"
-
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Zvuk    [vypnuto]"
-
-# 
-#: Marlin_main.cpp:4875
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Vyskytl se problem, srovnavam osu Z ..."
-
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Zvuk     [jednou]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Zvuk      [tichy]"
-
-# MSG_SPEED
-#: ultralcd.cpp:7032
-msgid "Speed"
-msgstr "Rychlost"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
-msgid "Spinning"
-msgstr "Toci se"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Je vyzadovana stabilni pokojova teplota 21-26C a pevna podlozka."
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6945
-msgid "Statistics  "
-msgstr "Statistika "
-
-# MSG_STOP_PRINT
-#: messages.c:93
-msgid "Stop print"
-msgstr "Zastavit tisk"
-
-# MSG_STOPPED
-#: messages.c:94
-msgid "STOPPED. "
-msgstr "ZASTAVENO."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6954
-msgid "Support"
-msgstr "Podpora"
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
-msgid "Swapped"
-msgstr "Prohozene"
-
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Tepl. kal. "
-
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Tepl. kal.  [zap]"
-
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Tepl. kal.  [vyp]"
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
-msgid "Temp. calibration"
-msgstr "Teplot. kalibrace"
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
-msgid "Temperature calibration failed"
-msgstr "Teplotni kalibrace selhala"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5717
-msgid "Temperature"
-msgstr "Teplota"
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
-msgid "Temperatures"
-msgstr "Teploty"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total filament"
-msgstr "Filament celkem"
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total print time"
-msgstr "Celkovy cas tisku"
-
-# MSG_TUNE
-#: ultralcd.cpp:6822
-msgid "Tune"
-msgstr "Ladit"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Vysunout"
-
-# 
-#: ultralcd.cpp:1804
-msgid "Total failures"
-msgstr "Celkem selhani"
-
-# 
-#: ultralcd.cpp:2308
-msgid "to load filament"
-msgstr "k zavedeni filamentu"
-
-# 
-#: ultralcd.cpp:2312
-msgid "to unload filament"
-msgstr "k vyjmuti filamentu"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
-msgid "Unload filament"
-msgstr "Vyjmout filament"
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
-msgid "Unloading filament"
-msgstr "Vysouvam filament"
-
-# 
-#: ultralcd.cpp:1757
-msgid "Total"
-msgstr "Celkem"
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
-msgid "Used during print"
-msgstr "Pouzite behem tisku"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
-msgid "Voltages"
-msgstr "Napeti"
-
-# 
-#: ultralcd.cpp:2211
-msgid "unknown"
-msgstr "neznamy"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5264
-msgid "Wait for user..."
-msgstr "Ceka se na uzivatele..."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Cekani na zchladnuti trysky a podlozky."
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
-msgid "Waiting for PINDA probe cooling"
-msgstr "Cekani na zchladnuti PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Pouzijte vyjmout pro odstraneni filamentu 1 pokud presahuje z PTFE trubicky za tiskarnou. Pouzijte vysunout, pokud neni videt."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Varovani: doslo ke zmene typu tiskarny a motherboardu."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
-msgid "Warning: motherboard type changed."
-msgstr "Varovani: doslo ke zmene typu motherboardu."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
-msgid "Warning: printer type changed."
-msgstr "Varovani: doslo ke zmene typu tiskarny."
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
-msgid "Was filament unload successful?"
-msgstr "Bylo vysunuti filamentu uspesne?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
-msgid "Wiring error"
-msgstr "Chyba zapojeni"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
-msgid "Wizard"
-msgstr "Pruvodce"
-
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
-msgid "XYZ cal. details"
-msgstr "Detaily XYZ kal."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
-
-# MSG_YES
-#: messages.c:104
-msgid "Yes"
-msgstr "Ano"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Pruvodce muzete kdykoliv znovu spustit z menu Kalibrace -> Pruvodce"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
-
-# 
-#: ultralcd.cpp:5197
-msgid "X-correct:"
-msgstr "Korekce X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
-msgid "Load all"
-msgstr "Zavest vse"
-
-# 
-#: ultralcd.cpp:3879
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
-
-# 
-#: ultralcd.cpp:3885
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
-
-# 
-#: ultralcd.cpp:3888
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
-
-# 
-#: ultralcd.cpp:3009
-msgid "Y distance from min"
-msgstr "Y vzdalenost od min"
-
-# 
-#: ultralcd.cpp:5198
-msgid "Y-correct:"
-msgstr "Korekce Y:"
-
-# MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [vyp]"
-
-# 
-#: messages.c:57
-msgid "Back"
-msgstr "Zpet"
-
-# 
-#: ultralcd.cpp:5706
-msgid "Checks"
-msgstr "Kontrola"
-
-# 
-#: ultralcd.cpp:8080
-msgid "False triggering"
-msgstr "Falesne spusteni"
-
-# 
-#: ultralcd.cpp:4027
-msgid "FINDA:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware  [Zadne]"
-
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [Prisne]"
-
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware[Varovat]"
-
-# 
-#: messages.c:87
-msgid "HW Setup"
-msgstr "HW nastaveni"
-
-# 
-#: ultralcd.cpp:4031
-msgid "IR:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Komp. magnetu[N/A]"
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Komp. magnetu[Vyp]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Komp. magnetu[Zap]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Mesh         [3x3]"
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Mesh         [7x7]"
-
-# 
-#: ultralcd.cpp:5744
-msgid "Mesh bed leveling"
-msgstr "Mesh Bed Leveling"
-
-# 
-#: Marlin_main.cpp:852
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "MK3S firmware detekovan na tiskarne MK3"
-
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "MMU mod  [Normal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "MMU Mod   [Tichy]"
-
-# 
-#: ultralcd.cpp:4508
-msgid "Mode change in progress ..."
-msgstr "Probiha zmena modu..."
-
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Model     [Zadne]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Model    [Prisne]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Model   [Varovat]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Tryska     [0.25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Tryska     [0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Tryska     [0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Tryska    [Zadne]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Tryska   [Prisne]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Tryska  [Varovat]"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr ""
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr ""
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "G-code je pripraven pro jiny typ tiskarny. Prosim preslicujte model znovu. Tisk zrusen."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "G-code je pripraven pro novejsi firmware. Pokracovat?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "G-code je pripraven pro novejsi firmware. Prosim aktualizujte firmware. Tisk zrusen."
-
-# 
-#: ultralcd.cpp:4023
-msgid "PINDA:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:2462
-msgid "Preheating to cut"
-msgstr "Predehrev k ustrizeni"
-
-# 
-#: ultralcd.cpp:2459
-msgid "Preheating to eject"
-msgstr "Predehrev k vysunuti"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Prumer trysky tiskarny se lisi od G-code. Pokracovat?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
-
-# 
-#: ultralcd.cpp:6786
-msgid "Rename"
-msgstr "Prejmenovat"
-
-# 
-#: ultralcd.cpp:6779
-msgid "Select"
-msgstr "Vybrat"
-
-# 
-#: ultralcd.cpp:2229
-msgid "Sensor info"
-msgstr "Senzor info"
-
-# 
-#: messages.c:58
-msgid "Sheet"
-msgstr "Plat"
-
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Zvuk     [Asist.]"
-
-# 
-#: ultralcd.cpp:5704
-msgid "Steel sheets"
-msgstr "Tiskove platy"
-
-# 
-#: ultralcd.cpp:5199
-msgid "Z-correct:"
-msgstr "Korekce Z:"
-
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Pocet mereni Z [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Pocet mereni Z [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Pocet mereni Z [5]"
-
+# Translation of Prusa-Firmware into Czech.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: cs\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Wed May 13 17:41:02 CEST 2020\n"
+"PO-Revision-Date: Wed May 13 17:41:02 CEST 2020\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
+
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 nebo starsi"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 nebo novejsi"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:36
+msgid " of 4"
+msgstr " z 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:56
+msgid " of 9"
+msgstr " z 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3064
+msgid "[0;0] point offset"
+msgstr "[0;0] odsazeni bodu"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Crash detekce muze\x0abyt zapnuta pouze v\x0aNormal modu"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "POZOR:\x0aCrash detekce\x0adeaktivovana ve\x0aStealth modu"
+
+# 
+#: ultralcd.cpp:2460
+msgid ">Cancel"
+msgstr ">Zrusit"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3184
+msgid "Adjusting Z:"
+msgstr "Doladeni Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8677
+msgid "All correct      "
+msgstr "Vse OK "
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:99
+msgid "All is done. Happy printing!"
+msgstr "Vse je hotovo."
+
+# 
+#: ultralcd.cpp:1956
+msgid "Ambient"
+msgstr "Okoli"
+
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
+msgid "and press the knob"
+msgstr "a stisknete tlacitko"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3506
+msgid "Are left and right Z~carriages all up?"
+msgstr "Dojely oba Z voziky k~hornimu dorazu?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr ""
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
+msgid "AutoLoad filament"
+msgstr "AutoZavedeni fil."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4445
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament senzoru..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2804
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8325
+msgid "Axis length"
+msgstr "Delka osy"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8327
+msgid "Axis"
+msgstr "Osa"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8269
+msgid "Bed / Heater"
+msgstr "Podlozka / Topeni"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Bed OK."
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Zahrivani bedu"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5861
+msgid "Bed level correct"
+msgstr "Korekce podlozky"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test remenu      "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Jasny"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Podsviceni"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Podlozka"
+
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
+msgid "Belt status"
+msgstr "Stav remenu"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:67
+msgid "Blackout occurred. Recover print?"
+msgstr "Detekovan vypadek proudu.Obnovit tisk?"
+
+# 
+#: ultralcd.cpp:8679
+msgid "Calibrating home"
+msgstr "Kalibruji vychozi poz."
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5850
+msgid "Calibrate XYZ"
+msgstr "Kalibrace XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:44
+msgid "Calibrate Z"
+msgstr "Kalibrovat Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4637
+msgid "Calibrate"
+msgstr "Zkalibrovat"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:19
+msgid "Calibrating Z"
+msgstr "Kalibruji Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:865
+msgid "Calibration done"
+msgstr "Kalibrace OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:57
+msgid "Calibration"
+msgstr "Kalibrace"
+
+# 
+#: ultralcd.cpp:4815
+msgid "Cancel"
+msgstr "Zrusit"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:9090
+msgid "Card removed"
+msgstr "Karta vyjmuta"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2709
+msgid "Color not correct"
+msgstr "Barva neni cista"
+
+# MSG_COOLDOWN
+#: messages.c:22
+msgid "Cooldown"
+msgstr "Zchladit"
+
+# 
+#: ultralcd.cpp:4570
+msgid "Copy selected language?"
+msgstr "Kopirovat vybrany jazyk?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr ""
+
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:23
+msgid "Crash detected."
+msgstr "Detekovan naraz."
+
+# 
+#: Marlin_main.cpp:607
+msgid "Crash detected. Resume print?"
+msgstr "Detekovan naraz. Obnovit tisk?"
+
+# 
+#: ultralcd.cpp:1785
+msgid "Crash"
+msgstr "Naraz"
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:6002
+msgid "Current"
+msgstr "Pouze aktualni"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2163
+msgid "Date:"
+msgstr "Datum:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5743
+msgid "Disable steppers"
+msgstr "Vypnout motory"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr "Pokr."
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5125
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
+msgid "E-correct:"
+msgstr "Korekce E:"
+
+# MSG_EJECT_FILAMENT c=17 r=1
+#: messages.c:49
+msgid "Eject filament"
+msgstr "Vysunout filament"
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1416
+msgid "Ejecting filament"
+msgstr "Vysouvam filament"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
+msgid "Endstop not hit"
+msgstr "Kon. spinac nesepnut"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8287
+msgid "Endstop"
+msgstr "Koncovy spinac"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8275
+msgid "Endstops"
+msgstr "Konc. spinace"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6998
+msgid "Error - static memory has been overwritten"
+msgstr "Chyba - Doslo k prepisu staticke pameti!"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Ustrihnout"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Strihani"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Strihani filamentu"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4458
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni."
+
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr "Temny"
+
+# MSG_ERROR
+#: messages.c:25
+msgid "ERROR:"
+msgstr "CHYBA:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8686
+msgid "Extruder fan:"
+msgstr "Levy vent.:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
+msgid "Extruder info"
+msgstr ""
+
+# MSG_MOVE_E
+#: messages.c:26
+msgid "Extruder"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6985
+msgid "Fail stats MMU"
+msgstr "Selhani MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "F. autozav."
+
+# 
+#: ultralcd.cpp:6982
+msgid "Fail stats"
+msgstr "Selhani"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:28
+msgid "Fan speed"
+msgstr "Rychlost vent."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:74
+msgid "Fan test"
+msgstr "Test ventilatoru"
+
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Kontr. vent."
+
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Fil. senzor"
+
+#  c=14
+#: ultralcd.cpp:1784
+msgid "Filam. runouts"
+msgstr "Vypadky filam."
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:29
+msgid "Filament extruding & with correct color?"
+msgstr "Filament vytlacen a spravne barvy?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2705
+msgid "Filament not loaded"
+msgstr "Filament nezaveden"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:80
+msgid "Filament sensor"
+msgstr "Senzor filamentu"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
+msgid "Filament used"
+msgstr "Spotrebovano filam."
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2870
+msgid "Print time"
+msgstr "Cas tisku"
+
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "FS reakce"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 a novejsi"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
+msgid "File incomplete. Continue anyway?"
+msgstr "Soubor nekompletni. Pokracovat?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
+msgid "Finishing movements"
+msgstr "Dokoncovani pohybu"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
+msgid "First layer cal."
+msgstr "Kal. prvni vrstvy"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:5046
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny."
+
+# 
+#: mmu.cpp:727
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Opravte chybu a pote stisknete tlacitko na jednotce MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:7125
+msgid "Flow"
+msgstr "Prutok"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2156
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:71
+msgid "Front print fan?"
+msgstr "Predni tiskovy vent?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3266
+msgid "Front side[um]"
+msgstr "Vpredu [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8333
+msgid "Front/left fans"
+msgstr "Predni/levy vent."
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8263
+msgid "Heater/Thermistor"
+msgstr "Topeni/Termistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9440
+msgid "Heating disabled by safety timer."
+msgstr "Zahrivani preruseno bezpecnostnim casovacem."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:43
+msgid "Heating done."
+msgstr "Zahrivani OK."
+
+# MSG_HEATING
+#: messages.c:42
+msgid "Heating"
+msgstr "Zahrivani"
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:5025
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2157
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:34
+msgid "Change filament"
+msgstr "Vymenit filament"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2620
+msgid "Change success!"
+msgstr "Zmena uspesna!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2697
+msgid "Changed correctly?"
+msgstr "Vymena ok?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:77
+msgid "Checking bed     "
+msgstr "Kontrola podlozky"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8668
+msgid "Checking endstops"
+msgstr "Kontrola endstopu"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8674
+msgid "Checking hotend  "
+msgstr "Kontrola hotend "
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:78
+msgid "Checking sensors "
+msgstr "Kontrola senzoru"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7482
+msgid "Checking X axis  "
+msgstr "Kontrola osy X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7491
+msgid "Checking Y axis  "
+msgstr "Kontrola osy Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8671
+msgid "Checking Z axis  "
+msgstr "Kontrola osy Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:45
+msgid "Choose extruder:"
+msgstr "Vyberte extruder:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:46
+msgid "Choose filament:"
+msgstr "Vyber filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:27
+msgid "Filament"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:5055
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:5063
+msgid "I will run z calibration now."
+msgstr "Nyni provedu z kalibraci."
+
+# MSG_WATCH
+#: messages.c:97
+msgid "Info screen"
+msgstr "Informace"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2605
+msgid "Insert filament"
+msgstr "Vlozte filament"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4835
+msgid "Is filament loaded?"
+msgstr "Je filament zaveden?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:90
+msgid "Is steel sheet on heatbed?"
+msgstr "Je tiskovy plat na podlozce?"
+
+# 
+#: ultralcd.cpp:1727
+msgid "Last print failures"
+msgstr "Selhani posl. tisku"
+
+# 
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy"
+
+# 
+#: ultralcd.cpp:1704
+msgid "Last print"
+msgstr "Posledni tisk"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:72
+msgid "Left hotend fan?"
+msgstr "Levy vent na trysce?"
+
+# 
+#: ultralcd.cpp:2993
+msgid "Left"
+msgstr "Vlevo"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3264
+msgid "Left side [um]"
+msgstr "Vlevo [um]"
+
+# 
+#: ultralcd.cpp:5766
+msgid "Lin. correction"
+msgstr "Korekce lin."
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Doladeni osy Z"
+
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko"
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:47
+msgid "Load filament"
+msgstr "Zavest filament"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2645
+msgid "Loading color"
+msgstr "Cisteni barvy"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:48
+msgid "Loading filament"
+msgstr "Zavadeni filamentu"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8317
+msgid "Loose pulley"
+msgstr "Uvolnena remenicka"
+
+# 
+#: ultralcd.cpp:6944
+msgid "Load to nozzle"
+msgstr "Zavest do trysky"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
+msgid "M117 First layer cal."
+msgstr "M117 Kal. prvni vrstvy"
+
+# MSG_MAIN
+#: messages.c:52
+msgid "Main"
+msgstr "Hlavni nabidka"
+
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr ""
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr ""
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:55
+msgid "Measuring reference height of calibration point"
+msgstr "Merim referencni vysku kalibracniho bodu"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:5856
+msgid "Mesh Bed Leveling"
+msgstr ""
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:765
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Pokracuji v tisku..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:758
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Pokracuji v nahrivani..."
+
+# 
+#: ultralcd.cpp:3034
+msgid "Measured skew"
+msgstr "Merene zkoseni"
+
+# 
+#: ultralcd.cpp:1728
+msgid "MMU fails"
+msgstr "Selhani MMU"
+
+# 
+#: mmu.cpp:1588
+msgid "MMU load failed     "
+msgstr "Zavedeni MMU selhalo"
+
+# 
+#: ultralcd.cpp:1729
+msgid "MMU load fails"
+msgstr "MMU selhani zavadeni"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:776
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Pokracuji..."
+
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Mod"
+
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr ""
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Tichy"
+
+# 
+#: mmu.cpp:722
+msgid "MMU needs user attention."
+msgstr "MMU potrebuje zasah uzivatele."
+
+# 
+#: ultralcd.cpp:1755
+msgid "MMU power fails"
+msgstr "MMU vypadky proudu"
+
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Tichy"
+
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Automaticky"
+
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Vys. vykon"
+
+# 
+#: ultralcd.cpp:2186
+msgid "MMU2 connected"
+msgstr "MMU2 pripojeno"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:79
+msgid "Motor"
+msgstr ""
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5741
+msgid "Move axis"
+msgstr "Posunout osu"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4361
+msgid "Move X"
+msgstr "Posunout X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4362
+msgid "Move Y"
+msgstr "Posunout Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4363
+msgid "Move Z"
+msgstr "Posunout Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5541
+msgid "No move."
+msgstr "Bez pohybu."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6911
+msgid "No SD card"
+msgstr "Zadna SD karta"
+
+# MSG_NA
+#: messages.c:107
+msgid "N/A"
+msgstr ""
+
+# MSG_NO
+#: messages.c:58
+msgid "No"
+msgstr "Ne"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8265
+msgid "Not connected"
+msgstr "Nezapojeno "
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Vysla nova verze firmware:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:75
+msgid "Not spinning"
+msgstr "Netoci se"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4946
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem podlozky."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:5071
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Nyni predehreji trysku pro PLA."
+
+# MSG_NOZZLE
+#: messages.c:59
+msgid "Nozzle"
+msgstr "Tryska"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
+
+# 
+#: ultralcd.cpp:5062
+msgid "Now remove the test print from steel sheet."
+msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu."
+
+# 
+#: ultralcd.cpp:1654
+msgid "Nozzle FAN"
+msgstr "Vent. trysky"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6875
+msgid "Pause print"
+msgstr "Pozastavit tisk"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1539
+msgid "PID cal.           "
+msgstr "PID kal. "
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1545
+msgid "PID cal. finished"
+msgstr "PID kal. ukoncena"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5862
+msgid "PID calibration"
+msgstr "PID kalibrace"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:896
+msgid "PINDA Heating"
+msgstr "Nahrivani PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:60
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5128
+msgid "Please clean heatbed and then press the knob."
+msgstr "Prosim ocistete podlozku a stisknete tlacitko."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:21
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8257
+msgid "Please check :"
+msgstr "Zkontrolujte :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:98
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Prosim nahlednete do prirucky 3D tiskare a opravte problem. Pote obnovte Pruvodce restartovanim tiskarny."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3138
+msgid "Please open idler and remove filament manually."
+msgstr "Prosim otevrete idler a manualne odstrante filament."
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:61
+msgid "Please place steel sheet on heatbed."
+msgstr "Umistete prosim tiskovy plat na podlozku"
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:64
+msgid "Please press the knob to unload filament"
+msgstr "Pro vysunuti filamentu stisknete prosim tlacitko"
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:66
+msgid "Please pull out filament immediately"
+msgstr "Prosim vyjmete urychlene filament"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1422
+msgid "Please remove filament and then press the knob."
+msgstr "Prosim vyjmete filament a pote stisknete tlacitko."
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:70
+msgid "Please remove steel sheet from heatbed."
+msgstr "Odstrante prosim tiskovy plat z podlozky."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4583
+msgid "Please run XYZ calibration first."
+msgstr "Nejprve spustte kalibraci XYZ."
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1341
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:62
+msgid "Please wait"
+msgstr "Prosim cekejte"
+
+# 
+#: ultralcd.cpp:5061
+msgid "Please remove shipping helpers first."
+msgstr "Nejprve prosim sundejte transportni soucastky."
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:63
+msgid "Preheat the nozzle!"
+msgstr "Predehrejte trysku!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6853
+msgid "Preheat"
+msgstr "Predehrev"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:100
+msgid "Preheating nozzle. Please wait."
+msgstr "Predehrev trysky. Prosim cekejte."
+
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Prosim aktualizujte."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11526
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr ""
+
+# 
+#: ultralcd.cpp:1783
+msgid "Power failures"
+msgstr "Vypadky proudu"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:65
+msgid "Print aborted"
+msgstr "Tisk prerusen"
+
+#  c=20
+#: ultralcd.cpp:2442
+msgid "Preheating to load"
+msgstr "Predehrev k zavedeni"
+
+#  c=20
+#: ultralcd.cpp:2446
+msgid "Preheating to unload"
+msgstr "Predehrev k vyjmuti"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8689
+msgid "Print fan:"
+msgstr "Tiskovy vent.:"
+
+# MSG_CARD_MENU
+#: messages.c:20
+msgid "Print from SD"
+msgstr "Tisk z SD"
+
+# 
+#: ultralcd.cpp:2289
+msgid "Press the knob"
+msgstr "Stisknete hl. tlacitko"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1118
+msgid "Print paused"
+msgstr "Tisk pozastaven"
+
+# 
+#: mmu.cpp:726
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:38
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."
+
+# 
+#: ultralcd.cpp:1655
+msgid "Print FAN"
+msgstr "Tiskovy vent."
+
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni"
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Prosim vlozte filament do prvni trubicky MMU a stisknete tlacitko k jeho zavedeni"
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Prosim nejdriv zavedte filament"
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2155
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3267
+msgid "Rear side [um]"
+msgstr "Vzadu [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Prosim vyjmete filament a zopakujte tuto akci"
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
+msgid "Recovering print    "
+msgstr "Obnovovani tisku    "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5867
+msgid "Reset XYZ calibr."
+msgstr "Reset XYZ kalibr."
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:3268
+msgid "Reset"
+msgstr ""
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:6861
+msgid "Resume print"
+msgstr "Pokracovat"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
+msgid "Resuming print"
+msgstr "Obnoveni tisku"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3265
+msgid "Right side[um]"
+msgstr "Vpravo [um]"
+
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr ""
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4864
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Spusteni Pruvodce vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?"
+
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr ""
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2994
+msgid "Right"
+msgstr "Vpravo"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:35
+msgid "Searching bed calibration point"
+msgstr "Hledam kalibracni bod podlozky"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5779
+msgid "Select language"
+msgstr "Vyber jazyka"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7812
+msgid "Self test OK"
+msgstr ""
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7582
+msgid "Self test start  "
+msgstr "Self test start "
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5843
+msgid "Selftest         "
+msgstr "Selftest "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8255
+msgid "Selftest error !"
+msgstr "Chyba Selftestu!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:73
+msgid "Selftest failed  "
+msgstr "Selftest selhal "
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1550
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest."
+
+# 
+#: ultralcd.cpp:5102
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3286
+msgid "Set temperature:"
+msgstr "Nastavte teplotu:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:82
+msgid "Settings"
+msgstr "Nastaveni"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
+msgid "Show end stops"
+msgstr "Stav konc. spin."
+
+# 
+#: ultralcd.cpp:4008
+msgid "Sensor state"
+msgstr "Stav senzoru"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
+
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Trideni"
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Zadne"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Cas"
+
+# 
+#: ultralcd.cpp:3037
+msgid "Severe skew:"
+msgstr "Tezke zkoseni:"
+
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Abeceda"
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:745
+msgid "Sorting files"
+msgstr "Trideni souboru"
+
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Hlasity"
+
+# 
+#: ultralcd.cpp:3036
+msgid "Slight skew:"
+msgstr "Lehke zkoseni:"
+
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Zvuk"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:5101
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Vyskytl se problem, srovnavam osu Z ..."
+
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Jednou"
+
+# MSG_SPEED
+#: ultralcd.cpp:7119
+msgid "Speed"
+msgstr "Rychlost"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:76
+msgid "Spinning"
+msgstr "Toci se"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4596
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Je vyzadovana stabilni pokojova teplota 21-26C a pevna podlozka."
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6978
+msgid "Statistics  "
+msgstr "Statistika "
+
+# MSG_STOP_PRINT
+#: messages.c:91
+msgid "Stop print"
+msgstr "Zastavit tisk"
+
+# MSG_STOPPED
+#: messages.c:92
+msgid "STOPPED. "
+msgstr "ZASTAVENO."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6987
+msgid "Support"
+msgstr "Podpora"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8335
+msgid "Swapped"
+msgstr "Prohozene"
+
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Zvolte filament:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Tepl. kal."
+
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Zvolte teplotu, ktera odpovida vasemu materialu."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5873
+msgid "Temp. calibration"
+msgstr "Teplot. kalibrace"
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3933
+msgid "Temperature calibration failed"
+msgstr "Teplotni kalibrace selhala"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:94
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
+
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Senzor overen, vyjmete filament."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5739
+msgid "Temperature"
+msgstr "Teplota"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2218
+msgid "Temperatures"
+msgstr "Teploty"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
+
+# 
+#: ultralcd.cpp:2891
+msgid "Total filament"
+msgstr "Filament celkem"
+
+# 
+#: ultralcd.cpp:2892
+msgid "Total print time"
+msgstr "Celkovy cas tisku"
+
+# MSG_TUNE
+#: ultralcd.cpp:6850
+msgid "Tune"
+msgstr "Ladit"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Vysunout"
+
+# 
+#: ultralcd.cpp:1752
+msgid "Total failures"
+msgstr "Celkem selhani"
+
+# 
+#: ultralcd.cpp:2296
+msgid "to load filament"
+msgstr "k zavedeni filamentu"
+
+# 
+#: ultralcd.cpp:2300
+msgid "to unload filament"
+msgstr "k vyjmuti filamentu"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:95
+msgid "Unload filament"
+msgstr "Vyjmout filament"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:96
+msgid "Unloading filament"
+msgstr "Vysouvam filament"
+
+# 
+#: ultralcd.cpp:1705
+msgid "Total"
+msgstr "Celkem"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:6001
+msgid "Used during print"
+msgstr "Pouzite behem tisku"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2221
+msgid "Voltages"
+msgstr "Napeti"
+
+# 
+#: ultralcd.cpp:2194
+msgid "unknown"
+msgstr "neznamy"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5511
+msgid "Wait for user..."
+msgstr "Ceka se na uzivatele..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3434
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Cekani na zchladnuti trysky a podlozky."
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3395
+msgid "Waiting for PINDA probe cooling"
+msgstr "Cekani na zchladnuti PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Pouzijte vyjmout pro odstraneni filamentu 1 pokud presahuje z PTFE trubicky za tiskarnou. Pouzijte vysunout, pokud neni videt."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1510
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Varovani: doslo ke zmene typu tiskarny a motherboardu."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1502
+msgid "Warning: motherboard type changed."
+msgstr "Varovani: doslo ke zmene typu motherboardu."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1506
+msgid "Warning: printer type changed."
+msgstr "Varovani: doslo ke zmene typu tiskarny."
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3128
+msgid "Was filament unload successful?"
+msgstr "Bylo vysunuti filamentu uspesne?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:81
+msgid "Wiring error"
+msgstr "Chyba zapojeni"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5834
+msgid "Wizard"
+msgstr "Pruvodce"
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
+msgid "XYZ cal. details"
+msgstr "Detaily XYZ kal."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
+
+# MSG_YES
+#: messages.c:102
+msgid "Yes"
+msgstr "Ano"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:101
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Pruvodce muzete kdykoliv znovu spustit z menu Kalibrace -> Pruvodce"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3904
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3901
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
+msgid "X-correct:"
+msgstr "Korekce X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3898
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3882
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3885
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6261
+msgid "Load all"
+msgstr "Zavest vse"
+
+# 
+#: ultralcd.cpp:3864
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
+
+# 
+#: ultralcd.cpp:3870
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
+
+# 
+#: ultralcd.cpp:3873
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
+
+# 
+#: ultralcd.cpp:2991
+msgid "Y distance from min"
+msgstr "Y vzdalenost od min"
+
+# 
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Overeni selhalo, vyjmete filament a zkuste znovu."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
+msgid "Y-correct:"
+msgstr "Korekce Y:"
+
+# MSG_OFF
+#: messages.c:105
+msgid "Off"
+msgstr "Vyp"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "Zap"
+
+# 
+#: messages.c:53
+msgid "Back"
+msgstr "Zpet"
+
+# 
+#: ultralcd.cpp:5724
+msgid "Checks"
+msgstr "Kontrola"
+
+# 
+#: ultralcd.cpp:8349
+msgid "False triggering"
+msgstr "Falesne spusteni"
+
+# 
+#: ultralcd.cpp:4013
+msgid "FINDA:"
+msgstr ""
+
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Prisne"
+
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Varovat"
+
+# 
+#: messages.c:83
+msgid "HW Setup"
+msgstr "HW nastaveni"
+
+# 
+#: ultralcd.cpp:4017
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Komp. magnetu"
+
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5763
+msgid "Mesh bed leveling"
+msgstr "Mesh Bed Leveling"
+
+# 
+#: Marlin_main.cpp:872
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "MK3S firmware detekovan na tiskarne MK3"
+
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "MMU mod"
+
+# 
+#: ultralcd.cpp:4494
+msgid "Mode change in progress ..."
+msgstr "Probiha zmena modu..."
+
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr ""
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Tryska"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr ""
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr ""
+
+# 
+#: util.cpp:431
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code je pripraven pro jiny typ tiskarny. Pokracovat?"
+
+# 
+#: util.cpp:437
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "G-code je pripraven pro jiny typ tiskarny. Prosim preslicujte model znovu. Tisk zrusen."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code je pripraven pro novejsi firmware. Pokracovat?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "G-code je pripraven pro novejsi firmware. Prosim aktualizujte firmware. Tisk zrusen."
+
+# 
+#: ultralcd.cpp:4009
+msgid "PINDA:"
+msgstr ""
+
+#  c=20
+#: ultralcd.cpp:2452
+msgid "Preheating to cut"
+msgstr "Predehrev ke strihu"
+
+#  c=20
+#: ultralcd.cpp:2449
+msgid "Preheating to eject"
+msgstr "Predehrev k vysunuti"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Prumer trysky tiskarny se lisi od G-code. Pokracovat?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
+
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6814
+msgid "Rename"
+msgstr "Prejmenovat"
+
+# 
+#: ultralcd.cpp:6807
+msgid "Select"
+msgstr "Vybrat"
+
+# 
+#: ultralcd.cpp:2212
+msgid "Sensor info"
+msgstr "Senzor info"
+
+# MSG_SHEET c=10
+#: messages.c:54
+msgid "Sheet"
+msgstr "Plat"
+
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr "Asist."
+
+#  c=18
+#: ultralcd.cpp:5722
+msgid "Steel sheets"
+msgstr "Tiskove platy"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
+msgid "Z-correct:"
+msgstr "Korekce Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Pocet mereni Z"
+

+ 1842 - 1787
lang/po/Firmware_de.po

@@ -1,1787 +1,1842 @@
-# Translation of Prusa-Firmware into German.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: de\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:20:17 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:20:17 PM\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
-msgid " of 4"
-msgstr " von 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
-msgid " of 9"
-msgstr " von 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
-msgid "[0;0] point offset"
-msgstr "[0;0] Punktversatz"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Crash Erkennung kann\x0anur im Modus Normal\x0agenutzt werden"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "WARNUNG:\x0aCrash Erkennung\x0adeaktiviert im\x0aStealth Modus"
-
-# 
-#: ultralcd.cpp:2470
-msgid ">Cancel"
-msgstr ">Abbruch"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
-msgid "Adjusting Z:"
-msgstr "Z Anpassen:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
-msgid "All correct      "
-msgstr "Alles richtig    "
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
-msgid "All is done. Happy printing!"
-msgstr "Alles abgeschlossen. Viel Spass beim Drucken!"
-
-# 
-#: ultralcd.cpp:1993
-msgid "Ambient"
-msgstr "Raumtemp."
-
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
-msgid "and press the knob"
-msgstr "und Knopf druecken"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
-msgid "Are left and right Z~carriages all up?"
-msgstr "Sind linke+rechte Z- Schlitten ganz oben?"
-
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [an]"
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/V]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [aus]"
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Startposition"
-
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
-msgid "AutoLoad filament"
-msgstr "AutoLaden Filament"
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Automatisches Laden Filament nur bei einge schaltetem Filament- sensor verfuegbar..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
-msgid "Axis length"
-msgstr "Achsenlaenge"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
-msgid "Axis"
-msgstr "Achse"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
-msgid "Bed / Heater"
-msgstr "Bett / Heizung"
-
-# MSG_BED_DONE
-#: messages.c:16
-msgid "Bed done"
-msgstr "Bett OK"
-
-# MSG_BED_HEATING
-#: messages.c:17
-msgid "Bed Heating"
-msgstr "Bett aufwaermen"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
-msgid "Bed level correct"
-msgstr "Ausgleich Bett ok"
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Bett"
-
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
-msgid "Belt status"
-msgstr "Gurtstatus"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
-msgid "Blackout occurred. Recover print?"
-msgstr "Stromausfall! Druck wiederherstellen?"
-
-# 
-#: ultralcd.cpp:8404
-msgid "Calibrating home"
-msgstr "Kalibriere Start"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
-msgid "Calibrate XYZ"
-msgstr "Kalibrierung XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:48
-msgid "Calibrate Z"
-msgstr "Kalibrierung Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
-msgid "Calibrate"
-msgstr "Kalibrieren"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
-msgid "Calibrating Z"
-msgstr "Kalibrierung Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
-msgid "Calibration done"
-msgstr "Kalibrierung OK"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:61
-msgid "Calibration"
-msgstr "Kalibrierung"
-
-# 
-#: ultralcd.cpp:4828
-msgid "Cancel"
-msgstr "Abbruch"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:8812
-msgid "Card removed"
-msgstr "SD Karte entfernt"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2719
-msgid "Color not correct"
-msgstr "Falsche Farbe"
-
-# MSG_COOLDOWN
-#: messages.c:23
-msgid "Cooldown"
-msgstr "Abkuehlen"
-
-# 
-#: ultralcd.cpp:4584
-msgid "Copy selected language?"
-msgstr "Gewaehlte Sprache kopieren?"
-
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Crash Erk.   [an]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Crash Erk.   [nv]"
-
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Crash Erk.  [aus]"
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
-msgid "Crash detected."
-msgstr "Crash erkannt."
-
-# 
-#: Marlin_main.cpp:596
-msgid "Crash detected. Resume print?"
-msgstr "Crash erkannt. Druck fortfuehren?"
-
-# 
-#: ultralcd.cpp:1837
-msgid "Crash"
-msgstr ""
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
-msgid "Current"
-msgstr "Aktuelles"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
-msgid "Date:"
-msgstr "Datum:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
-msgid "Disable steppers"
-msgstr "Motoren aus"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
-
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
-msgid "E-correct:"
-msgstr "E-Korrektur:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
-msgid "Eject filament"
-msgstr "Filamentauswurf"
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
-msgid "Ejecting filament"
-msgstr "werfe Filament aus"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
-msgid "Endstop not hit"
-msgstr "Ende nicht getroffen"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
-msgid "Endstop"
-msgstr "Endanschlag"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
-msgid "Endstops"
-msgstr "Endschalter"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
-msgid "Error - static memory has been overwritten"
-msgstr "Fehler - statischer Speicher wurde ueberschrieben"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
-
-# MSG_ERROR
-#: messages.c:28
-msgid "ERROR:"
-msgstr "FEHLER:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
-msgid "Extruder fan:"
-msgstr "Extruder Luefter:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
-msgid "Extruder info"
-msgstr "Extruder Info"
-
-# MSG_MOVE_E
-#: messages.c:29
-msgid "Extruder"
-msgstr ""
-
-# 
-#: ultralcd.cpp:6952
-msgid "Fail stats MMU"
-msgstr "MMU-Fehler"
-
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "F.Autoladen  [an]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "F. Autoload  [nv]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "F. Autoload [aus]"
-
-# 
-#: ultralcd.cpp:6949
-msgid "Fail stats"
-msgstr "Fehlerstatistik"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:31
-msgid "Fan speed"
-msgstr "Luefter-Tempo"
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:78
-msgid "Fan test"
-msgstr "Lueftertest"
-
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Luefter Chk. [an]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Luefter Chk.[aus]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Fil. Sensor  [an]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Fil. Sensor  [nv]"
-
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Fil. Sensor [aus]"
-
-# 
-#: ultralcd.cpp:1836
-msgid "Filam. runouts"
-msgstr "Filam. Maengel"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
-msgid "Filament extruding & with correct color?"
-msgstr "Filament extrudiert mit richtiger Farbe?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
-msgid "Filament not loaded"
-msgstr "Fil. nicht geladen"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
-msgid "Filament sensor"
-msgstr "Filamentsensor"
-
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
-msgid "Filament used"
-msgstr "Filament benutzt"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
-msgid "Print time"
-msgstr "Druckzeit"
-
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
-msgid "File incomplete. Continue anyway?"
-msgstr "Datei unvollstaendig Trotzdem fortfahren?"
-
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
-msgid "Finishing movements"
-msgstr "Bewegung beenden"
-
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
-msgid "First layer cal."
-msgstr "Erste-Schicht Kal."
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen."
-
-# 
-#: mmu.cpp:724
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7038
-msgid "Flow"
-msgstr "Durchfluss"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
-msgid "Front print fan?"
-msgstr "Vorderer Luefter?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
-msgid "Front side[um]"
-msgstr "Vorne [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
-msgid "Front/left fans"
-msgstr "Vorderer/linke Luefter"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
-msgid "Heater/Thermistor"
-msgstr "Heizung/Thermistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
-msgid "Heating disabled by safety timer."
-msgstr "Heizung durch Sicherheitstimer deaktiviert."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:47
-msgid "Heating done."
-msgstr "Aufwaermen OK."
-
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Aufwaermen"
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Filament-Wechsel"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
-msgid "Change success!"
-msgstr "Wechsel erfolgr.!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
-msgid "Changed correctly?"
-msgstr "Wechsel ok?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
-msgid "Checking bed     "
-msgstr "Pruefe Bett "
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
-msgid "Checking endstops"
-msgstr "Pruefe Endschalter"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
-msgid "Checking hotend  "
-msgstr "Pruefe Duese  "
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
-msgid "Checking sensors "
-msgstr "Pruefe Sensoren "
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
-msgid "Checking X axis  "
-msgstr "Pruefe X Achse "
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
-msgid "Checking Y axis  "
-msgstr "Pruefe Y Achse "
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
-msgid "Checking Z axis  "
-msgstr "Pruefe Z Achse "
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Extruder waehlen:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Waehle Filament:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr ""
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
-msgid "I will run z calibration now."
-msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren."
-
-# MSG_WATCH
-#: messages.c:99
-msgid "Info screen"
-msgstr "Infoanzeige"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
-msgid "Insert filament"
-msgstr "Filament einlegen"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
-msgid "Is filament loaded?"
-msgstr "Ist das Filament geladen?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
-msgid "Is steel sheet on heatbed?"
-msgstr "Liegt das Stahlblech auf dem Heizbett?"
-
-# 
-#: ultralcd.cpp:1779
-msgid "Last print failures"
-msgstr "Letzte Druckfehler"
-
-# 
-#: ultralcd.cpp:1756
-msgid "Last print"
-msgstr "Letzter Druck"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
-msgid "Left hotend fan?"
-msgstr "Linker Luefter?"
-
-# 
-#: ultralcd.cpp:3011
-msgid "Left"
-msgstr "Links"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
-msgid "Left side [um]"
-msgstr "Links [um]"
-
-# 
-#: ultralcd.cpp:5747
-msgid "Lin. correction"
-msgstr "Lineare Korrektur"
-
-# MSG_BABYSTEP_Z
-#: messages.c:13
-msgid "Live adjust Z"
-msgstr "Z einstellen"
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:51
-msgid "Load filament"
-msgstr "Filament laden"
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
-msgid "Loading color"
-msgstr "Lade Farbe"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:52
-msgid "Loading filament"
-msgstr "Filament laedt"
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
-msgid "Loose pulley"
-msgstr "Lose Riemenscheibe"
-
-# 
-#: ultralcd.cpp:6911
-msgid "Load to nozzle"
-msgstr "In Druckduese laden"
-
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
-msgid "M117 First layer cal."
-msgstr "M117 Erste-Schicht Kal."
-
-# MSG_MAIN
-#: messages.c:56
-msgid "Main"
-msgstr "Hauptmenue"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
-msgid "Measuring reference height of calibration point"
-msgstr "Messen der Referenzhoehe des Kalibrierpunktes"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
-msgid "Mesh Bed Leveling"
-msgstr "MeshBett Ausgleich"
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Position wiederherstellen..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Temperatur wiederherstellen..."
-
-# 
-#: ultralcd.cpp:3052
-msgid "Measured skew"
-msgstr "Schraeglauf"
-
-# 
-#: ultralcd.cpp:1780
-msgid "MMU fails"
-msgstr "MMU Fehler"
-
-# 
-#: mmu.cpp:1592
-msgid "MMU load failed     "
-msgstr "MMU Ladefehler"
-
-# 
-#: ultralcd.cpp:1781
-msgid "MMU load fails"
-msgstr "MMU Ladefehler"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK.  Weiterdrucken..."
-
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Modus    [Normal]"
-
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Modus     [leise]"
-
-# 
-#: mmu.cpp:719
-msgid "MMU needs user attention."
-msgstr "MMU erfordert Benutzereingriff."
-
-# 
-#: ultralcd.cpp:1807
-msgid "MMU power fails"
-msgstr "MMU Netzfehler"
-
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Modus   [Stealth]"
-
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Modus[Auto Power]"
-
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Modus[Hohe Leist]"
-
-# 
-#: ultralcd.cpp:2203
-msgid "MMU2 connected"
-msgstr "MMU2 verbunden"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:83
-msgid "Motor"
-msgstr ""
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
-msgid "Move axis"
-msgstr "Achse bewegen"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4375
-msgid "Move X"
-msgstr "Bewege X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4376
-msgid "Move Y"
-msgstr "Bewege Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4377
-msgid "Move Z"
-msgstr "Bewege Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5293
-msgid "No move."
-msgstr "Keine Bewegung."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6878
-msgid "No SD card"
-msgstr "Keine SD Karte"
-
-# 
-#: ultralcd.cpp:3017
-msgid "N/A"
-msgstr "N.V."
-
-# MSG_NO
-#: messages.c:62
-msgid "No"
-msgstr "Nein"
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
-msgid "Not connected"
-msgstr "Nicht angeschlossen"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Neue Firmware- Version verfuegbar:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
-msgid "Not spinning"
-msgstr "Dreht sich nicht"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Jetzt werde ich die Duese fuer PLA vorheizen."
-
-# MSG_NOZZLE
-#: messages.c:63
-msgid "Nozzle"
-msgstr "Duese"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
-
-# 
-#: ultralcd.cpp:5071
-msgid "Now remove the test print from steel sheet."
-msgstr "Testdruck jetzt von Stahlblech entfernen."
-
-# 
-#: ultralcd.cpp:1706
-msgid "Nozzle FAN"
-msgstr "Duesevent."
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
-msgid "Pause print"
-msgstr "Druck pausieren"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
-msgid "PID cal.           "
-msgstr "PID Kal.           "
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
-msgid "PID cal. finished"
-msgstr "PID Kalib. fertig"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
-msgid "PID calibration"
-msgstr "PID Kalibrierung"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
-msgid "PINDA Heating"
-msgstr "PINDA erwaermen"
-
-# MSG_PAPER c=20 r=8
-#: messages.c:64
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
-msgid "Please clean heatbed and then press the knob."
-msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
-msgid "Please check :"
-msgstr "Bitte pruefe:"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Bitte lesen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
-msgid "Please open idler and remove filament manually."
-msgstr "Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen"
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr "Bitte legen Sie das Stahlblech auf das Heizbett."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
-msgid "Please press the knob to unload filament"
-msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen."
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
-msgid "Please pull out filament immediately"
-msgstr "Bitte ziehen Sie das Filament sofort heraus"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
-msgid "Please remove filament and then press the knob."
-msgstr "Bitte Filament entfernen und dann den Knopf druecken"
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr "Bitte entfernen Sie das Stahlblech vom Heizbett."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
-msgid "Please run XYZ calibration first."
-msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren."
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:66
-msgid "Please wait"
-msgstr "Bitte warten"
-
-# 
-#: ultralcd.cpp:5070
-msgid "Please remove shipping helpers first."
-msgstr "Bitte zuerst Transportsicherungen entfernen."
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
-msgid "Preheat the nozzle!"
-msgstr "Duese vorheizen!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6825
-msgid "Preheat"
-msgstr "Vorheizen"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
-msgid "Preheating nozzle. Please wait."
-msgstr "Vorheizen der Duese. Bitte warten."
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Bitte aktualisieren."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
-
-# 
-#: ultralcd.cpp:1835
-msgid "Power failures"
-msgstr "Netzfehler"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:69
-msgid "Print aborted"
-msgstr "Druck abgebrochen"
-
-# 
-#: ultralcd.cpp:2452
-msgid "Preheating to load"
-msgstr "Heizen zum Laden"
-
-# 
-#: ultralcd.cpp:2456
-msgid "Preheating to unload"
-msgstr "Heizen zum Entladen"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
-msgid "Print fan:"
-msgstr "Druckvent.:"
-
-# MSG_CARD_MENU
-#: messages.c:21
-msgid "Print from SD"
-msgstr "Drucken von SD"
-
-# 
-#: ultralcd.cpp:2301
-msgid "Press the knob"
-msgstr "Knopf druecken zum"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
-msgid "Print paused"
-msgstr "Druck pausiert"
-
-# 
-#: mmu.cpp:723
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen"
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrie- rungsablauf."
-
-# 
-#: ultralcd.cpp:1707
-msgid "Print FAN"
-msgstr "Druckvent."
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2189
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
-msgid "Rear side [um]"
-msgstr "Hinten [um]"
-
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
-msgid "Recovering print    "
-msgstr "Druck wiederherst    "
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
-
-# 
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
-msgid "Reset XYZ calibr."
-msgstr "Reset XYZ Kalibr."
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
-msgid "Reset"
-msgstr "Ruecksetzen"
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
-msgid "Resume print"
-msgstr "Druck fortsetzen"
-
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
-msgid "Resuming print"
-msgstr "Druck fortgesetzt"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
-msgid "Right side[um]"
-msgstr "Rechts [um]"
-
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "RPi Port     [an]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "RPi Port    [aus]"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "SD Karte [normal]"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "SD Karte[flshAir]"
-
-# 
-#: ultralcd.cpp:3012
-msgid "Right"
-msgstr "Rechts"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
-msgid "Searching bed calibration point"
-msgstr "Suche Bett Kalibrierpunkt"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
-msgid "Select language"
-msgstr "Waehle Sprache"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
-msgid "Self test OK"
-msgstr "Selbsttest OK"
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
-msgid "Self test start  "
-msgstr "Selbsttest start "
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5820
-msgid "Selftest         "
-msgstr "Selbsttest       "
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
-msgid "Selftest error !"
-msgstr "Selbsttest Fehler!"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:77
-msgid "Selftest failed  "
-msgstr "Selbsttest Error "
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren"
-
-# 
-#: ultralcd.cpp:5111
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
-
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "PLA Filament auswaehlen:"
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
-msgid "Set temperature:"
-msgstr "Temp. einstellen:"
-
-# MSG_SETTINGS
-#: messages.c:86
-msgid "Settings"
-msgstr "Einstellungen"
-
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
-msgid "Show end stops"
-msgstr "Endschalter Status"
-
-# 
-#: ultralcd.cpp:4022
-msgid "Sensor state"
-msgstr "Sensorstatus"
-
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Sort.      [ohne]"
-
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Sort.      [Zeit]"
-
-# 
-#: ultralcd.cpp:3055
-msgid "Severe skew:"
-msgstr "Schwer.Schr:"
-
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Sort.  [Alphabet]"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
-msgid "Sorting files"
-msgstr "Sortiere Dateien"
-
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Sound      [laut]"
-
-# 
-#: ultralcd.cpp:3054
-msgid "Slight skew:"
-msgstr "Leicht.Schr:"
-
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Sound     [stumm]"
-
-# 
-#: Marlin_main.cpp:4875
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
-
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Sound    [einmal]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Sound     [leise]"
-
-# MSG_SPEED
-#: ultralcd.cpp:7032
-msgid "Speed"
-msgstr "Geschwindigkeit"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
-msgid "Spinning"
-msgstr "Dreht sich"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich"
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6945
-msgid "Statistics  "
-msgstr "Statistiken "
-
-# MSG_STOP_PRINT
-#: messages.c:93
-msgid "Stop print"
-msgstr "Druck abbrechen"
-
-# MSG_STOPPED
-#: messages.c:94
-msgid "STOPPED. "
-msgstr "GESTOPPT."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6954
-msgid "Support"
-msgstr ""
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
-msgid "Swapped"
-msgstr "Ausgetauscht"
-
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Temp Kalib.         "
-
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Temp. Kal.   [an]"
-
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Temp. Kal.  [aus]"
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
-msgid "Temp. calibration"
-msgstr "Temp. kalibrieren"
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
-msgid "Temperature calibration failed"
-msgstr "Temperaturkalibrierung fehlgeschlagen"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5717
-msgid "Temperature"
-msgstr "Temperatur"
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
-msgid "Temperatures"
-msgstr "Temperaturen"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Es ist noch notwendig die Z-Kalibrierung auszufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total filament"
-msgstr "Gesamtes Filament"
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total print time"
-msgstr "Gesamte Druckzeit"
-
-# MSG_TUNE
-#: ultralcd.cpp:6822
-msgid "Tune"
-msgstr "Feineinstellung"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Entladen"
-
-# 
-#: ultralcd.cpp:1804
-msgid "Total failures"
-msgstr "Gesamte Fehler"
-
-# 
-#: ultralcd.cpp:2308
-msgid "to load filament"
-msgstr "Filament laden"
-
-# 
-#: ultralcd.cpp:2312
-msgid "to unload filament"
-msgstr "Filament entladen"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
-msgid "Unload filament"
-msgstr "Filament entladen"
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
-msgid "Unloading filament"
-msgstr "Filament auswerfen"
-
-# 
-#: ultralcd.cpp:1757
-msgid "Total"
-msgstr "Gesamt"
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
-msgid "Used during print"
-msgstr "Beim Druck benutzt"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
-msgid "Voltages"
-msgstr "Spannungen"
-
-# 
-#: ultralcd.cpp:2211
-msgid "unknown"
-msgstr "unbekannt"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5264
-msgid "Wait for user..."
-msgstr "Warte auf Benutzer.."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Warten bis Heizung und Bett abgekuehlt sind"
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
-msgid "Waiting for PINDA probe cooling"
-msgstr "Warten, bis PINDA- Sonde abgekuehlt ist"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Entladen Sie das Filament 1, wenn er aus dem hinteren MMU-Rohr herausragt. Verwenden Sie den Auswurf, wenn er im Rohr versteckt ist."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Warnung: Druckertyp und Platinentyp wurden beide geaendert."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
-msgid "Warning: motherboard type changed."
-msgstr "Warnung: Platinentyp wurde geaendert."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
-msgid "Warning: printer type changed."
-msgstr "Warnung: Druckertyp wurde geaendert."
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
-msgid "Was filament unload successful?"
-msgstr "Konnten Sie das Filament entnehmen?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
-msgid "Wiring error"
-msgstr "Verdrahtungsfehler"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
-msgid "Wizard"
-msgstr "Assistent"
-
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
-msgid "XYZ cal. details"
-msgstr "XYZ Kal. Details"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
-
-# MSG_YES
-#: messages.c:104
-msgid "Yes"
-msgstr "Ja"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
-
-# 
-#: ultralcd.cpp:5197
-msgid "X-correct:"
-msgstr "X-Korrektur:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
-msgid "Load all"
-msgstr "Alle laden"
-
-# 
-#: ultralcd.cpp:3879
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
-
-# 
-#: ultralcd.cpp:3885
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."
-
-# 
-#: ultralcd.cpp:3888
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
-
-"XYZ calibration failed. Right front calibration point not reachable."
-#: 
-msgid "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
-msgstr 
-
-# 
-#: ultralcd.cpp:3009
-msgid "Y distance from min"
-msgstr "Y Entfernung vom Min"
-
-# 
-#: ultralcd.cpp:5198
-msgid "Y-correct:"
-msgstr "Y-Korrektur:"
-
-# MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [aus]"
-
-# 
-#: messages.c:57
-msgid "Back"
-msgstr "Zurueck"
-
-# 
-#: ultralcd.cpp:5706
-msgid "Checks"
-msgstr "Kontrolle"
-
-# 
-#: ultralcd.cpp:8080
-msgid "False triggering"
-msgstr "Falschtriggerung"
-
-# 
-#: ultralcd.cpp:4027
-msgid "FINDA:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware   [ohne]"
-
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [strikt]"
-
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware [warnen]"
-
-# 
-#: messages.c:87
-msgid "HW Setup"
-msgstr "HW Einstellungen"
-
-# 
-#: ultralcd.cpp:4031
-msgid "IR:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Magnet Komp.  [nv]"
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Magnet Komp. [Aus]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Magnet Komp.  [An]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Gitter       [3x3]"
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Gitter       [7x7]"
-
-# 
-#: ultralcd.cpp:5744
-msgid "Mesh bed leveling"
-msgstr "MeshBett Ausgleich"
-
-# 
-#: Marlin_main.cpp:852
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "MK3S-Firmware auf MK3-Drucker erkannt"
-
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "MMU Modus[Normal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "MMU Mod.[Stealth]"
-
-# 
-#: ultralcd.cpp:4508
-msgid "Mode change in progress ..."
-msgstr "Moduswechsel erfolgt..."
-
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Modell     [ohne]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Modell   [strikt]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Modell   [warnen]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Duese D.   [0.25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Duese D.   [0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Duese D.   [0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Duese      [ohne]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Duese    [strikt]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Duese    [warnen]"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr "G-Code ist fuer einen anderen Level geslict. Fortfahren?"
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr "G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "G-Code ist fuer eine neuere Firmware geslict. Fortfahren?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen."
-
-# 
-#: ultralcd.cpp:4023
-msgid "PINDA:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:2462
-msgid "Preheating to cut"
-msgstr "Heizen zum Schnitt"
-
-# 
-#: ultralcd.cpp:2459
-msgid "Preheating to eject"
-msgstr "Heizen zum Auswurf"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
-
-# 
-#: ultralcd.cpp:6786
-msgid "Rename"
-msgstr "Umbenennen"
-
-# 
-#: ultralcd.cpp:6779
-msgid "Select"
-msgstr "Auswahl"
-
-# 
-#: ultralcd.cpp:2229
-msgid "Sensor info"
-msgstr "Sensor Info"
-
-# 
-#: messages.c:58
-msgid "Sheet"
-msgstr "Blech"
-
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Sound    [Assist]"
-
-# 
-#: ultralcd.cpp:5704
-msgid "Steel sheets"
-msgstr "Stahlbleche"
-
-# 
-#: ultralcd.cpp:5199
-msgid "Z-correct:"
-msgstr "Z-Korrektur:"
-
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Z-Probe Nr.    [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Z-Probe Nr.    [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Z-Probe Nr.    [5]"
-
+# Translation of Prusa-Firmware into German.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: de\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Fri May 15 16:44:45 CEST 2020\n"
+"PO-Revision-Date: Fri May 15 16:44:45 CEST 2020\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
+
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 oder aelter"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 oder neuer"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:36
+msgid " of 4"
+msgstr " von 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:56
+msgid " of 9"
+msgstr " von 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3064
+msgid "[0;0] point offset"
+msgstr "[0;0] Punktversatz"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Crash Erkennung kann\x0anur im Modus Normal\x0agenutzt werden"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "WARNUNG:\x0aCrash Erkennung\x0adeaktiviert im\x0aStealth Modus"
+
+# 
+#: ultralcd.cpp:2460
+msgid ">Cancel"
+msgstr ">Abbruch"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3184
+msgid "Adjusting Z:"
+msgstr "Z Anpassen:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8677
+msgid "All correct      "
+msgstr "Alles richtig    "
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:99
+msgid "All is done. Happy printing!"
+msgstr "Alles abgeschlossen. Viel Spass beim Drucken!"
+
+# 
+#: ultralcd.cpp:1956
+msgid "Ambient"
+msgstr "Raumtemp."
+
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
+msgid "and press the knob"
+msgstr "und Knopf druecken"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3506
+msgid "Are left and right Z~carriages all up?"
+msgstr "Sind linke+rechte Z- Schlitten ganz oben?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Startposition"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
+msgid "AutoLoad filament"
+msgstr "AutoLaden Filament"
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4445
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2804
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8325
+msgid "Axis length"
+msgstr "Achsenlaenge"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8327
+msgid "Axis"
+msgstr "Achse"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8269
+msgid "Bed / Heater"
+msgstr "Bett / Heizung"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Bett OK"
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Bett aufwaermen"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5861
+msgid "Bed level correct"
+msgstr "Ausgleich Bett ok"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Riementest       "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Hell"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Helligkeit"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Bett"
+
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
+msgid "Belt status"
+msgstr "Gurtstatus"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:67
+msgid "Blackout occurred. Recover print?"
+msgstr "Stromausfall! Druck wiederherstellen?"
+
+# 
+#: ultralcd.cpp:8679
+msgid "Calibrating home"
+msgstr "Kalibriere Start"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5850
+msgid "Calibrate XYZ"
+msgstr "Kalibrierung XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:44
+msgid "Calibrate Z"
+msgstr "Kalibrierung Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4637
+msgid "Calibrate"
+msgstr "Kalibrieren"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:19
+msgid "Calibrating Z"
+msgstr "Kalibrierung Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:865
+msgid "Calibration done"
+msgstr "Kalibrierung OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:57
+msgid "Calibration"
+msgstr "Kalibrierung"
+
+# 
+#: ultralcd.cpp:4815
+msgid "Cancel"
+msgstr "Abbruch"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:9090
+msgid "Card removed"
+msgstr "SD Karte entfernt"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2709
+msgid "Color not correct"
+msgstr "Falsche Farbe"
+
+# MSG_COOLDOWN
+#: messages.c:22
+msgid "Cooldown"
+msgstr "Abkuehlen"
+
+# 
+#: ultralcd.cpp:4570
+msgid "Copy selected language?"
+msgstr "Gewaehlte Sprache kopieren?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Crash Erk."
+
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:23
+msgid "Crash detected."
+msgstr "Crash erkannt."
+
+# 
+#: Marlin_main.cpp:607
+msgid "Crash detected. Resume print?"
+msgstr "Crash erkannt. Druck fortfuehren?"
+
+# 
+#: ultralcd.cpp:1785
+msgid "Crash"
+msgstr ""
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:6002
+msgid "Current"
+msgstr "Aktuelles"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2163
+msgid "Date:"
+msgstr "Datum:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5743
+msgid "Disable steppers"
+msgstr "Motoren aus"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5125
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
+msgid "E-correct:"
+msgstr "E-Korrektur:"
+
+# MSG_EJECT_FILAMENT c=17 r=1
+#: messages.c:49
+msgid "Eject filament"
+msgstr "Filamentauswurf"
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1416
+msgid "Ejecting filament"
+msgstr "werfe Filament aus"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
+msgid "Endstop not hit"
+msgstr "Ende nicht getroffen"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8287
+msgid "Endstop"
+msgstr "Endanschlag"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8275
+msgid "Endstops"
+msgstr "Endschalter"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6998
+msgid "Error - static memory has been overwritten"
+msgstr "Fehler - statischer Speicher wurde ueberschrieben"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Fil. schneiden"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Messer"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Schneide filament"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4458
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
+
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr "Dimm"
+
+# MSG_ERROR
+#: messages.c:25
+msgid "ERROR:"
+msgstr "FEHLER:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8686
+msgid "Extruder fan:"
+msgstr "Extruder Luefter:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
+msgid "Extruder info"
+msgstr "Extruder Info"
+
+# MSG_MOVE_E
+#: messages.c:26
+msgid "Extruder"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6985
+msgid "Fail stats MMU"
+msgstr "MMU-Fehler"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "F. autoladen"
+
+# 
+#: ultralcd.cpp:6982
+msgid "Fail stats"
+msgstr "Fehlerstatistik"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:28
+msgid "Fan speed"
+msgstr "Luefter-Tempo"
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:74
+msgid "Fan test"
+msgstr "Lueftertest"
+
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Luefter Chk."
+
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Fil. Sensor"
+
+#  c=14
+#: ultralcd.cpp:1784
+msgid "Filam. runouts"
+msgstr "Filam. Maengel"
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:29
+msgid "Filament extruding & with correct color?"
+msgstr "Filament extrudiert mit richtiger Farbe?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2705
+msgid "Filament not loaded"
+msgstr "Fil. nicht geladen"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:80
+msgid "Filament sensor"
+msgstr "Filamentsensor"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
+msgid "Filament used"
+msgstr "Filament benutzt"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2870
+msgid "Print time"
+msgstr "Druckzeit"
+
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "FS Aktion"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 oder neuer"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
+msgid "File incomplete. Continue anyway?"
+msgstr "Datei unvollstaendig Trotzdem fortfahren?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
+msgid "Finishing movements"
+msgstr "Bewegung beenden"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
+msgid "First layer cal."
+msgstr "Erste-Schicht Kal."
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:5046
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen."
+
+# 
+#: mmu.cpp:727
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:7125
+msgid "Flow"
+msgstr "Durchfluss"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2156
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:71
+msgid "Front print fan?"
+msgstr "Vorderer Luefter?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3266
+msgid "Front side[um]"
+msgstr "Vorne [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8333
+msgid "Front/left fans"
+msgstr "Vorderer/linke Luefter"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8263
+msgid "Heater/Thermistor"
+msgstr "Heizung/Thermistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9440
+msgid "Heating disabled by safety timer."
+msgstr "Heizung durch Sicherheitstimer deaktiviert."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:43
+msgid "Heating done."
+msgstr "Aufwaermen OK."
+
+# MSG_HEATING
+#: messages.c:42
+msgid "Heating"
+msgstr "Aufwaermen"
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:5025
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2157
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:34
+msgid "Change filament"
+msgstr "Filament-Wechsel"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2620
+msgid "Change success!"
+msgstr "Wechsel erfolgr.!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2697
+msgid "Changed correctly?"
+msgstr "Wechsel ok?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:77
+msgid "Checking bed     "
+msgstr "Pruefe Bett "
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8668
+msgid "Checking endstops"
+msgstr "Pruefe Endschalter"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8674
+msgid "Checking hotend  "
+msgstr "Pruefe Duese  "
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:78
+msgid "Checking sensors "
+msgstr "Pruefe Sensoren "
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7482
+msgid "Checking X axis  "
+msgstr "Pruefe X Achse "
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7491
+msgid "Checking Y axis  "
+msgstr "Pruefe Y Achse "
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8671
+msgid "Checking Z axis  "
+msgstr "Pruefe Z Achse "
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:45
+msgid "Choose extruder:"
+msgstr "Extruder waehlen:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:46
+msgid "Choose filament:"
+msgstr "Waehle Filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:27
+msgid "Filament"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:5055
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:5063
+msgid "I will run z calibration now."
+msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren."
+
+# MSG_WATCH
+#: messages.c:97
+msgid "Info screen"
+msgstr "Infoanzeige"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2605
+msgid "Insert filament"
+msgstr "Filament einlegen"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4835
+msgid "Is filament loaded?"
+msgstr "Ist das Filament geladen?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:90
+msgid "Is steel sheet on heatbed?"
+msgstr "Liegt das Stahlblech auf dem Heizbett?"
+
+# 
+#: ultralcd.cpp:1727
+msgid "Last print failures"
+msgstr "Letzte Druckfehler"
+
+# 
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
+
+# 
+#: ultralcd.cpp:1704
+msgid "Last print"
+msgstr "Letzter Druck"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:72
+msgid "Left hotend fan?"
+msgstr "Linker Luefter?"
+
+# 
+#: ultralcd.cpp:2993
+msgid "Left"
+msgstr "Links"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3264
+msgid "Left side [um]"
+msgstr "Links [um]"
+
+# 
+#: ultralcd.cpp:5766
+msgid "Lin. correction"
+msgstr "Lineare Korrektur"
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Z einstellen"
+
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:47
+msgid "Load filament"
+msgstr "Filament laden"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2645
+msgid "Loading color"
+msgstr "Lade Farbe"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:48
+msgid "Loading filament"
+msgstr "Filament laedt"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8317
+msgid "Loose pulley"
+msgstr "Lose Riemenscheibe"
+
+# 
+#: ultralcd.cpp:6944
+msgid "Load to nozzle"
+msgstr "In Druckduese laden"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
+msgid "M117 First layer cal."
+msgstr "M117 Erste-Schicht Kal."
+
+# MSG_MAIN
+#: messages.c:52
+msgid "Main"
+msgstr "Hauptmenue"
+
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Hell.wert"
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr "Dimmwert"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:55
+msgid "Measuring reference height of calibration point"
+msgstr "Messen der Referenzhoehe des Kalibrierpunktes"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:5856
+msgid "Mesh Bed Leveling"
+msgstr "MeshBett Ausgleich"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:765
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Position wiederherstellen..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:758
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Temperatur wiederherstellen..."
+
+# 
+#: ultralcd.cpp:3034
+msgid "Measured skew"
+msgstr "Schraeglauf"
+
+# 
+#: ultralcd.cpp:1728
+msgid "MMU fails"
+msgstr "MMU Fehler"
+
+# 
+#: mmu.cpp:1588
+msgid "MMU load failed     "
+msgstr "MMU Ladefehler"
+
+# 
+#: ultralcd.cpp:1729
+msgid "MMU load fails"
+msgstr "MMU Ladefehler"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:776
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK.  Weiterdrucken..."
+
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Modus"
+
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "MK3-Firmware am MK3S-Drucker erkannt"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Leise"
+
+# 
+#: mmu.cpp:722
+msgid "MMU needs user attention."
+msgstr "MMU erfordert Benutzereingriff."
+
+# 
+#: ultralcd.cpp:1755
+msgid "MMU power fails"
+msgstr "MMU Netzfehler"
+
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr ""
+
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Auto Leist"
+
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Hohe leist"
+
+# 
+#: ultralcd.cpp:2186
+msgid "MMU2 connected"
+msgstr "MMU2 verbunden"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:79
+msgid "Motor"
+msgstr ""
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5741
+msgid "Move axis"
+msgstr "Achse bewegen"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4361
+msgid "Move X"
+msgstr "Bewege X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4362
+msgid "Move Y"
+msgstr "Bewege Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4363
+msgid "Move Z"
+msgstr "Bewege Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5541
+msgid "No move."
+msgstr "Keine Bewegung."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6911
+msgid "No SD card"
+msgstr "Keine SD Karte"
+
+# MSG_NA
+#: messages.c:107
+msgid "N/A"
+msgstr "N/V"
+
+# MSG_NO
+#: messages.c:58
+msgid "No"
+msgstr "Nein"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8265
+msgid "Not connected"
+msgstr "Nicht angeschlossen"
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Neue Firmware- Version verfuegbar:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:75
+msgid "Not spinning"
+msgstr "Dreht sich nicht"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4946
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:5071
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Jetzt werde ich die Duese fuer PLA vorheizen."
+
+# MSG_NOZZLE
+#: messages.c:59
+msgid "Nozzle"
+msgstr "Duese"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
+
+# 
+#: ultralcd.cpp:5062
+msgid "Now remove the test print from steel sheet."
+msgstr "Testdruck jetzt von Stahlblech entfernen."
+
+# 
+#: ultralcd.cpp:1654
+msgid "Nozzle FAN"
+msgstr "Duesevent."
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6875
+msgid "Pause print"
+msgstr "Druck pausieren"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1539
+msgid "PID cal.           "
+msgstr "PID Kal.           "
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1545
+msgid "PID cal. finished"
+msgstr "PID Kalib. fertig"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5862
+msgid "PID calibration"
+msgstr "PID Kalibrierung"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:896
+msgid "PINDA Heating"
+msgstr "PINDA erwaermen"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:60
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5128
+msgid "Please clean heatbed and then press the knob."
+msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:21
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8257
+msgid "Please check :"
+msgstr "Bitte pruefe:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:98
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Bitte lesen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3138
+msgid "Please open idler and remove filament manually."
+msgstr "Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen"
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:61
+msgid "Please place steel sheet on heatbed."
+msgstr "Bitte legen Sie das Stahlblech auf das Heizbett."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:64
+msgid "Please press the knob to unload filament"
+msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen."
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:66
+msgid "Please pull out filament immediately"
+msgstr "Bitte ziehen Sie das Filament sofort heraus"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1422
+msgid "Please remove filament and then press the knob."
+msgstr "Bitte Filament entfernen und dann den Knopf druecken"
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:70
+msgid "Please remove steel sheet from heatbed."
+msgstr "Bitte entfernen Sie das Stahlblech vom Heizbett."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4583
+msgid "Please run XYZ calibration first."
+msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren."
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1341
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:62
+msgid "Please wait"
+msgstr "Bitte warten"
+
+# 
+#: ultralcd.cpp:5061
+msgid "Please remove shipping helpers first."
+msgstr "Bitte zuerst Transportsicherungen entfernen."
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:63
+msgid "Preheat the nozzle!"
+msgstr "Duese vorheizen!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6853
+msgid "Preheat"
+msgstr "Vorheizen"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:100
+msgid "Preheating nozzle. Please wait."
+msgstr "Vorheizen der Duese. Bitte warten."
+
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Bitte aktualisieren."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11526
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr ""
+
+# 
+#: ultralcd.cpp:1783
+msgid "Power failures"
+msgstr "Netzfehler"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:65
+msgid "Print aborted"
+msgstr "Druck abgebrochen"
+
+#  c=20
+#: ultralcd.cpp:2442
+msgid "Preheating to load"
+msgstr "Heizen zum Laden"
+
+#  c=20
+#: ultralcd.cpp:2446
+msgid "Preheating to unload"
+msgstr "Heizen zum Entladen"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8689
+msgid "Print fan:"
+msgstr "Druckvent.:"
+
+# MSG_CARD_MENU
+#: messages.c:20
+msgid "Print from SD"
+msgstr "Drucken von SD"
+
+# 
+#: ultralcd.cpp:2289
+msgid "Press the knob"
+msgstr "Knopf druecken zum"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1118
+msgid "Print paused"
+msgstr "Druck pausiert"
+
+# 
+#: mmu.cpp:726
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen"
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:38
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrie- rungsablauf."
+
+# 
+#: ultralcd.cpp:1655
+msgid "Print FAN"
+msgstr "Druckvent."
+
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Bitte laden Sie zuerst das Filament."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2155
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3267
+msgid "Rear side [um]"
+msgstr "Hinten [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
+msgid "Recovering print    "
+msgstr "Druck wiederherst   "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5867
+msgid "Reset XYZ calibr."
+msgstr "Reset XYZ Kalibr."
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:3268
+msgid "Reset"
+msgstr "Ruecksetzen"
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:6861
+msgid "Resume print"
+msgstr "Druck fortsetzen"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
+msgid "Resuming print"
+msgstr "Druck fortgesetzt"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3265
+msgid "Right side[um]"
+msgstr "Rechts [um]"
+
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr ""
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4864
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?"
+
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "SD Karte"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2994
+msgid "Right"
+msgstr "Rechts"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:35
+msgid "Searching bed calibration point"
+msgstr "Suche Bett Kalibrierpunkt"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5779
+msgid "Select language"
+msgstr "Waehle Sprache"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7812
+msgid "Self test OK"
+msgstr "Selbsttest OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7582
+msgid "Self test start  "
+msgstr "Selbsttest start "
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5843
+msgid "Selftest         "
+msgstr "Selbsttest       "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8255
+msgid "Selftest error !"
+msgstr "Selbsttest Fehler!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:73
+msgid "Selftest failed  "
+msgstr "Selbsttest Error "
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1550
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren"
+
+# 
+#: ultralcd.cpp:5102
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3286
+msgid "Set temperature:"
+msgstr "Temp. einstellen:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:82
+msgid "Settings"
+msgstr "Einstellungen"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
+msgid "Show end stops"
+msgstr "Endschalter Status"
+
+# 
+#: ultralcd.cpp:4008
+msgid "Sensor state"
+msgstr "Sensorstatus"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
+
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Sort."
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Ohne"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Zeit"
+
+# 
+#: ultralcd.cpp:3037
+msgid "Severe skew:"
+msgstr "Schwer.Schr:"
+
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr ""
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:745
+msgid "Sorting files"
+msgstr "Sortiere Dateien"
+
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Laut"
+
+# 
+#: ultralcd.cpp:3036
+msgid "Slight skew:"
+msgstr "Leicht.Schr:"
+
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Ton"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:5101
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
+
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Einmal"
+
+# MSG_SPEED
+#: ultralcd.cpp:7119
+msgid "Speed"
+msgstr "Geschwindigkeit"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:76
+msgid "Spinning"
+msgstr "Dreht sich"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4596
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich"
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6978
+msgid "Statistics  "
+msgstr "Statistiken "
+
+# MSG_STOP_PRINT
+#: messages.c:91
+msgid "Stop print"
+msgstr "Druck abbrechen"
+
+# MSG_STOPPED
+#: messages.c:92
+msgid "STOPPED. "
+msgstr "GESTOPPT."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6987
+msgid "Support"
+msgstr ""
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8335
+msgid "Swapped"
+msgstr "Ausgetauscht"
+
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Filament auswaehlen:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Temp Kalib."
+
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Waehlen Sie die Temperatur, die zu Ihrem Material passt."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5873
+msgid "Temp. calibration"
+msgstr "Temp. kalibrieren"
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3933
+msgid "Temperature calibration failed"
+msgstr "Temperaturkalibrierung fehlgeschlagen"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:94
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
+
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensor ueberprueft, entladen Sie jetzt das Filament."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5739
+msgid "Temperature"
+msgstr "Temperatur"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2218
+msgid "Temperatures"
+msgstr "Temperaturen"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
+
+# 
+#: ultralcd.cpp:2891
+msgid "Total filament"
+msgstr "Gesamtes Filament"
+
+# 
+#: ultralcd.cpp:2892
+msgid "Total print time"
+msgstr "Gesamte Druckzeit"
+
+# MSG_TUNE
+#: ultralcd.cpp:6850
+msgid "Tune"
+msgstr "Feineinstellung"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Entladen"
+
+# 
+#: ultralcd.cpp:1752
+msgid "Total failures"
+msgstr "Gesamte Fehler"
+
+# 
+#: ultralcd.cpp:2296
+msgid "to load filament"
+msgstr "Filament laden"
+
+# 
+#: ultralcd.cpp:2300
+msgid "to unload filament"
+msgstr "Filament entladen"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:95
+msgid "Unload filament"
+msgstr "Filament entladen"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:96
+msgid "Unloading filament"
+msgstr "Filament auswerfen"
+
+# 
+#: ultralcd.cpp:1705
+msgid "Total"
+msgstr "Gesamt"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:6001
+msgid "Used during print"
+msgstr "Beim Druck benutzt"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2221
+msgid "Voltages"
+msgstr "Spannungen"
+
+# 
+#: ultralcd.cpp:2194
+msgid "unknown"
+msgstr "unbekannt"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5511
+msgid "Wait for user..."
+msgstr "Warte auf Benutzer.."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3434
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Warten bis Heizung und Bett abgekuehlt sind"
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3395
+msgid "Waiting for PINDA probe cooling"
+msgstr "Warten, bis PINDA- Sonde abgekuehlt ist"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Entladen Sie das Filament 1, wenn er aus dem hinteren MMU-Rohr herausragt. Verwenden Sie den Auswurf, wenn er im Rohr versteckt ist."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1510
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Warnung: Druckertyp und Platinentyp wurden beide geaendert."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1502
+msgid "Warning: motherboard type changed."
+msgstr "Warnung: Platinentyp wurde geaendert."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1506
+msgid "Warning: printer type changed."
+msgstr "Warnung: Druckertyp wurde geaendert."
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3128
+msgid "Was filament unload successful?"
+msgstr "Konnten Sie das Filament entnehmen?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:81
+msgid "Wiring error"
+msgstr "Verdrahtungsfehler"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5834
+msgid "Wizard"
+msgstr "Assistent"
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
+msgid "XYZ cal. details"
+msgstr "XYZ Kal. Details"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
+
+# MSG_YES
+#: messages.c:102
+msgid "Yes"
+msgstr "Ja"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:101
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3904
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3901
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
+
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr "Verzoegerung"
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
+msgid "X-correct:"
+msgstr "X-Korrektur:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3898
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3882
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3885
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6261
+msgid "Load all"
+msgstr "Alle laden"
+
+# 
+#: ultralcd.cpp:3864
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
+
+# 
+#: ultralcd.cpp:3870
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."
+
+# 
+#: ultralcd.cpp:3873
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
+
+# 
+#: ultralcd.cpp:2991
+msgid "Y distance from min"
+msgstr "Y Entfernung vom Min"
+
+# 
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
+msgid "Y-correct:"
+msgstr "Y-Korrektur:"
+
+# MSG_OFF
+#: messages.c:105
+msgid "Off"
+msgstr "Aus"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "An"
+
+# 
+#: messages.c:53
+msgid "Back"
+msgstr "Zurueck"
+
+# 
+#: ultralcd.cpp:5724
+msgid "Checks"
+msgstr "Kontrolle"
+
+# 
+#: ultralcd.cpp:8349
+msgid "False triggering"
+msgstr "Falschtriggerung"
+
+# 
+#: ultralcd.cpp:4013
+msgid "FINDA:"
+msgstr ""
+
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Strikt"
+
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Warnen"
+
+# 
+#: messages.c:83
+msgid "HW Setup"
+msgstr "HW Einstellungen"
+
+# 
+#: ultralcd.cpp:4017
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Magnet Komp."
+
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr "Gitter"
+
+# 
+#: ultralcd.cpp:5763
+msgid "Mesh bed leveling"
+msgstr "MeshBett Ausgleich"
+
+# 
+#: Marlin_main.cpp:872
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "MK3S-Firmware auf MK3-Drucker erkannt"
+
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "MMU Modus"
+
+# 
+#: ultralcd.cpp:4494
+msgid "Mode change in progress ..."
+msgstr "Moduswechsel erfolgt..."
+
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr "Modell"
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Duese D."
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-Code ist fuer einen anderen Level geslict. Fortfahren?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "G-Code ist fuer einen anderen Level geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
+
+# 
+#: util.cpp:431
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-Code ist fuer einen anderen Drucker geslict. Fortfahren?"
+
+# 
+#: util.cpp:437
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "G-Code ist fuer einen anderen Drucker geslict. Bitte slicen Sie das Modell erneut. Druck abgebrochen."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-Code ist fuer eine neuere Firmware geslict. Fortfahren?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen."
+
+# 
+#: ultralcd.cpp:4009
+msgid "PINDA:"
+msgstr ""
+
+#  c=20
+#: ultralcd.cpp:2452
+msgid "Preheating to cut"
+msgstr "Heizen zum Schnitt"
+
+#  c=20
+#: ultralcd.cpp:2449
+msgid "Preheating to eject"
+msgstr "Heizen zum Auswurf"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
+
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6814
+msgid "Rename"
+msgstr "Umbenennen"
+
+# 
+#: ultralcd.cpp:6807
+msgid "Select"
+msgstr "Auswahl"
+
+# 
+#: ultralcd.cpp:2212
+msgid "Sensor info"
+msgstr "Sensor Info"
+
+# MSG_SHEET c=10
+#: messages.c:54
+msgid "Sheet"
+msgstr "Stahlblech"
+
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr ""
+
+#  c=18
+#: ultralcd.cpp:5722
+msgid "Steel sheets"
+msgstr "Stahlbleche"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
+msgid "Z-correct:"
+msgstr "Z-Korrektur:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr ""
+

+ 1842 - 1782
lang/po/Firmware_es.po

@@ -1,1782 +1,1842 @@
-# Translation of Prusa-Firmware into Spanish.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:21:33 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:21:33 PM\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
-msgid " of 4"
-msgstr " de 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
-msgid " of 9"
-msgstr " de 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
-msgid "[0;0] point offset"
-msgstr "[0;0] punto offset"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Dec. choque puede\x0aser activada solo en\x0aModo normal"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "ATENCION:\x0aDec. choque\x0adesactivada en\x0aModo silencio"
-
-# 
-#: ultralcd.cpp:2470
-msgid ">Cancel"
-msgstr ">Cancelar"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
-msgid "Adjusting Z:"
-msgstr "Ajustar-Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
-msgid "All correct      "
-msgstr "Todo bien"
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
-msgid "All is done. Happy printing!"
-msgstr "Terminado! Feliz impresion!"
-
-# 
-#: ultralcd.cpp:1993
-msgid "Ambient"
-msgstr "Ambiente"
-
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
-msgid "and press the knob"
-msgstr "Haz clic"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
-msgid "Are left and right Z~carriages all up?"
-msgstr "Carros Z izq./der. estan arriba maximo?"
-
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr ""
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr ""
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Llevar al origen"
-
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
-msgid "AutoLoad filament"
-msgstr "Carga automatica de filamento"
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "La carga automatica de filamento solo funciona si el sensor de filamento esta activado..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "La carga automatica de filamento esta activada, pulse el dial e inserte el filamento..."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
-msgid "Axis length"
-msgstr "Longitud del eje"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
-msgid "Axis"
-msgstr "Eje"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
-msgid "Bed / Heater"
-msgstr "Base / Calentador"
-
-# MSG_BED_DONE
-#: messages.c:16
-msgid "Bed done"
-msgstr "Base preparada"
-
-# MSG_BED_HEATING
-#: messages.c:17
-msgid "Bed Heating"
-msgstr "Calentando Base"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
-msgid "Bed level correct"
-msgstr "Corr. de la cama"
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Base"
-
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
-msgid "Belt status"
-msgstr "Estado de la correa"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
-msgid "Blackout occurred. Recover print?"
-msgstr "Se fue la luz. ?Reanudar la impresion?"
-
-# 
-#: ultralcd.cpp:8404
-msgid "Calibrating home"
-msgstr "Calibrando posicion inicial"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
-msgid "Calibrate XYZ"
-msgstr "Calibrar XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:48
-msgid "Calibrate Z"
-msgstr "Calibrar Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
-msgid "Calibrate"
-msgstr "Calibrar"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibrando XYZ. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
-msgid "Calibrating Z"
-msgstr "Calibrando Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibrando Z. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
-msgid "Calibration done"
-msgstr "Calibracion OK"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:61
-msgid "Calibration"
-msgstr "Calibracion"
-
-# 
-#: ultralcd.cpp:4828
-msgid "Cancel"
-msgstr "Cancelar"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:8812
-msgid "Card removed"
-msgstr "Tarjeta retirada"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2719
-msgid "Color not correct"
-msgstr "Color no homogeneo"
-
-# MSG_COOLDOWN
-#: messages.c:23
-msgid "Cooldown"
-msgstr "Enfriar"
-
-# 
-#: ultralcd.cpp:4584
-msgid "Copy selected language?"
-msgstr "Copiar idioma seleccionado?"
-
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Det. choque [act]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Dec. choque [N/D]"
-
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Det. choque [ina]"
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
-msgid "Crash detected."
-msgstr "Choque detectado."
-
-# 
-#: Marlin_main.cpp:596
-msgid "Crash detected. Resume print?"
-msgstr "Choque detectado. Continuar impresion?"
-
-# 
-#: ultralcd.cpp:1837
-msgid "Crash"
-msgstr "Choque"
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
-msgid "Current"
-msgstr "Actual"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
-msgid "Date:"
-msgstr "Fecha:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
-msgid "Disable steppers"
-msgstr "Apagar motores"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
-
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
-msgid "E-correct:"
-msgstr "Corregir-E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
-msgid "Eject filament"
-msgstr "Expulsar filamento"
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
-msgid "Ejecting filament"
-msgstr "Expulsando filamento"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
-msgid "Endstop not hit"
-msgstr "Endstop no alcanzado"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
-msgid "Endstop"
-msgstr ""
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
-msgid "Endstops"
-msgstr ""
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
-msgid "Error - static memory has been overwritten"
-msgstr "Error - se ha sobre-escrito la memoria estatica"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
-
-# MSG_ERROR
-#: messages.c:28
-msgid "ERROR:"
-msgstr ""
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
-msgid "Extruder fan:"
-msgstr "Vent.extrusor:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
-msgid "Extruder info"
-msgstr "Informacion del extrusor"
-
-# MSG_MOVE_E
-#: messages.c:29
-msgid "Extruder"
-msgstr "Extruir"
-
-# 
-#: ultralcd.cpp:6952
-msgid "Fail stats MMU"
-msgstr "Estadistica de fallos MMU"
-
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "Autocarg.Fil[act]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "Autocarg.Fil[N/D]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "Autocarg.Fil[ina]"
-
-# 
-#: ultralcd.cpp:6949
-msgid "Fail stats"
-msgstr "Estadistica de fallos"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:31
-msgid "Fan speed"
-msgstr "Velocidad Vent."
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:78
-msgid "Fan test"
-msgstr "Test ventiladores"
-
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Comprob.vent[act]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Comprob.vent[ina]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Sensor Fil. [act]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Sensor Fil. [N/D]"
-
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Sensor Fil. [ina]"
-
-# 
-#: ultralcd.cpp:1836
-msgid "Filam. runouts"
-msgstr "Filam. acabado"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
-msgid "Filament extruding & with correct color?"
-msgstr "Es nitido el color nuevo?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
-msgid "Filament not loaded"
-msgstr "Fil. no introducido"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
-msgid "Filament sensor"
-msgstr "Sensor de filamento"
-
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
-msgid "Filament used"
-msgstr "Filamento usado"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
-msgid "Print time"
-msgstr "Tiempo de imp.:"
-
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
-msgid "File incomplete. Continue anyway?"
-msgstr "Archivo incompleto. ?Continuar de todos modos?"
-
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
-msgid "Finishing movements"
-msgstr "Term. movimientos"
-
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
-msgid "First layer cal."
-msgstr "Cal. primera cap."
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Primero, hare el Selftest para comprobar los problemas de montaje mas comunes."
-
-# 
-#: mmu.cpp:724
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Corrige el problema y pulsa el boton en la unidad MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7038
-msgid "Flow"
-msgstr "Flujo"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
-msgid "Front print fan?"
-msgstr "Vent. frontal?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
-msgid "Front side[um]"
-msgstr "Frontal [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
-msgid "Front/left fans"
-msgstr "Ventiladores frontal/izquierdo"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
-msgid "Heater/Thermistor"
-msgstr "Calentador/Termistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
-msgid "Heating disabled by safety timer."
-msgstr "Calentadores desactivados por el temporizador de seguridad."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:47
-msgid "Heating done."
-msgstr "Calentamiento acabado."
-
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Calentando..."
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Cambiar filamento"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
-msgid "Change success!"
-msgstr "Cambio correcto"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
-msgid "Changed correctly?"
-msgstr "Cambio correcto?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
-msgid "Checking bed     "
-msgstr "Control base cal."
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
-msgid "Checking endstops"
-msgstr "Control endstops"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
-msgid "Checking hotend  "
-msgstr "Control fusor"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
-msgid "Checking sensors "
-msgstr "Comprobando los sensores"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
-msgid "Checking X axis  "
-msgstr "Control sensor X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
-msgid "Checking Y axis  "
-msgstr "Control sensor Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
-msgid "Checking Z axis  "
-msgstr "Control sensor Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Elegir extrusor:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Elije filamento:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr "Filamento"
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Hare la calibracion XYZ. Tardara 12 min. aproximadamente."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
-msgid "I will run z calibration now."
-msgstr "Voy a hacer Calibracion Z ahora."
-
-# MSG_WATCH
-#: messages.c:99
-msgid "Info screen"
-msgstr "Monitorizar"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
-msgid "Insert filament"
-msgstr "Introducir filamento"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
-msgid "Is filament loaded?"
-msgstr "Esta el filamento cargado?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
-msgid "Is steel sheet on heatbed?"
-msgstr "?Esta colocada la lamina de acero sobre la base?"
-
-# 
-#: ultralcd.cpp:1779
-msgid "Last print failures"
-msgstr "Ultimas impresiones fallidas"
-
-# 
-#: ultralcd.cpp:1756
-msgid "Last print"
-msgstr "Ultima impresion"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
-msgid "Left hotend fan?"
-msgstr "Vent. izquierdo?"
-
-# 
-#: ultralcd.cpp:3011
-msgid "Left"
-msgstr "Izquierda"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
-msgid "Left side [um]"
-msgstr "Izquierda [um]"
-
-# 
-#: ultralcd.cpp:5747
-msgid "Lin. correction"
-msgstr "Correccion de Linealidad"
-
-# MSG_BABYSTEP_Z
-#: messages.c:13
-msgid "Live adjust Z"
-msgstr "Micropaso Eje Z"
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:51
-msgid "Load filament"
-msgstr "Introducir filam."
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
-msgid "Loading color"
-msgstr "Cambiando color"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:52
-msgid "Loading filament"
-msgstr "Introduciendo filam."
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
-msgid "Loose pulley"
-msgstr "Polea suelta"
-
-# 
-#: ultralcd.cpp:6911
-msgid "Load to nozzle"
-msgstr "Cargar a la boquilla"
-
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
-msgid "M117 First layer cal."
-msgstr "M117 Cal. primera cap."
-
-# MSG_MAIN
-#: messages.c:56
-msgid "Main"
-msgstr "Menu principal"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
-msgid "Measuring reference height of calibration point"
-msgstr "Midiendo altura del punto de calibracion"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
-msgid "Mesh Bed Leveling"
-msgstr "Nivelacion Mesh Level"
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Restaurando posicion..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Restaurando temperatura..."
-
-# 
-#: ultralcd.cpp:3052
-msgid "Measured skew"
-msgstr "Desviacion med:"
-
-# 
-#: ultralcd.cpp:1780
-msgid "MMU fails"
-msgstr "Fallos MMU"
-
-# 
-#: mmu.cpp:1592
-msgid "MMU load failed     "
-msgstr "Carga MMU fallida"
-
-# 
-#: ultralcd.cpp:1781
-msgid "MMU load fails"
-msgstr "Carga MMU falla"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Resumiendo..."
-
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Modo     [Normal]"
-
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Modo   [silencio]"
-
-# 
-#: mmu.cpp:719
-msgid "MMU needs user attention."
-msgstr "MMU necesita atencion del usuario."
-
-# 
-#: ultralcd.cpp:1807
-msgid "MMU power fails"
-msgstr "Fallo de energia en MMU"
-
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Modo   [Silencio]"
-
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Modo[fuerza auto]"
-
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Modo [rend.pleno]"
-
-# 
-#: ultralcd.cpp:2203
-msgid "MMU2 connected"
-msgstr "MMU2 conectado"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:83
-msgid "Motor"
-msgstr ""
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
-msgid "Move axis"
-msgstr "Mover ejes"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4375
-msgid "Move X"
-msgstr "Mover X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4376
-msgid "Move Y"
-msgstr "Mover Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4377
-msgid "Move Z"
-msgstr "Mover Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5293
-msgid "No move."
-msgstr "Sin movimiento"
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6878
-msgid "No SD card"
-msgstr "No hay tarjeta SD"
-
-# 
-#: ultralcd.cpp:3017
-msgid "N/A"
-msgstr "N/A"
-
-# MSG_NO
-#: messages.c:62
-msgid "No"
-msgstr ""
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
-msgid "Not connected"
-msgstr "No hay conexion "
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Nuevo firmware disponible:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
-msgid "Not spinning"
-msgstr "Ventilador no gira"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Voy a calibrar la distancia entre la punta de la boquilla y la superficie de la base."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Ahora precalentare la boquilla para PLA."
-
-# MSG_NOZZLE
-#: messages.c:63
-msgid "Nozzle"
-msgstr "Boquilla"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del extrusor, etc"
-
-# 
-#: ultralcd.cpp:5071
-msgid "Now remove the test print from steel sheet."
-msgstr "Ahora retira la prueba de la lamina de acero."
-
-# 
-#: ultralcd.cpp:1706
-msgid "Nozzle FAN"
-msgstr "Vent. capa"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
-msgid "Pause print"
-msgstr "Pausar impresion"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
-msgid "PID cal.           "
-msgstr "Cal. PID "
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
-msgid "PID cal. finished"
-msgstr "Cal. PID terminada"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
-msgid "PID calibration"
-msgstr "Calibracion PID"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
-msgid "PINDA Heating"
-msgstr "Calentando PINDA"
-
-# MSG_PAPER c=20 r=8
-#: messages.c:64
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
-msgid "Please clean heatbed and then press the knob."
-msgstr "Limpia la superficie de la base, por favor, y haz clic"
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Limpia boquilla para calibracion. Click cuando acabes."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
-msgid "Please check :"
-msgstr "Controla :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard"
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
-msgid "Please open idler and remove filament manually."
-msgstr "Por favor abate el rodillo de empuje (idler) y retira el filamento manualmente."
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr "Por favor coloca la chapa de acero en la base calefactable."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
-msgid "Please press the knob to unload filament"
-msgstr "Por favor, pulsa el dial para descargar el filamento"
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
-msgid "Please pull out filament immediately"
-msgstr "Por favor retire el filamento de inmediato"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
-msgid "Please remove filament and then press the knob."
-msgstr "Por favor quite el filamento y luego presione el dial."
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr "Por favor retire la chapa de acero de la base calefactable."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
-msgid "Please run XYZ calibration first."
-msgstr "Por favor realiza la calibracion XYZ primero."
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Por favor actualice el firmware en tu MMU2. Esperando el reseteo."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:66
-msgid "Please wait"
-msgstr "Por Favor Espere"
-
-# 
-#: ultralcd.cpp:5070
-msgid "Please remove shipping helpers first."
-msgstr "Por favor retira los soportes de envio primero."
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
-msgid "Preheat the nozzle!"
-msgstr "Precalienta extrusor!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6825
-msgid "Preheat"
-msgstr "Precalentar"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
-msgid "Preheating nozzle. Please wait."
-msgstr "Precalentando nozzle. Espera por favor."
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Actualize por favor"
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Pulsa el dial para precalentar la boquilla y continue."
-
-# 
-#: ultralcd.cpp:1835
-msgid "Power failures"
-msgstr "Cortes de energia"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:69
-msgid "Print aborted"
-msgstr "Impresion cancelada"
-
-# 
-#: ultralcd.cpp:2452
-msgid "Preheating to load"
-msgstr "Precalentar para cargar"
-
-# 
-#: ultralcd.cpp:2456
-msgid "Preheating to unload"
-msgstr "Precalentar para descargar"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
-msgid "Print fan:"
-msgstr "Vent.fusor:"
-
-# MSG_CARD_MENU
-#: messages.c:21
-msgid "Print from SD"
-msgstr "Menu tarjeta SD"
-
-# 
-#: ultralcd.cpp:2301
-msgid "Press the knob"
-msgstr "Pulsa el dial"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
-msgid "Print paused"
-msgstr "Impresion en pausa"
-
-# 
-#: mmu.cpp:723
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Presiona el dial para continuar con la temperatura de la boquilla."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Impresora no esta calibrada todavia. Por favor usa el manual capitulo Primeros pasos Calibracion flujo."
-
-# 
-#: ultralcd.cpp:1707
-msgid "Print FAN"
-msgstr "Vent. extr"
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2189
-msgid "prusa3d.com"
-msgstr "prusa3d.es"
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
-msgid "Rear side [um]"
-msgstr "Trasera [um]"
-
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
-msgid "Recovering print    "
-msgstr "Recuperando impresion"
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo filamento."
-
-# 
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
-msgid "Reset XYZ calibr."
-msgstr ""
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
-msgid "Reset"
-msgstr ""
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
-msgid "Resume print"
-msgstr "Reanudar impres."
-
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
-msgid "Resuming print"
-msgstr "Continuando impresion"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
-msgid "Right side[um]"
-msgstr "Derecha [um]"
-
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "Puerto RPi  [act]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "Puerto RPi  [ina]"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "Tarj. SD [normal]"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "Tarj. SD[FlshAir]"
-
-# 
-#: ultralcd.cpp:3012
-msgid "Right"
-msgstr "Derecha"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
-msgid "Searching bed calibration point"
-msgstr "Buscando punto de calibracion base"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
-msgid "Select language"
-msgstr "Cambiar el idioma"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
-msgid "Self test OK"
-msgstr ""
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
-msgid "Self test start  "
-msgstr "Iniciar Selftest"
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5820
-msgid "Selftest         "
-msgstr "Selftest"
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
-msgid "Selftest error !"
-msgstr "Error Selftest !"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:77
-msgid "Selftest failed  "
-msgstr "Fallo Selftest"
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Se realizara el auto-test para calibrar con precision la vuelta a la posicion inicial sin sensores."
-
-# 
-#: ultralcd.cpp:5111
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
-
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Seleccionar filamento PLA:"
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
-msgid "Set temperature:"
-msgstr "Establecer temp.:"
-
-# MSG_SETTINGS
-#: messages.c:86
-msgid "Settings"
-msgstr "Configuracion"
-
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
-msgid "Show end stops"
-msgstr "Mostrar endstops"
-
-# 
-#: ultralcd.cpp:4022
-msgid "Sensor state"
-msgstr "Estado del sensor"
-
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Ordenar [ninguno]"
-
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Ordenar   [fecha]"
-
-# 
-#: ultralcd.cpp:3055
-msgid "Severe skew:"
-msgstr "Incl.severa:"
-
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Ordenar [alfabet]"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
-msgid "Sorting files"
-msgstr "Ordenando archivos"
-
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Sonido     [alto]"
-
-# 
-#: ultralcd.cpp:3054
-msgid "Slight skew:"
-msgstr "Liger.incl.:"
-
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Sonido[silenciad]"
-
-# 
-#: Marlin_main.cpp:4875
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Problema encontrado, nivelacion Z forzosa ..."
-
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Sonido  [una vez]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Sonido[silencios]"
-
-# MSG_SPEED
-#: ultralcd.cpp:7032
-msgid "Speed"
-msgstr "Velocidad"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
-msgid "Spinning"
-msgstr "Ventilador girando"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Se necesita una temperatura ambiente ente 21 y 26C y un soporte rigido."
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6945
-msgid "Statistics  "
-msgstr "Estadisticas "
-
-# MSG_STOP_PRINT
-#: messages.c:93
-msgid "Stop print"
-msgstr "Detener impresion"
-
-# MSG_STOPPED
-#: messages.c:94
-msgid "STOPPED. "
-msgstr "PARADA"
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6954
-msgid "Support"
-msgstr "Soporte"
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
-msgid "Swapped"
-msgstr "Intercambiado"
-
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Cal. temp. "
-
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Cal. temp.   [on]"
-
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Cal. temp.  [off]"
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
-msgid "Temp. calibration"
-msgstr "Calibracion temp."
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
-msgid "Temperature calibration failed"
-msgstr "Fallo de la calibracion de temperatura"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Calibracion temperatura terminada. Haz clic para continuar."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5717
-msgid "Temperature"
-msgstr "Temperatura"
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
-msgid "Temperatures"
-msgstr "Temperaturas"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total filament"
-msgstr "Filamento total"
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total print time"
-msgstr "Tiempo total"
-
-# MSG_TUNE
-#: ultralcd.cpp:6822
-msgid "Tune"
-msgstr "Ajustar"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Descargar"
-
-# 
-#: ultralcd.cpp:1804
-msgid "Total failures"
-msgstr "Fallos totales"
-
-# 
-#: ultralcd.cpp:2308
-msgid "to load filament"
-msgstr "para cargar el filamento"
-
-# 
-#: ultralcd.cpp:2312
-msgid "to unload filament"
-msgstr "para descargar el filamento"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
-msgid "Unload filament"
-msgstr "Soltar filamento"
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
-msgid "Unloading filament"
-msgstr "Soltando filamento"
-
-# 
-#: ultralcd.cpp:1757
-msgid "Total"
-msgstr ""
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
-msgid "Used during print"
-msgstr "Usado en impresion"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
-msgid "Voltages"
-msgstr "Voltajes"
-
-# 
-#: ultralcd.cpp:2211
-msgid "unknown"
-msgstr "desconocido"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5264
-msgid "Wait for user..."
-msgstr "Esperando ordenes"
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Esperando enfriamiento de la base y extrusor."
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
-msgid "Waiting for PINDA probe cooling"
-msgstr "Esperando a que se enfrie la sonda PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Usa unload para retirar el filamento 1 si sobresale por fuera de la parte trasera del tubo MMU. Usa Expulsar si esta escondido dentro del tubo"
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Aviso: tanto el tipo de impresora como el tipo de la placa han cambiado."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
-msgid "Warning: motherboard type changed."
-msgstr "Cuidado: el tipo de placa ha cambiado."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
-msgid "Warning: printer type changed."
-msgstr "Cuidado: Ha cambiado el tipo de impresora."
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
-msgid "Was filament unload successful?"
-msgstr "?Se cargocon exito el filamento?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
-msgid "Wiring error"
-msgstr "Error de conexion"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
-msgid "Wizard"
-msgstr ""
-
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
-msgid "XYZ cal. details"
-msgstr "Detalles de calibracion XYZ"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
-
-# MSG_YES
-#: messages.c:104
-msgid "Yes"
-msgstr "Si"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Siempre puedes acceder al asistente desde Calibracion -> Wizard"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
-
-# 
-#: ultralcd.cpp:5197
-msgid "X-correct:"
-msgstr "Corregir-X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
-msgid "Load all"
-msgstr "Intr. todos fil."
-
-# 
-#: ultralcd.cpp:3879
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados."
-
-# 
-#: ultralcd.cpp:3885
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables."
-
-# 
-#: ultralcd.cpp:3888
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Calibracion XYZ fallad. Punto frontal derecho no alcanzable."
-
-# 
-#: ultralcd.cpp:3009
-msgid "Y distance from min"
-msgstr "Distancia en Y desde el min"
-
-# 
-#: ultralcd.cpp:5198
-msgid "Y-correct:"
-msgstr "Corregir-Y:"
-
-# MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr "[apag]"
-
-# 
-#: messages.c:57
-msgid "Back"
-msgstr "atras"
-
-# 
-#: ultralcd.cpp:5706
-msgid "Checks"
-msgstr "Comprobaciones"
-
-# 
-#: ultralcd.cpp:8080
-msgid "False triggering"
-msgstr "Falsa activacion"
-
-# 
-#: ultralcd.cpp:4027
-msgid "FINDA:"
-msgstr "FINDA:"
-
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware[ninguno]"
-
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware[estrict]"
-
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware  [aviso]"
-
-# 
-#: messages.c:87
-msgid "HW Setup"
-msgstr "Configuracion HW"
-
-# 
-#: ultralcd.cpp:4031
-msgid "IR:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Comp. imanes [N/A]"
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Comp. imanes [Off]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Comp. imanes  [On]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Malla        [3x3]"
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Malla        [7x7]"
-
-# 
-#: ultralcd.cpp:5744
-msgid "Mesh bed leveling"
-msgstr "Nivelacion Malla Base"
-
-# 
-#: Marlin_main.cpp:852
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "Firmware MK3S detectado en impresora MK3"
-
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "Modo MMU [Normal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "Modo MMU[Silenci]"
-
-# 
-#: ultralcd.cpp:4508
-msgid "Mode change in progress ..."
-msgstr "Cambio de modo progresando ..."
-
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Modelo  [ninguno]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Modelo [estricto]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Modelo    [aviso]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Diam. nozzl[0.25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Diam. nozzl[0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Diam. nozzl[0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Nozzle  [ninguno]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Nozzle [estricto]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Nozzle    [aviso]"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr "Codigo G laminado para un nivel diferente. ?Continuar?"
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr "Codigo G laminado para un nivel diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "Codigo G laminado para una impresora diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "Codigo G laminado para nuevo firmware. ?Continuar?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "Codigo G laminado para nuevo firmware. Por favor actualiza el firmware. Impresion cancelada."
-
-# 
-#: ultralcd.cpp:4023
-msgid "PINDA:"
-msgstr "PINDA:"
-
-# 
-#: ultralcd.cpp:2462
-msgid "Preheating to cut"
-msgstr "Precalentando para laminar"
-
-# 
-#: ultralcd.cpp:2459
-msgid "Preheating to eject"
-msgstr "Precalentar para expulsar"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Diametro nozzle impresora difiere de cod.G. ?Continuar?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
-
-# 
-#: ultralcd.cpp:6786
-msgid "Rename"
-msgstr "Renombrar"
-
-# 
-#: ultralcd.cpp:6779
-msgid "Select"
-msgstr "Seleccionar"
-
-# 
-#: ultralcd.cpp:2229
-msgid "Sensor info"
-msgstr "Info sensor"
-
-# 
-#: messages.c:58
-msgid "Sheet"
-msgstr "Lamina"
-
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Sonido [asistido]"
-
-# 
-#: ultralcd.cpp:5704
-msgid "Steel sheets"
-msgstr "Lamina de acero"
-
-# 
-#: ultralcd.cpp:5199
-msgid "Z-correct:"
-msgstr "Corregir-Z:"
-
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Z-sensor nr.   [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Z-sensor nr.   [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Z-sensor nr.   [5]"
-
+# Translation of Prusa-Firmware into Spanish.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: es\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Wed May 13 17:41:49 CEST 2020\n"
+"PO-Revision-Date: Wed May 13 17:41:49 CEST 2020\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
+
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 o mayor"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 o mas nueva"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:36
+msgid " of 4"
+msgstr " de 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:56
+msgid " of 9"
+msgstr " de 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3064
+msgid "[0;0] point offset"
+msgstr "[0;0] punto offset"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Dec. choque puede\x0aser activada solo en\x0aModo normal"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "ATENCION:\x0aDec. choque\x0adesactivada en\x0aModo silencio"
+
+# 
+#: ultralcd.cpp:2460
+msgid ">Cancel"
+msgstr ">Cancelar"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3184
+msgid "Adjusting Z:"
+msgstr "Ajustar-Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8677
+msgid "All correct      "
+msgstr "Todo bien"
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:99
+msgid "All is done. Happy printing!"
+msgstr "Terminado! Feliz impresion!"
+
+# 
+#: ultralcd.cpp:1956
+msgid "Ambient"
+msgstr "Ambiente"
+
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
+msgid "and press the knob"
+msgstr "Haz clic"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3506
+msgid "Are left and right Z~carriages all up?"
+msgstr "Carros Z izq./der. estan arriba maximo?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Llevar al origen"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
+msgid "AutoLoad filament"
+msgstr "Carga auto. filam."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4445
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "La carga automatica solo funciona si el sensor de filamento esta activado..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2804
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "La carga automatica esta activada, pulse el dial e inserte el filamento..."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8325
+msgid "Axis length"
+msgstr "Longitud del eje"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8327
+msgid "Axis"
+msgstr "Eje"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8269
+msgid "Bed / Heater"
+msgstr "Base / Calentador"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Base preparada"
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Calentando Base"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5861
+msgid "Bed level correct"
+msgstr "Corr. de la cama"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test cinturon    "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Brill."
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Brillo"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Base"
+
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
+msgid "Belt status"
+msgstr "Estado de correa"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:67
+msgid "Blackout occurred. Recover print?"
+msgstr "Se fue la luz. ?Reanudar la impresion?"
+
+# 
+#: ultralcd.cpp:8679
+msgid "Calibrating home"
+msgstr "Calibrando posicion inicial"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5850
+msgid "Calibrate XYZ"
+msgstr "Calibrar XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:44
+msgid "Calibrate Z"
+msgstr "Calibrar Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4637
+msgid "Calibrate"
+msgstr "Calibrar"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrando XYZ. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:19
+msgid "Calibrating Z"
+msgstr "Calibrando Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrando Z. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:865
+msgid "Calibration done"
+msgstr "Calibracion OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:57
+msgid "Calibration"
+msgstr "Calibracion"
+
+# 
+#: ultralcd.cpp:4815
+msgid "Cancel"
+msgstr "Cancelar"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:9090
+msgid "Card removed"
+msgstr "Tarjeta retirada"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2709
+msgid "Color not correct"
+msgstr "Color no homogeneo"
+
+# MSG_COOLDOWN
+#: messages.c:22
+msgid "Cooldown"
+msgstr "Enfriar"
+
+# 
+#: ultralcd.cpp:4570
+msgid "Copy selected language?"
+msgstr "Copiar idioma seleccionado?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Det. choque"
+
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Escoge un filamento para la Calibracion de la Primera Capa y seleccionalo en el menu en pantalla."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:23
+msgid "Crash detected."
+msgstr "Choque detectado."
+
+# 
+#: Marlin_main.cpp:607
+msgid "Crash detected. Resume print?"
+msgstr "Choque detectado. Continuar impresion?"
+
+# 
+#: ultralcd.cpp:1785
+msgid "Crash"
+msgstr "Choque"
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:6002
+msgid "Current"
+msgstr "Actual"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2163
+msgid "Date:"
+msgstr "Fecha:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5743
+msgid "Disable steppers"
+msgstr "Apagar motores"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5125
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
+msgid "E-correct:"
+msgstr "Corregir-E:"
+
+# MSG_EJECT_FILAMENT c=17 r=1
+#: messages.c:49
+msgid "Eject filament"
+msgstr "Expulsar fil."
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1416
+msgid "Ejecting filament"
+msgstr "Expulsando filamento"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
+msgid "Endstop not hit"
+msgstr "Endstop no alcanzado"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8287
+msgid "Endstop"
+msgstr ""
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8275
+msgid "Endstops"
+msgstr ""
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6998
+msgid "Error - static memory has been overwritten"
+msgstr "Error - se ha sobre-escrito la memoria estatica"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Cortar filament"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Cuchillo"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Corte de filament"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4458
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
+
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr ""
+
+# MSG_ERROR
+#: messages.c:25
+msgid "ERROR:"
+msgstr ""
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8686
+msgid "Extruder fan:"
+msgstr "Vent.extrusor:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
+msgid "Extruder info"
+msgstr "Info. del extrusor"
+
+# MSG_MOVE_E
+#: messages.c:26
+msgid "Extruder"
+msgstr "Extruir"
+
+# 
+#: ultralcd.cpp:6985
+msgid "Fail stats MMU"
+msgstr "Estadistica de fallos MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "Autocarg.fil."
+
+# 
+#: ultralcd.cpp:6982
+msgid "Fail stats"
+msgstr "Estadistica de fallos"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:28
+msgid "Fan speed"
+msgstr "Velocidad Vent"
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:74
+msgid "Fan test"
+msgstr "Test ventiladores"
+
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Comprob.vent"
+
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Sensor Fil."
+
+#  c=14
+#: ultralcd.cpp:1784
+msgid "Filam. runouts"
+msgstr "Filam. acabado"
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:29
+msgid "Filament extruding & with correct color?"
+msgstr "Es nitido el color nuevo?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2705
+msgid "Filament not loaded"
+msgstr "Fil. no introducido"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:80
+msgid "Filament sensor"
+msgstr "Sensor de filamento"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
+msgid "Filament used"
+msgstr "Filamento usado"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2870
+msgid "Print time"
+msgstr "Tiempo de imp.:"
+
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "FS accion"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 o +nueva"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
+msgid "File incomplete. Continue anyway?"
+msgstr "Archivo incompleto. ?Continuar de todos modos?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
+msgid "Finishing movements"
+msgstr "Term. movimientos"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
+msgid "First layer cal."
+msgstr "Cal. primera cap."
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:5046
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Primero, hare el Selftest para comprobar los problemas de montaje mas comunes."
+
+# 
+#: mmu.cpp:727
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Corrige el problema y pulsa el boton en la unidad MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:7125
+msgid "Flow"
+msgstr "Flujo"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2156
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:71
+msgid "Front print fan?"
+msgstr "Vent. frontal?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3266
+msgid "Front side[um]"
+msgstr "Frontal [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8333
+msgid "Front/left fans"
+msgstr "Ventiladores frontal/izquierdo"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8263
+msgid "Heater/Thermistor"
+msgstr "Calentador/Termistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9440
+msgid "Heating disabled by safety timer."
+msgstr "Calentadores desactivados por el temporizador de seguridad."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:43
+msgid "Heating done."
+msgstr "Calentando acabado."
+
+# MSG_HEATING
+#: messages.c:42
+msgid "Heating"
+msgstr "Calentando..."
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:5025
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2157
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:34
+msgid "Change filament"
+msgstr "Cambiar filamento"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2620
+msgid "Change success!"
+msgstr "Cambio correcto"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2697
+msgid "Changed correctly?"
+msgstr "Cambio correcto?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:77
+msgid "Checking bed     "
+msgstr "Control base cal."
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8668
+msgid "Checking endstops"
+msgstr "Control endstops"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8674
+msgid "Checking hotend  "
+msgstr "Control fusor"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:78
+msgid "Checking sensors "
+msgstr "Comprobando sensores"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7482
+msgid "Checking X axis  "
+msgstr "Control sensor X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7491
+msgid "Checking Y axis  "
+msgstr "Control sensor Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8671
+msgid "Checking Z axis  "
+msgstr "Control sensor Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:45
+msgid "Choose extruder:"
+msgstr "Elegir extrusor:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:46
+msgid "Choose filament:"
+msgstr "Elije filamento:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:27
+msgid "Filament"
+msgstr "Filamento"
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:5055
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Hare la calibracion XYZ. Tardara 12 min. aproximadamente."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:5063
+msgid "I will run z calibration now."
+msgstr "Voy a hacer Calibracion Z ahora."
+
+# MSG_WATCH
+#: messages.c:97
+msgid "Info screen"
+msgstr "Monitorizar"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2605
+msgid "Insert filament"
+msgstr "Introducir filamento"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4835
+msgid "Is filament loaded?"
+msgstr "Esta el filamento cargado?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:90
+msgid "Is steel sheet on heatbed?"
+msgstr "?Esta colocada la lamina sobre la base"
+
+# 
+#: ultralcd.cpp:1727
+msgid "Last print failures"
+msgstr "Ultimas impresiones fallidas"
+
+# 
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Si tienes planchas de acero adicionales, calibra sus ajustes en Ajustes - Ajustes HW - Planchas acero."
+
+# 
+#: ultralcd.cpp:1704
+msgid "Last print"
+msgstr "Ultima impresion"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:72
+msgid "Left hotend fan?"
+msgstr "Vent. izquierdo?"
+
+# 
+#: ultralcd.cpp:2993
+msgid "Left"
+msgstr "Izquierda"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3264
+msgid "Left side [um]"
+msgstr "Izquierda [um]"
+
+# 
+#: ultralcd.cpp:5766
+msgid "Lin. correction"
+msgstr "Correccion de Linealidad"
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Micropaso Eje Z"
+
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Inserte el filamento (no lo cargue) en el extrusor y luego presione el dial."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:47
+msgid "Load filament"
+msgstr "Introducir filam."
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2645
+msgid "Loading color"
+msgstr "Cambiando color"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:48
+msgid "Loading filament"
+msgstr "Introduciendo filam."
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8317
+msgid "Loose pulley"
+msgstr "Polea suelta"
+
+# 
+#: ultralcd.cpp:6944
+msgid "Load to nozzle"
+msgstr "Cargar a la boquilla"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
+msgid "M117 First layer cal."
+msgstr "M117 Cal. primera cap."
+
+# MSG_MAIN
+#: messages.c:52
+msgid "Main"
+msgstr "Menu principal"
+
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Valor brill."
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr ""
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:55
+msgid "Measuring reference height of calibration point"
+msgstr "Midiendo altura del punto de calibracion"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:5856
+msgid "Mesh Bed Leveling"
+msgstr "Nivelacion Mesh Level"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:765
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Restaurando posicion..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:758
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Restaurando temperatura..."
+
+# 
+#: ultralcd.cpp:3034
+msgid "Measured skew"
+msgstr "Desviacion med:"
+
+# 
+#: ultralcd.cpp:1728
+msgid "MMU fails"
+msgstr "Fallos MMU"
+
+# 
+#: mmu.cpp:1588
+msgid "MMU load failed     "
+msgstr "Carga MMU fallida"
+
+# 
+#: ultralcd.cpp:1729
+msgid "MMU load fails"
+msgstr "Carga MMU falla"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:776
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Resumiendo..."
+
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Modo"
+
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Firmware MK3 detectado en impresora MK3S"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Silencio"
+
+# 
+#: mmu.cpp:722
+msgid "MMU needs user attention."
+msgstr "MMU necesita atencion del usuario."
+
+# 
+#: ultralcd.cpp:1755
+msgid "MMU power fails"
+msgstr "Fallo de energia en MMU"
+
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Silencio"
+
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Fuerza auto"
+
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Rend.pleno"
+
+# 
+#: ultralcd.cpp:2186
+msgid "MMU2 connected"
+msgstr "MMU2 conectado"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:79
+msgid "Motor"
+msgstr ""
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5741
+msgid "Move axis"
+msgstr "Mover ejes"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4361
+msgid "Move X"
+msgstr "Mover X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4362
+msgid "Move Y"
+msgstr "Mover Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4363
+msgid "Move Z"
+msgstr "Mover Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5541
+msgid "No move."
+msgstr "Sin movimiento"
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6911
+msgid "No SD card"
+msgstr "No hay tarjeta SD"
+
+# MSG_NA
+#: messages.c:107
+msgid "N/A"
+msgstr "N/A"
+
+# MSG_NO
+#: messages.c:58
+msgid "No"
+msgstr ""
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8265
+msgid "Not connected"
+msgstr "No hay conexion "
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Nuevo firmware disponible:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:75
+msgid "Not spinning"
+msgstr "Ventilador no gira"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4946
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Voy a calibrar la distancia entre la punta de la boquilla y la superficie de la base."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:5071
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Ahora precalentare la boquilla para PLA."
+
+# MSG_NOZZLE
+#: messages.c:59
+msgid "Nozzle"
+msgstr "Boquilla"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del extrusor, etc"
+
+# 
+#: ultralcd.cpp:5062
+msgid "Now remove the test print from steel sheet."
+msgstr "Ahora retira la prueba de la lamina de acero."
+
+# 
+#: ultralcd.cpp:1654
+msgid "Nozzle FAN"
+msgstr "Vent. capa"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6875
+msgid "Pause print"
+msgstr "Pausar impresion"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1539
+msgid "PID cal.           "
+msgstr "Cal. PID "
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1545
+msgid "PID cal. finished"
+msgstr "Cal. PID terminada"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5862
+msgid "PID calibration"
+msgstr "Calibracion PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:896
+msgid "PINDA Heating"
+msgstr "Calentando PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:60
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5128
+msgid "Please clean heatbed and then press the knob."
+msgstr "Limpia la superficie de la base, por favor, y haz clic"
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:21
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Limpia boquilla para calibracion. Click cuando acabes."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8257
+msgid "Please check :"
+msgstr "Controla :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:98
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard"
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3138
+msgid "Please open idler and remove filament manually."
+msgstr "Por favor abate el rodillo de empuje (idler) y retira el filamento manualmente."
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:61
+msgid "Please place steel sheet on heatbed."
+msgstr "Por favor coloca la chapa de acero en la base calefactable."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:64
+msgid "Please press the knob to unload filament"
+msgstr "Por favor, pulsa el dial para descargar el filamento"
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:66
+msgid "Please pull out filament immediately"
+msgstr "Por favor retire el filamento de inmediato"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1422
+msgid "Please remove filament and then press the knob."
+msgstr "Por favor quite el filamento y luego presione el dial."
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:70
+msgid "Please remove steel sheet from heatbed."
+msgstr "Por favor retire la chapa de acero de la base calefactable."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4583
+msgid "Please run XYZ calibration first."
+msgstr "Por favor realiza la calibracion XYZ primero."
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1341
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Por favor actualice el firmware en tu MMU2. Esperando el reseteo."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:62
+msgid "Please wait"
+msgstr "Por Favor Espere"
+
+# 
+#: ultralcd.cpp:5061
+msgid "Please remove shipping helpers first."
+msgstr "Por favor retira los soportes de envio primero."
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:63
+msgid "Preheat the nozzle!"
+msgstr "Precalienta extrusor"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6853
+msgid "Preheat"
+msgstr "Precalentar"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:100
+msgid "Preheating nozzle. Please wait."
+msgstr "Precalentando nozzle. Espera por favor."
+
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Actualize por favor"
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11526
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Pulsa el dial para precalentar la boquilla y continue."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr "Pausa"
+
+# 
+#: ultralcd.cpp:1783
+msgid "Power failures"
+msgstr "Cortes de energia"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:65
+msgid "Print aborted"
+msgstr "Impresion cancelada"
+
+#  c=20
+#: ultralcd.cpp:2442
+msgid "Preheating to load"
+msgstr "Precalent. cargar"
+
+#  c=20
+#: ultralcd.cpp:2446
+msgid "Preheating to unload"
+msgstr "Precalent. descargar"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8689
+msgid "Print fan:"
+msgstr "Vent.fusor:"
+
+# MSG_CARD_MENU
+#: messages.c:20
+msgid "Print from SD"
+msgstr "Menu tarjeta SD"
+
+# 
+#: ultralcd.cpp:2289
+msgid "Press the knob"
+msgstr "Pulsa el dial"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1118
+msgid "Print paused"
+msgstr "Impresion en pausa"
+
+# 
+#: mmu.cpp:726
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Presiona el dial para continuar con la temperatura de la boquilla."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:38
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Impresora no esta calibrada todavia. Por favor usa el manual capitulo Primeros pasos Calibracion flujo."
+
+# 
+#: ultralcd.cpp:1655
+msgid "Print FAN"
+msgstr "Vent. extr"
+
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Por favor, coloca el filamento en el extrusor, luego presiona el dial para cargarlo."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Por favor, coloca el filamento en el primer tubo de la MMU, luego pulsa el dial para cargarlo."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Por favor, cargar primero el filamento. "
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2155
+msgid "prusa3d.com"
+msgstr "prusa3d.es"
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3267
+msgid "Rear side [um]"
+msgstr "Trasera [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Primero descargue el filamento, luego repita esta accion."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
+msgid "Recovering print    "
+msgstr "Recuper. impresion  "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo filamento."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5867
+msgid "Reset XYZ calibr."
+msgstr ""
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:3268
+msgid "Reset"
+msgstr ""
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:6861
+msgid "Resume print"
+msgstr "Reanudar impres."
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
+msgid "Resuming print"
+msgstr "Continuan. impresion"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3265
+msgid "Right side[um]"
+msgstr "Derecha [um]"
+
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr "Puerto RPi"
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4864
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?"
+
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "Tarj. SD"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2994
+msgid "Right"
+msgstr "Derecha"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:35
+msgid "Searching bed calibration point"
+msgstr "Buscando punto de calibracion base"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5779
+msgid "Select language"
+msgstr "Cambiar el idioma"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7812
+msgid "Self test OK"
+msgstr ""
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7582
+msgid "Self test start  "
+msgstr "Iniciar Selftest"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5843
+msgid "Selftest         "
+msgstr ""
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8255
+msgid "Selftest error !"
+msgstr "Error Selftest !"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:73
+msgid "Selftest failed  "
+msgstr "Fallo Selftest"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1550
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Se realizara el auto-test para calibrar con precision la vuelta a la posicion inicial sin sensores."
+
+# 
+#: ultralcd.cpp:5102
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3286
+msgid "Set temperature:"
+msgstr "Establecer temp.:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:82
+msgid "Settings"
+msgstr "Configuracion"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
+msgid "Show end stops"
+msgstr "Mostrar endstops"
+
+# 
+#: ultralcd.cpp:4008
+msgid "Sensor state"
+msgstr "Estado del sensor"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
+
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Ordenar"
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Ninguno"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Fecha"
+
+# 
+#: ultralcd.cpp:3037
+msgid "Severe skew:"
+msgstr "Incl.severa:"
+
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Alfabet"
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:745
+msgid "Sorting files"
+msgstr "Ordenando archivos"
+
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Alto"
+
+# 
+#: ultralcd.cpp:3036
+msgid "Slight skew:"
+msgstr "Liger.incl.:"
+
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Sonido"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:5101
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Problema encontrado, nivelacion Z forzosa ..."
+
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Una vez"
+
+# MSG_SPEED
+#: ultralcd.cpp:7119
+msgid "Speed"
+msgstr "Velocidad"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:76
+msgid "Spinning"
+msgstr "Ventilador girando"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4596
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Se necesita una temperatura ambiente ente 21 y 26C y un soporte rigido."
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6978
+msgid "Statistics  "
+msgstr "Estadisticas "
+
+# MSG_STOP_PRINT
+#: messages.c:91
+msgid "Stop print"
+msgstr "Detener impresion"
+
+# MSG_STOPPED
+#: messages.c:92
+msgid "STOPPED. "
+msgstr "PARADA"
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6987
+msgid "Support"
+msgstr "Soporte"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8335
+msgid "Swapped"
+msgstr "Intercambiado"
+
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Selecciona filamento:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Cal. temp."
+
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Selecciona la temperatura adecuada a tu material."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5873
+msgid "Temp. calibration"
+msgstr "Calibracion temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3933
+msgid "Temperature calibration failed"
+msgstr "Fallo de la calibracion de temperatura"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:94
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Calibracion temperatura terminada. Haz clic para continuar."
+
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensor verificado, retire el filamento ahora."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5739
+msgid "Temperature"
+msgstr "Temperatura"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2218
+msgid "Temperatures"
+msgstr "Temperaturas"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
+
+# 
+#: ultralcd.cpp:2891
+msgid "Total filament"
+msgstr "Filamento total"
+
+# 
+#: ultralcd.cpp:2892
+msgid "Total print time"
+msgstr "Tiempo total"
+
+# MSG_TUNE
+#: ultralcd.cpp:6850
+msgid "Tune"
+msgstr "Ajustar"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Descargar"
+
+# 
+#: ultralcd.cpp:1752
+msgid "Total failures"
+msgstr "Fallos totales"
+
+# 
+#: ultralcd.cpp:2296
+msgid "to load filament"
+msgstr "para cargar el filamento"
+
+# 
+#: ultralcd.cpp:2300
+msgid "to unload filament"
+msgstr "para descargar el filamento"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:95
+msgid "Unload filament"
+msgstr "Soltar filamento"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:96
+msgid "Unloading filament"
+msgstr "Soltando filamento"
+
+# 
+#: ultralcd.cpp:1705
+msgid "Total"
+msgstr ""
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:6001
+msgid "Used during print"
+msgstr "Usado en impresion"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2221
+msgid "Voltages"
+msgstr "Voltajes"
+
+# 
+#: ultralcd.cpp:2194
+msgid "unknown"
+msgstr "desconocido"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5511
+msgid "Wait for user..."
+msgstr "Esperando ordenes"
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3434
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Esperando enfriamiento de la base y extrusor."
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3395
+msgid "Waiting for PINDA probe cooling"
+msgstr "Esperando a que se enfrie la sonda PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Usa unload para retirar el filamento 1 si sobresale por fuera de la parte trasera del tubo MMU. Usa Expulsar si esta escondido dentro del tubo"
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1510
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Aviso: tanto el tipo de impresora como el tipo de la placa han cambiado."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1502
+msgid "Warning: motherboard type changed."
+msgstr "Cuidado: el tipo de placa ha cambiado."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1506
+msgid "Warning: printer type changed."
+msgstr "Cuidado: Ha cambiado el tipo de impresora."
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3128
+msgid "Was filament unload successful?"
+msgstr "?Se cargocon exito el filamento?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:81
+msgid "Wiring error"
+msgstr "Error de conexion"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5834
+msgid "Wizard"
+msgstr ""
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
+msgid "XYZ cal. details"
+msgstr "Detalles cal. XYZ"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
+
+# MSG_YES
+#: messages.c:102
+msgid "Yes"
+msgstr "Si"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:101
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Siempre puedes acceder al asistente desde Calibracion -> Wizard"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3904
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3901
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr "Expirar"
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
+msgid "X-correct:"
+msgstr "Corregir-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3898
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3882
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3885
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6261
+msgid "Load all"
+msgstr "Intr. todos fil."
+
+# 
+#: ultralcd.cpp:3864
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados."
+
+# 
+#: ultralcd.cpp:3870
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables."
+
+# 
+#: ultralcd.cpp:3873
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Calibracion XYZ fallad. Punto frontal derecho no alcanzable."
+
+# 
+#: ultralcd.cpp:2991
+msgid "Y distance from min"
+msgstr "Distancia en Y desde el min"
+
+# 
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "La verificacion fallo, retire el filamento e intente nuevamente."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
+msgid "Y-correct:"
+msgstr "Corregir-Y:"
+
+# MSG_OFF
+#: messages.c:105
+msgid "Off"
+msgstr "Ina"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "Act"
+
+# 
+#: messages.c:53
+msgid "Back"
+msgstr "atras"
+
+# 
+#: ultralcd.cpp:5724
+msgid "Checks"
+msgstr "Comprobaciones"
+
+# 
+#: ultralcd.cpp:8349
+msgid "False triggering"
+msgstr "Falsa activacion"
+
+# 
+#: ultralcd.cpp:4013
+msgid "FINDA:"
+msgstr "FINDA:"
+
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Estrict"
+
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Aviso"
+
+# 
+#: messages.c:83
+msgid "HW Setup"
+msgstr "Configuracion HW"
+
+# 
+#: ultralcd.cpp:4017
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Comp. imanes"
+
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr "Malla"
+
+# 
+#: ultralcd.cpp:5763
+msgid "Mesh bed leveling"
+msgstr "Nivelacion Malla Base"
+
+# 
+#: Marlin_main.cpp:872
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S detectado en impresora MK3"
+
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "Modo MMU"
+
+# 
+#: ultralcd.cpp:4494
+msgid "Mode change in progress ..."
+msgstr "Cambio de modo progresando ..."
+
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr "Modelo"
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Diam. nozzl"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "Codigo G laminado para un nivel diferente. ?Continuar?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "Codigo G laminado para un nivel diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
+
+# 
+#: util.cpp:431
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "Codigo G laminado para un tipo de impresora diferente. ?Continuar?"
+
+# 
+#: util.cpp:437
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "Codigo G laminado para una impresora diferente. Por favor relamina el modelo de nuevo. Impresion cancelada."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "Codigo G laminado para nuevo firmware. ?Continuar?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "Codigo G laminado para nuevo firmware. Por favor actualiza el firmware. Impresion cancelada."
+
+# 
+#: ultralcd.cpp:4009
+msgid "PINDA:"
+msgstr "PINDA:"
+
+#  c=20
+#: ultralcd.cpp:2452
+msgid "Preheating to cut"
+msgstr "Precalent. laminar"
+
+#  c=20
+#: ultralcd.cpp:2449
+msgid "Preheating to eject"
+msgstr "Precalent. expulsar"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametro nozzle impresora difiere de cod.G. ?Continuar?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
+
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6814
+msgid "Rename"
+msgstr "Renombrar"
+
+# 
+#: ultralcd.cpp:6807
+msgid "Select"
+msgstr "Seleccionar"
+
+# 
+#: ultralcd.cpp:2212
+msgid "Sensor info"
+msgstr "Info sensor"
+
+# MSG_SHEET c=10
+#: messages.c:54
+msgid "Sheet"
+msgstr "Lamina"
+
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr "Asistido"
+
+#  c=18
+#: ultralcd.cpp:5722
+msgid "Steel sheets"
+msgstr "Lamina de acero"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
+msgid "Z-correct:"
+msgstr "Corregir-Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Z-sensor nr."
+

+ 1842 - 1782
lang/po/Firmware_fr.po

@@ -1,1782 +1,1842 @@
-# Translation of Prusa-Firmware into French.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: fr\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:22:44 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:22:44 PM\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
-msgid " of 4"
-msgstr " de 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
-msgid " of 9"
-msgstr " de 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
-msgid "[0;0] point offset"
-msgstr "Offset point [0;0]"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "La detection de\x0acrash peut etre\x0aactive seulement en\x0amode Normal"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode feutre"
-
-# 
-#: ultralcd.cpp:2470
-msgid ">Cancel"
-msgstr ">Annuler"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
-msgid "Adjusting Z:"
-msgstr "Ajuster Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
-msgid "All correct      "
-msgstr "Tout est correct"
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
-msgid "All is done. Happy printing!"
-msgstr "Tout est pret. Bonne impression!"
-
-# 
-#: ultralcd.cpp:1993
-msgid "Ambient"
-msgstr "Ambiant"
-
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
-msgid "and press the knob"
-msgstr "et pressez le bouton"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
-msgid "Are left and right Z~carriages all up?"
-msgstr "Z~carriages gauche + droite tout en haut?"
-
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr ""
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr ""
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Mise a 0 des axes"
-
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
-msgid "AutoLoad filament"
-msgstr "Autocharge du fil."
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Chargement auto du filament uniquement si le capteur de filament est active."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
-msgid "Axis length"
-msgstr "Longueur de l'axe"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
-msgid "Axis"
-msgstr "Axe"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
-msgid "Bed / Heater"
-msgstr "Lit / Chauffage"
-
-# MSG_BED_DONE
-#: messages.c:16
-msgid "Bed done"
-msgstr "Plateau termine"
-
-# MSG_BED_HEATING
-#: messages.c:17
-msgid "Bed Heating"
-msgstr "Chauffe du lit"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
-msgid "Bed level correct"
-msgstr "Corr. niveau plateau"
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Echec bed leveling. Capt. non declenche. Debris sur buse? En attente d'un reset."
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Lit"
-
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
-msgid "Belt status"
-msgstr "Statut courroie"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
-msgid "Blackout occurred. Recover print?"
-msgstr "Coupure detectee. Reprendre impression?"
-
-# 
-#: ultralcd.cpp:8404
-msgid "Calibrating home"
-msgstr "Calib. mise a 0"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
-msgid "Calibrate XYZ"
-msgstr "Calibrer XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:48
-msgid "Calibrate Z"
-msgstr "Calibrer Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
-msgid "Calibrate"
-msgstr "Calibrer"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibration de XYZ. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
-msgid "Calibrating Z"
-msgstr "Calibration Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibration de Z. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
-msgid "Calibration done"
-msgstr "Calibration terminee"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:61
-msgid "Calibration"
-msgstr ""
-
-# 
-#: ultralcd.cpp:4828
-msgid "Cancel"
-msgstr "Annuler"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:8812
-msgid "Card removed"
-msgstr "Carte retiree"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2719
-msgid "Color not correct"
-msgstr "Couleur incorrecte"
-
-# MSG_COOLDOWN
-#: messages.c:23
-msgid "Cooldown"
-msgstr "Refroidissement"
-
-# 
-#: ultralcd.cpp:4584
-msgid "Copy selected language?"
-msgstr "Copier la langue selectionne?"
-
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Detect.crash [on]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Detect.crash[N/A]"
-
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Detect.crash[off]"
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
-msgid "Crash detected."
-msgstr "Crash detecte."
-
-# 
-#: Marlin_main.cpp:596
-msgid "Crash detected. Resume print?"
-msgstr "Crash detecte. Poursuivre l'impression?"
-
-# 
-#: ultralcd.cpp:1837
-msgid "Crash"
-msgstr ""
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
-msgid "Current"
-msgstr "Actuel"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
-msgid "Date:"
-msgstr "Date:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
-msgid "Disable steppers"
-msgstr "Desactiver moteurs"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant?"
-
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
-msgid "E-correct:"
-msgstr "Correct-E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
-msgid "Eject filament"
-msgstr "Remonter le fil."
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
-msgid "Ejecting filament"
-msgstr "Le fil. remonte"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
-msgid "Endstop not hit"
-msgstr "Butee non atteinte"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
-msgid "Endstop"
-msgstr "Butee"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
-msgid "Endstops"
-msgstr "Butees"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
-msgid "Error - static memory has been overwritten"
-msgstr "Erreur - la memoire statique a ete ecrasee"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
-
-# MSG_ERROR
-#: messages.c:28
-msgid "ERROR:"
-msgstr "ERREUR:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
-msgid "Extruder fan:"
-msgstr "Ventilo extrudeur:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
-msgid "Extruder info"
-msgstr "Infos extrudeur"
-
-# MSG_MOVE_E
-#: messages.c:29
-msgid "Extruder"
-msgstr "Extrudeur"
-
-# 
-#: ultralcd.cpp:6952
-msgid "Fail stats MMU"
-msgstr "Stat. d'echec MMU"
-
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "Autochargeur [on]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "Autochargeur[N/A]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "Autochargeur[off]"
-
-# 
-#: ultralcd.cpp:6949
-msgid "Fail stats"
-msgstr "Stat. d'echec"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:31
-msgid "Fan speed"
-msgstr "Vitesse vent."
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:78
-msgid "Fan test"
-msgstr "Test du ventilateur"
-
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Verif vent.  [on]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Verif vent. [off]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Capteur Fil. [on]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Capteur Fil.[N/A]"
-
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Capteur Fil.[off]"
-
-# 
-#: ultralcd.cpp:1836
-msgid "Filam. runouts"
-msgstr "Fins de filament"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
-msgid "Filament extruding & with correct color?"
-msgstr "Filament extrude et avec bonne couleur?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
-msgid "Filament not loaded"
-msgstr "Filament non charge"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
-msgid "Filament sensor"
-msgstr "Capteur de filament"
-
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
-msgid "Filament used"
-msgstr "Filament utilise"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
-msgid "Print time"
-msgstr "Temps d'impression"
-
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
-msgid "File incomplete. Continue anyway?"
-msgstr "Fichier incomplet. Continuer qd meme?"
-
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
-msgid "Finishing movements"
-msgstr "Mouvement final"
-
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
-msgid "First layer cal."
-msgstr "Cal. 1ere couche"
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs."
-
-# 
-#: mmu.cpp:724
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7038
-msgid "Flow"
-msgstr "Flux"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
-msgid "Front print fan?"
-msgstr "Ventilo impr avant?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
-msgid "Front side[um]"
-msgstr "Avant [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
-msgid "Front/left fans"
-msgstr "Ventilos avt/gauche"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
-msgid "Heater/Thermistor"
-msgstr "Chauffage/Thermistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
-msgid "Heating disabled by safety timer."
-msgstr "Chauffage desactivee par le compteur de securite."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:47
-msgid "Heating done."
-msgstr "Chauffe terminee."
-
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Chauffe"
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Changer filament"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
-msgid "Change success!"
-msgstr "Changement reussi!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
-msgid "Changed correctly?"
-msgstr "Change correctement?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
-msgid "Checking bed     "
-msgstr "Verification du lit"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
-msgid "Checking endstops"
-msgstr "Verification butees"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
-msgid "Checking hotend  "
-msgstr "Verif. du hotend"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
-msgid "Checking sensors "
-msgstr "Verif. des capteurs"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
-msgid "Checking X axis  "
-msgstr "Verification axe X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
-msgid "Checking Y axis  "
-msgstr "Verification axe Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
-msgid "Checking Z axis  "
-msgstr "Verification axe Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Choisir extrudeur:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Choix du filament:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr ""
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
-msgid "I will run z calibration now."
-msgstr "Je vais maintenant lancer la calibration Z."
-
-# MSG_WATCH
-#: messages.c:99
-msgid "Info screen"
-msgstr "Ecran d'info"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
-msgid "Insert filament"
-msgstr "Inserez le filament"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
-msgid "Is filament loaded?"
-msgstr "Fil. est-il charge?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
-msgid "Is steel sheet on heatbed?"
-msgstr "Plaque d'impression sur le lit chauffant?"
-
-# 
-#: ultralcd.cpp:1779
-msgid "Last print failures"
-msgstr "Echecs derniere imp."
-
-# 
-#: ultralcd.cpp:1756
-msgid "Last print"
-msgstr "Derniere impres."
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
-msgid "Left hotend fan?"
-msgstr "Ventilo tete gauche?"
-
-# 
-#: ultralcd.cpp:3011
-msgid "Left"
-msgstr "Gauche"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
-msgid "Left side [um]"
-msgstr "Gauche [um]"
-
-# 
-#: ultralcd.cpp:5747
-msgid "Lin. correction"
-msgstr "Correction lin."
-
-# MSG_BABYSTEP_Z
-#: messages.c:13
-msgid "Live adjust Z"
-msgstr "Ajuster Z en dir."
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:51
-msgid "Load filament"
-msgstr "Charger filament"
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
-msgid "Loading color"
-msgstr "Charg. de la couleur"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:52
-msgid "Loading filament"
-msgstr "Chargement du fil."
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
-msgid "Loose pulley"
-msgstr "Poulie lache"
-
-# 
-#: ultralcd.cpp:6911
-msgid "Load to nozzle"
-msgstr "Charger la buse"
-
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
-msgid "M117 First layer cal."
-msgstr "M117 Cal. 1ere couche"
-
-# MSG_MAIN
-#: messages.c:56
-msgid "Main"
-msgstr "Menu principal"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
-msgid "Measuring reference height of calibration point"
-msgstr "Mesure de la hauteur de reference du point de calibration"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
-msgid "Mesh Bed Leveling"
-msgstr ""
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Reprise de la position ..."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Rechauffage de la buse..."
-
-# 
-#: ultralcd.cpp:3052
-msgid "Measured skew"
-msgstr "Deviat.mesuree"
-
-# 
-#: ultralcd.cpp:1780
-msgid "MMU fails"
-msgstr "Echecs MMU"
-
-# 
-#: mmu.cpp:1592
-msgid "MMU load failed     "
-msgstr "Echec chargement MMU"
-
-# 
-#: ultralcd.cpp:1781
-msgid "MMU load fails"
-msgstr "Echecs charg. MMU"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Reprise ..."
-
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr ""
-
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Mode     [feutre]"
-
-# 
-#: mmu.cpp:719
-msgid "MMU needs user attention."
-msgstr "Le MMU necessite l'attention de l'utilisateur."
-
-# 
-#: ultralcd.cpp:1807
-msgid "MMU power fails"
-msgstr "Echecs alim. MMU"
-
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Mode     [furtif]"
-
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Mode [puiss.auto]"
-
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Mode[haute puiss]"
-
-# 
-#: ultralcd.cpp:2203
-msgid "MMU2 connected"
-msgstr "MMU2 connecte"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:83
-msgid "Motor"
-msgstr "Moteur"
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
-msgid "Move axis"
-msgstr "Deplacer l'axe"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4375
-msgid "Move X"
-msgstr "Deplacer X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4376
-msgid "Move Y"
-msgstr "Deplacer Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4377
-msgid "Move Z"
-msgstr "Deplacer Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5293
-msgid "No move."
-msgstr "Pas de mouvement."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6878
-msgid "No SD card"
-msgstr "Pas de carte SD"
-
-# 
-#: ultralcd.cpp:3017
-msgid "N/A"
-msgstr ""
-
-# MSG_NO
-#: messages.c:62
-msgid "No"
-msgstr "Non"
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
-msgid "Not connected"
-msgstr "Non connecte"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Nouvelle version de firmware disponible:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
-msgid "Not spinning"
-msgstr "Ne tourne pas"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Maintenant je vais calibrer la distance entre la pointe de la buse et la surface du plateau chauffant."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Maintenant je vais prechauffer la buse pour du PLA."
-
-# MSG_NOZZLE
-#: messages.c:63
-msgid "Nozzle"
-msgstr "Buse"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
-
-# 
-#: ultralcd.cpp:5071
-msgid "Now remove the test print from steel sheet."
-msgstr "Retirez maintenant l'impression de test de la plaque en acier."
-
-# 
-#: ultralcd.cpp:1706
-msgid "Nozzle FAN"
-msgstr "Vent. buse"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
-msgid "Pause print"
-msgstr "Pause de l'impr."
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
-msgid "PID cal.           "
-msgstr "Calib. PID"
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
-msgid "PID cal. finished"
-msgstr "Calib. PID terminee"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
-msgid "PID calibration"
-msgstr "Calibration PID"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
-msgid "PINDA Heating"
-msgstr "Chauffe de la PINDA"
-
-# MSG_PAPER c=20 r=8
-#: messages.c:64
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Placez une feuille de papier sous la buse pendant la calibration des 4 premiers points. Si la buse accroche le papier, eteignez vite l'imprimante."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
-msgid "Please clean heatbed and then press the knob."
-msgstr "Nettoyez la plaque en acier et appuyez sur le bouton."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Nettoyez la buse pour la calibration. Cliquez une fois fait."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
-msgid "Please check :"
-msgstr "Verifiez:"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Merci de consulter notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
-msgid "Please open idler and remove filament manually."
-msgstr "Ouvrez l'idler et retirez le filament manuellement."
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr "Placez la plaque en acier sur le plateau chauffant."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
-msgid "Please press the knob to unload filament"
-msgstr "Appuyez sur le bouton pour decharger le filament"
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
-msgid "Please pull out filament immediately"
-msgstr "Retirez immediatement le filament"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
-msgid "Please remove filament and then press the knob."
-msgstr "Veuillez retirer le filament puis appuyez sur le bouton."
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr "Retirez la plaque en acier du plateau chauffant."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
-msgid "Please run XYZ calibration first."
-msgstr "Veuillez d'abord lancer la calibration XYZ."
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Veuillez mettre a jour le firmware de votre MMU2. En attente d'un reset."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:66
-msgid "Please wait"
-msgstr "Merci de patienter"
-
-# 
-#: ultralcd.cpp:5070
-msgid "Please remove shipping helpers first."
-msgstr "Retirez d'abord les protections de transport."
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
-msgid "Preheat the nozzle!"
-msgstr "Prechauffez la buse!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6825
-msgid "Preheat"
-msgstr "Prechauffage"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
-msgid "Preheating nozzle. Please wait."
-msgstr "Prechauffage de la buse. Merci de patienter."
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Mettez a jour le FW."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Appuyez sur le bouton pour prechauffer la buse et continuer."
-
-# 
-#: ultralcd.cpp:1835
-msgid "Power failures"
-msgstr "Coup.de courant"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:69
-msgid "Print aborted"
-msgstr "Impression annulee"
-
-#  c=20 r=1
-#: ultralcd.cpp:2452
-msgid "Preheating to load"
-msgstr "Chauffe pour charger"
-
-#  c=20 r=1
-#: ultralcd.cpp:2456
-msgid "Preheating to unload"
-msgstr "Chauf.pour decharger"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
-msgid "Print fan:"
-msgstr "Vent. impr:"
-
-# MSG_CARD_MENU
-#: messages.c:21
-msgid "Print from SD"
-msgstr "Impr. depuis la SD"
-
-# 
-#: ultralcd.cpp:2301
-msgid "Press the knob"
-msgstr "App. sur sur bouton"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
-msgid "Print paused"
-msgstr "Impression en pause"
-
-# 
-#: mmu.cpp:723
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Appuyez sur le bouton pour rechauffer la buse."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "L'imprimante n'a pas encore ete calibree. Suivez le manuel, chapitre Premiers pas, section Processus de calibration."
-
-# 
-#: ultralcd.cpp:1707
-msgid "Print FAN"
-msgstr "Vent. impr"
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2189
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
-msgid "Rear side [um]"
-msgstr "Arriere [um]"
-
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
-msgid "Recovering print    "
-msgstr "Recup. impression"
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau."
-
-# 
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
-msgid "Reset XYZ calibr."
-msgstr "Reinit. calib. XYZ"
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
-msgid "Reset"
-msgstr "Reinitialiser"
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
-msgid "Resume print"
-msgstr "Reprendre impression"
-
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
-msgid "Resuming print"
-msgstr "Reprise de l'impr."
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
-msgid "Right side[um]"
-msgstr "Droite [um]"
-
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "Port RPi     [on]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "Port RPi    [off]"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "Carte SD [normal]"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "Carte SD[flshAir]"
-
-# 
-#: ultralcd.cpp:3012
-msgid "Right"
-msgstr "Droite"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
-msgid "Searching bed calibration point"
-msgstr "Recherche du point de calibration du lit"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
-msgid "Select language"
-msgstr "Choisir langue"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
-msgid "Self test OK"
-msgstr "Auto-test OK"
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
-msgid "Self test start  "
-msgstr "Debut auto-test"
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5820
-msgid "Selftest         "
-msgstr "Auto-test"
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
-msgid "Selftest error !"
-msgstr "Erreur auto-test!"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:77
-msgid "Selftest failed  "
-msgstr "Echec de l'auto-test"
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Le Selftest sera lance pour calibrer la remise a zero precise sans capteur"
-
-# 
-#: ultralcd.cpp:5111
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
-
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Selectionnez le fil. PLA:"
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
-msgid "Set temperature:"
-msgstr "Regler temp.:"
-
-# MSG_SETTINGS
-#: messages.c:86
-msgid "Settings"
-msgstr "Reglages"
-
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
-msgid "Show end stops"
-msgstr "Afficher butees"
-
-# 
-#: ultralcd.cpp:4022
-msgid "Sensor state"
-msgstr "Etat capteur"
-
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Tri       [aucun]"
-
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Tri       [heure]"
-
-# 
-#: ultralcd.cpp:3055
-msgid "Severe skew:"
-msgstr "Deviat.sev.:"
-
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Tri    [alphabet]"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
-msgid "Sorting files"
-msgstr "Tri des fichiers"
-
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Son        [fort]"
-
-# 
-#: ultralcd.cpp:3054
-msgid "Slight skew:"
-msgstr "Deviat.leg.:"
-
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Son        [muet]"
-
-# 
-#: Marlin_main.cpp:4875
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
-
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Son    [une fois]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Son      [feutre]"
-
-# MSG_SPEED
-#: ultralcd.cpp:7032
-msgid "Speed"
-msgstr "Vitesse"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
-msgid "Spinning"
-msgstr "Tourne"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Une temperature ambiante stable de 21-26C et un support stable sont requis."
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6945
-msgid "Statistics  "
-msgstr "Statistiques"
-
-# MSG_STOP_PRINT
-#: messages.c:93
-msgid "Stop print"
-msgstr "Arreter impression"
-
-# MSG_STOPPED
-#: messages.c:94
-msgid "STOPPED. "
-msgstr "ARRETE."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6954
-msgid "Support"
-msgstr ""
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
-msgid "Swapped"
-msgstr "Echange"
-
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Calib. Temp."
-
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Calib. Temp. [on]"
-
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Calib. Temp.[off]"
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
-msgid "Temp. calibration"
-msgstr "Calibration temp."
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
-msgid "Temperature calibration failed"
-msgstr "Echec de la calibration en temperature"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5717
-msgid "Temperature"
-msgstr ""
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
-msgid "Temperatures"
-msgstr ""
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total filament"
-msgstr "Filament total"
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total print time"
-msgstr "Temps total impr."
-
-# MSG_TUNE
-#: ultralcd.cpp:6822
-msgid "Tune"
-msgstr "Regler"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Decharger"
-
-# 
-#: ultralcd.cpp:1804
-msgid "Total failures"
-msgstr "Total des echecs"
-
-# 
-#: ultralcd.cpp:2308
-msgid "to load filament"
-msgstr "pour charger le fil."
-
-# 
-#: ultralcd.cpp:2312
-msgid "to unload filament"
-msgstr "pour decharger fil."
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
-msgid "Unload filament"
-msgstr "Decharger fil."
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
-msgid "Unloading filament"
-msgstr "Dechargement fil."
-
-# 
-#: ultralcd.cpp:1757
-msgid "Total"
-msgstr ""
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
-msgid "Used during print"
-msgstr "Utilise pdt impr."
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
-msgid "Voltages"
-msgstr "Tensions"
-
-# 
-#: ultralcd.cpp:2211
-msgid "unknown"
-msgstr "inconnu"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5264
-msgid "Wait for user..."
-msgstr "Attente utilisateur..."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Attente du refroidissement des buse et plateau"
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
-msgid "Waiting for PINDA probe cooling"
-msgstr "Attente du refroidissement de la sonde PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Utilisez Remonter le fil. pour retirer le filament 1 s'il depasse du tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Attention: Types d'imprimante et de carte mere modifies"
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
-msgid "Warning: motherboard type changed."
-msgstr "Attention: Type de carte mere modifie."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
-msgid "Warning: printer type changed."
-msgstr "Attention: Type d'imprimante modifie"
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
-msgid "Was filament unload successful?"
-msgstr "Dechargement du filament reussi?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
-msgid "Wiring error"
-msgstr "Erreur de cablage"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
-msgid "Wizard"
-msgstr "Assistant"
-
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
-msgid "XYZ cal. details"
-msgstr "Details calib. XYZ"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Echec calibration XYZ. Consultez le manuel."
-
-# MSG_YES
-#: messages.c:104
-msgid "Yes"
-msgstr "Oui"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Calibration XYZ OK. L'ecart sera corrige automatiquement."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
-
-# 
-#: ultralcd.cpp:5197
-msgid "X-correct:"
-msgstr "Correct-X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Calibration XYZ compromise. Les points de calibration en avant ne sont pas atteignables."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
-msgid "Load all"
-msgstr "Charger un par un"
-
-# 
-#: ultralcd.cpp:3879
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve."
-
-# 
-#: ultralcd.cpp:3885
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables."
-
-# 
-#: ultralcd.cpp:3888
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Echec calibration XYZ. Le point de calibration avant droit n'est pas atteignable."
-
-# 
-#: ultralcd.cpp:3009
-msgid "Y distance from min"
-msgstr "Distance Y du min"
-
-# 
-#: ultralcd.cpp:5198
-msgid "Y-correct:"
-msgstr "Correct-Y:"
-
-# MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [off]"
-
-# 
-#: messages.c:57
-msgid "Back"
-msgstr "Retour"
-
-# 
-#: ultralcd.cpp:5706
-msgid "Checks"
-msgstr "Verifications"
-
-# 
-#: ultralcd.cpp:8080
-msgid "False triggering"
-msgstr "Faux declenchement"
-
-# 
-#: ultralcd.cpp:4027
-msgid "FINDA:"
-msgstr "FINDA:"
-
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware [aucune]"
-
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware[stricte]"
-
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware  [avert]"
-
-# 
-#: messages.c:87
-msgid "HW Setup"
-msgstr "Config HW"
-
-# 
-#: ultralcd.cpp:4031
-msgid "IR:"
-msgstr "IR:"
-
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Compens. aim.[N/A]"
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Compens. aim.[off]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Compens. aim. [on]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5744
-msgid "Mesh bed leveling"
-msgstr ""
-
-# 
-#: Marlin_main.cpp:852
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "Firmware MK3S detecte sur imprimante MK3"
-
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "Mode MMU [normal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "Mode MMU [feutre]"
-
-# 
-#: ultralcd.cpp:4508
-msgid "Mode change in progress ..."
-msgstr "Changement de mode en cours..."
-
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Modele   [aucune]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Modele  [stricte]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Modele    [avert]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Diam. buse [0.25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Diam. buse [0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Diam. buse [0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Buse     [aucune]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Buse    [stricte]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Buse      [avert]"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr ""
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr ""
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Continuer?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Veuillez mettre a jour le firmware. L'impression annulee."
-
-# 
-#: ultralcd.cpp:4023
-msgid "PINDA:"
-msgstr "PINDA:"
-
-#  c=20 r=1
-#: ultralcd.cpp:2462
-msgid "Preheating to cut"
-msgstr "Chauffe pour couper"
-
-#  c=20 r=1
-#: ultralcd.cpp:2459
-msgid "Preheating to eject"
-msgstr "Chauf. pour remonter"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Continuer?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee."
-
-# 
-#: ultralcd.cpp:6786
-msgid "Rename"
-msgstr "Renommer"
-
-# 
-#: ultralcd.cpp:6779
-msgid "Select"
-msgstr "Selectionner"
-
-# 
-#: ultralcd.cpp:2229
-msgid "Sensor info"
-msgstr "Info capteur"
-
-# 
-#: messages.c:58
-msgid "Sheet"
-msgstr "Plaque"
-
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Son      [assist]"
-
-# 
-#: ultralcd.cpp:5704
-msgid "Steel sheets"
-msgstr "Plaques en acier"
-
-# 
-#: ultralcd.cpp:5199
-msgid "Z-correct:"
-msgstr "Correct-Z:"
-
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Mesurer x-fois [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Mesurer x-fois [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Mesurer x-fois [5]"
-
+# Translation of Prusa-Firmware into French.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: fr\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Wed May 13 17:42:13 CEST 2020\n"
+"PO-Revision-Date: Wed May 13 17:42:13 CEST 2020\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
+
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 ou +ancien"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 ou +recent"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:36
+msgid " of 4"
+msgstr " de 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:56
+msgid " of 9"
+msgstr " de 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3064
+msgid "[0;0] point offset"
+msgstr "Offset point [0;0]"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "La detection de\x0acrash peut etre\x0aactive seulement en\x0amode Normal"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode furtif"
+
+# 
+#: ultralcd.cpp:2460
+msgid ">Cancel"
+msgstr ">Annuler"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3184
+msgid "Adjusting Z:"
+msgstr "Ajuster Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8677
+msgid "All correct      "
+msgstr "Tout est correct"
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:99
+msgid "All is done. Happy printing!"
+msgstr "Tout est pret. Bonne impression!"
+
+# 
+#: ultralcd.cpp:1956
+msgid "Ambient"
+msgstr "Ambiant"
+
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
+msgid "and press the knob"
+msgstr "et appuyez sur le bouton"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3506
+msgid "Are left and right Z~carriages all up?"
+msgstr "Z~carriages gauche + droite tout en haut?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Mise a 0 des axes"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
+msgid "AutoLoad filament"
+msgstr "Autocharge du fil."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4445
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Chargement auto du filament uniquement si le capteur de filament est active."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2804
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8325
+msgid "Axis length"
+msgstr "Longueur de l'axe"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8327
+msgid "Axis"
+msgstr "Axe"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8269
+msgid "Bed / Heater"
+msgstr "Lit / Chauffage"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Plateau termine"
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Chauffe du lit"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5861
+msgid "Bed level correct"
+msgstr "Corr. niveau plateau"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test de courroie "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Capt. non declenche pendant que je nivele le plateau. Debris sur buse? En attente d'un reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Brill."
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Luminosite"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Lit"
+
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
+msgid "Belt status"
+msgstr "Statut courroie"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:67
+msgid "Blackout occurred. Recover print?"
+msgstr "Coupure detectee. Reprendre impression?"
+
+# 
+#: ultralcd.cpp:8679
+msgid "Calibrating home"
+msgstr "Calib. mise a 0"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5850
+msgid "Calibrate XYZ"
+msgstr "Calibrer XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:44
+msgid "Calibrate Z"
+msgstr "Calibrer Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4637
+msgid "Calibrate"
+msgstr "Calibrer"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibration de XYZ. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:19
+msgid "Calibrating Z"
+msgstr "Calibration Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibration de Z. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:865
+msgid "Calibration done"
+msgstr "Calibration terminee"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:57
+msgid "Calibration"
+msgstr ""
+
+# 
+#: ultralcd.cpp:4815
+msgid "Cancel"
+msgstr "Annuler"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:9090
+msgid "Card removed"
+msgstr "Carte retiree"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2709
+msgid "Color not correct"
+msgstr "Couleur incorrecte"
+
+# MSG_COOLDOWN
+#: messages.c:22
+msgid "Cooldown"
+msgstr "Refroidissement"
+
+# 
+#: ultralcd.cpp:4570
+msgid "Copy selected language?"
+msgstr "Copier la langue choisie?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Detect.crash"
+
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Choisissez un filament pour la Calibration de la Premiere Couche et selectionnez-le depuis le menu a l'ecran."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:23
+msgid "Crash detected."
+msgstr "Crash detecte."
+
+# 
+#: Marlin_main.cpp:607
+msgid "Crash detected. Resume print?"
+msgstr "Crash detecte. Poursuivre l'impression?"
+
+# 
+#: ultralcd.cpp:1785
+msgid "Crash"
+msgstr ""
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:6002
+msgid "Current"
+msgstr "Actuel"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2163
+msgid "Date:"
+msgstr "Date:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5743
+msgid "Disable steppers"
+msgstr "Desactiver moteurs"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5125
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Voulez-vous refaire l'etape pour reajuster la hauteur entre la buse et le plateau chauffant?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
+msgid "E-correct:"
+msgstr "Correct-E:"
+
+# MSG_EJECT_FILAMENT c=17 r=1
+#: messages.c:49
+msgid "Eject filament"
+msgstr "Remonter le fil."
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1416
+msgid "Ejecting filament"
+msgstr "Le fil. remonte"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
+msgid "Endstop not hit"
+msgstr "Butee non atteinte"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8287
+msgid "Endstop"
+msgstr "Butee"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8275
+msgid "Endstops"
+msgstr "Butees"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6998
+msgid "Error - static memory has been overwritten"
+msgstr "Erreur - la memoire statique a ete ecrasee"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Coupe filament"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Coupeur"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Je coupe filament"
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4458
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
+
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr ""
+
+# MSG_ERROR
+#: messages.c:25
+msgid "ERROR:"
+msgstr "ERREUR:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8686
+msgid "Extruder fan:"
+msgstr "Ventilo extrudeur:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
+msgid "Extruder info"
+msgstr "Infos extrudeur"
+
+# MSG_MOVE_E
+#: messages.c:26
+msgid "Extruder"
+msgstr "Extrudeur"
+
+# 
+#: ultralcd.cpp:6985
+msgid "Fail stats MMU"
+msgstr "Stat. d'echec MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "F. autocharg."
+
+# 
+#: ultralcd.cpp:6982
+msgid "Fail stats"
+msgstr "Stat. d'echec"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:28
+msgid "Fan speed"
+msgstr "Vitesse vent."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:74
+msgid "Fan test"
+msgstr "Test du ventilateur"
+
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Verif vent."
+
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Capteur Fil."
+
+#  c=14
+#: ultralcd.cpp:1784
+msgid "Filam. runouts"
+msgstr "Fins filament"
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:29
+msgid "Filament extruding & with correct color?"
+msgstr "Filament extrude et avec bonne couleur?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2705
+msgid "Filament not loaded"
+msgstr "Filament non charge"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:80
+msgid "Filament sensor"
+msgstr "Capteur de filament"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
+msgid "Filament used"
+msgstr "Filament utilise"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2870
+msgid "Print time"
+msgstr "Temps d'impression"
+
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr ""
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 ou +recent"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
+msgid "File incomplete. Continue anyway?"
+msgstr "Fichier incomplet. Continuer qd meme?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
+msgid "Finishing movements"
+msgstr "Mouvement final"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
+msgid "First layer cal."
+msgstr "Cal. 1ere couche"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:5046
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs."
+
+# 
+#: mmu.cpp:727
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:7125
+msgid "Flow"
+msgstr "Flux"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2156
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:71
+msgid "Front print fan?"
+msgstr "Ventilo impr avant?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3266
+msgid "Front side[um]"
+msgstr "Avant [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8333
+msgid "Front/left fans"
+msgstr "Ventilos avt/gauche"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8263
+msgid "Heater/Thermistor"
+msgstr "Chauffage/Thermistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9440
+msgid "Heating disabled by safety timer."
+msgstr "Chauffage desactivee par le compteur de securite."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:43
+msgid "Heating done."
+msgstr "Chauffe terminee."
+
+# MSG_HEATING
+#: messages.c:42
+msgid "Heating"
+msgstr "Chauffe"
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:5025
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2157
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:34
+msgid "Change filament"
+msgstr "Changer filament"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2620
+msgid "Change success!"
+msgstr "Changement reussi!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2697
+msgid "Changed correctly?"
+msgstr "Change correctement?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:77
+msgid "Checking bed     "
+msgstr "Verif. plateau chauf"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8668
+msgid "Checking endstops"
+msgstr "Verification butees"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8674
+msgid "Checking hotend  "
+msgstr "Verif. du hotend"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:78
+msgid "Checking sensors "
+msgstr "Verif. des capteurs"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7482
+msgid "Checking X axis  "
+msgstr "Verification axe X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7491
+msgid "Checking Y axis  "
+msgstr "Verification axe Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8671
+msgid "Checking Z axis  "
+msgstr "Verification axe Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:45
+msgid "Choose extruder:"
+msgstr "Choisir extrudeur:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:46
+msgid "Choose filament:"
+msgstr "Choix du filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:27
+msgid "Filament"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:5055
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:5063
+msgid "I will run z calibration now."
+msgstr "Je vais maintenant lancer la calibration Z."
+
+# MSG_WATCH
+#: messages.c:97
+msgid "Info screen"
+msgstr "Ecran d'info"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2605
+msgid "Insert filament"
+msgstr "Inserez le filament"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4835
+msgid "Is filament loaded?"
+msgstr "Fil. est-il charge?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:90
+msgid "Is steel sheet on heatbed?"
+msgstr "Est la plaque sur le plat. chauffant?"
+
+# 
+#: ultralcd.cpp:1727
+msgid "Last print failures"
+msgstr "Echecs derniere imp."
+
+# 
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Si vous avez d'autres feuilles d'acier,  calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
+
+# 
+#: ultralcd.cpp:1704
+msgid "Last print"
+msgstr "Derniere impres."
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:72
+msgid "Left hotend fan?"
+msgstr "Ventilo gauche?"
+
+# 
+#: ultralcd.cpp:2993
+msgid "Left"
+msgstr "Gauche"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3264
+msgid "Left side [um]"
+msgstr "Gauche [um]"
+
+# 
+#: ultralcd.cpp:5766
+msgid "Lin. correction"
+msgstr "Correction lin."
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Ajuster Z en dir."
+
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Veuillez inserer le filament ( ne le chargez pas) dans l'extrudeur, puis appuyez sur le bouton."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:47
+msgid "Load filament"
+msgstr "Charger filament"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2645
+msgid "Loading color"
+msgstr "Charg. de la couleur"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:48
+msgid "Loading filament"
+msgstr "Chargement du fil."
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8317
+msgid "Loose pulley"
+msgstr "Poulie lache"
+
+# 
+#: ultralcd.cpp:6944
+msgid "Load to nozzle"
+msgstr "Charger la buse"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
+msgid "M117 First layer cal."
+msgstr "M117 Cal. 1ere couche"
+
+# MSG_MAIN
+#: messages.c:52
+msgid "Main"
+msgstr "Menu principal"
+
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Niveau brill"
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr ""
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:55
+msgid "Measuring reference height of calibration point"
+msgstr "Je mesure la hauteur de reference du point de calibrage"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:5856
+msgid "Mesh Bed Leveling"
+msgstr ""
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:765
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Reprise de la position ..."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:758
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Rechauffage de la buse..."
+
+# 
+#: ultralcd.cpp:3034
+msgid "Measured skew"
+msgstr "Deviat.mesuree"
+
+# 
+#: ultralcd.cpp:1728
+msgid "MMU fails"
+msgstr "Echecs MMU"
+
+# 
+#: mmu.cpp:1588
+msgid "MMU load failed     "
+msgstr "Echec chargement MMU"
+
+# 
+#: ultralcd.cpp:1729
+msgid "MMU load fails"
+msgstr "Echecs charg. MMU"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:776
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Reprise ..."
+
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr ""
+
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Firmware MK3 detecte sur imprimante MK3S"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Furtif"
+
+# 
+#: mmu.cpp:722
+msgid "MMU needs user attention."
+msgstr "Le MMU necessite l'attention de l'utilisateur."
+
+# 
+#: ultralcd.cpp:1755
+msgid "MMU power fails"
+msgstr "Echecs alim. MMU"
+
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Furtif"
+
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Puiss.auto"
+
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Haute puiss"
+
+# 
+#: ultralcd.cpp:2186
+msgid "MMU2 connected"
+msgstr "MMU2 connecte"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:79
+msgid "Motor"
+msgstr "Moteur"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5741
+msgid "Move axis"
+msgstr "Deplacer l'axe"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4361
+msgid "Move X"
+msgstr "Deplacer X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4362
+msgid "Move Y"
+msgstr "Deplacer Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4363
+msgid "Move Z"
+msgstr "Deplacer Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5541
+msgid "No move."
+msgstr "Pas de mouvement."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6911
+msgid "No SD card"
+msgstr "Pas de carte SD"
+
+# MSG_NA
+#: messages.c:107
+msgid "N/A"
+msgstr ""
+
+# MSG_NO
+#: messages.c:58
+msgid "No"
+msgstr "Non"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8265
+msgid "Not connected"
+msgstr "Non connecte"
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Nouvelle version de firmware disponible:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:75
+msgid "Not spinning"
+msgstr "Ne tourne pas"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4946
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Maintenant je vais calibrer la distance entre la pointe de la buse et la surface du plateau chauffant."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:5071
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Maintenant je vais prechauffer la buse pour du PLA."
+
+# MSG_NOZZLE
+#: messages.c:59
+msgid "Nozzle"
+msgstr "Buse"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
+
+# 
+#: ultralcd.cpp:5062
+msgid "Now remove the test print from steel sheet."
+msgstr "Retirez maintenant l'impression de test de la plaque en acier."
+
+# 
+#: ultralcd.cpp:1654
+msgid "Nozzle FAN"
+msgstr "Vent. buse"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6875
+msgid "Pause print"
+msgstr "Pause de l'impr."
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1539
+msgid "PID cal.           "
+msgstr "Calib. PID"
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1545
+msgid "PID cal. finished"
+msgstr "Calib. PID terminee"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5862
+msgid "PID calibration"
+msgstr "Calibration PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:896
+msgid "PINDA Heating"
+msgstr "Chauffe de la PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:60
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Placez une feuille de papier sous la buse pendant la calibration des 4 premiers points. Si la buse accroche le papier, eteignez vite l'imprimante."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5128
+msgid "Please clean heatbed and then press the knob."
+msgstr "Nettoyez plateau chauffant en acier et appuyez sur le bouton."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:21
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Nettoyez la buse pour la calibration. Cliquez une fois fait."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8257
+msgid "Please check :"
+msgstr "Verifiez:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:98
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Merci de consulter notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3138
+msgid "Please open idler and remove filament manually."
+msgstr "Ouvrez l'idler et retirez le filament manuellement."
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:61
+msgid "Please place steel sheet on heatbed."
+msgstr "Placez la plaque en acier sur le plateau chauffant."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:64
+msgid "Please press the knob to unload filament"
+msgstr "Appuyez sur le bouton pour decharger le filament"
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:66
+msgid "Please pull out filament immediately"
+msgstr "Retirez immediatement le filament"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1422
+msgid "Please remove filament and then press the knob."
+msgstr "Veuillez retirer le filament puis appuyez sur le bouton."
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:70
+msgid "Please remove steel sheet from heatbed."
+msgstr "Retirez la plaque en acier du plateau chauffant."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4583
+msgid "Please run XYZ calibration first."
+msgstr "Veuillez d'abord lancer la calibration XYZ."
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1341
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Veuillez mettre a jour le firmware de votre MMU2. En attente d'un reset."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:62
+msgid "Please wait"
+msgstr "Merci de patienter"
+
+# 
+#: ultralcd.cpp:5061
+msgid "Please remove shipping helpers first."
+msgstr "Retirez d'abord les protections de transport."
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:63
+msgid "Preheat the nozzle!"
+msgstr "Prechauffez la buse!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6853
+msgid "Preheat"
+msgstr "Prechauffage"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:100
+msgid "Preheating nozzle. Please wait."
+msgstr "Prechauffage de la buse. Merci de patienter."
+
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Mettez a jour le FW."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11526
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Appuyez sur le bouton pour prechauffer la buse et continuer."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr ""
+
+# 
+#: ultralcd.cpp:1783
+msgid "Power failures"
+msgstr "Coup.de courant"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:65
+msgid "Print aborted"
+msgstr "Impression annulee"
+
+#  c=20
+#: ultralcd.cpp:2442
+msgid "Preheating to load"
+msgstr "Chauffe pour charger"
+
+#  c=20
+#: ultralcd.cpp:2446
+msgid "Preheating to unload"
+msgstr "Chauf.pour decharger"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8689
+msgid "Print fan:"
+msgstr "Vent. impr:"
+
+# MSG_CARD_MENU
+#: messages.c:20
+msgid "Print from SD"
+msgstr "Impr. depuis la SD"
+
+# 
+#: ultralcd.cpp:2289
+msgid "Press the knob"
+msgstr "App. sur sur bouton"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1118
+msgid "Print paused"
+msgstr "Impression en pause"
+
+# 
+#: mmu.cpp:726
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Appuyez sur le bouton pour rechauffer la buse."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:38
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "L'imprimante n'a pas encore ete calibree. Suivez le manuel, chapitre Premiers pas, section Processus de calibration."
+
+# 
+#: ultralcd.cpp:1655
+msgid "Print FAN"
+msgstr "Vent. impr"
+
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Veuillez inserer le filament dans l'extrudeur, puis appuyez sur le bouton pour le charger."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Veuillez inserer le filament dans le premier tube du MMU, puis appuyez sur le bouton pour le charger."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Veuillez d'abord charger un filament."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2155
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3267
+msgid "Rear side [um]"
+msgstr "Arriere [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "SVP, dechargez le filament et reessayez."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
+msgid "Recovering print    "
+msgstr "Recup. impression   "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5867
+msgid "Reset XYZ calibr."
+msgstr "Reinit. calib. XYZ"
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:3268
+msgid "Reset"
+msgstr "Reinitialiser"
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:6861
+msgid "Resume print"
+msgstr "Reprendre impression"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
+msgid "Resuming print"
+msgstr "Reprise de l'impr."
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3265
+msgid "Right side[um]"
+msgstr "Droite [um]"
+
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr "Port RPi"
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4864
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?"
+
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "Carte SD"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr "FlshAir"
+
+# 
+#: ultralcd.cpp:2994
+msgid "Right"
+msgstr "Droite"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:35
+msgid "Searching bed calibration point"
+msgstr "Recherche du point de calibration du plateau chauffant"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5779
+msgid "Select language"
+msgstr "Choisir langue"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7812
+msgid "Self test OK"
+msgstr "Auto-test OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7582
+msgid "Self test start  "
+msgstr "Debut auto-test"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5843
+msgid "Selftest         "
+msgstr "Auto-test"
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8255
+msgid "Selftest error !"
+msgstr "Erreur auto-test!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:73
+msgid "Selftest failed  "
+msgstr "Echec de l'auto-test"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1550
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Le Selftest sera lance pour calibrer la remise a zero precise sans capteur"
+
+# 
+#: ultralcd.cpp:5102
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3286
+msgid "Set temperature:"
+msgstr "Regler temp.:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:82
+msgid "Settings"
+msgstr "Reglages"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
+msgid "Show end stops"
+msgstr "Afficher butees"
+
+# 
+#: ultralcd.cpp:4008
+msgid "Sensor state"
+msgstr "Etat capteur"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
+
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Tri"
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Aucun"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Heure"
+
+# 
+#: ultralcd.cpp:3037
+msgid "Severe skew:"
+msgstr "Deviat.sev.:"
+
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr ""
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:745
+msgid "Sorting files"
+msgstr "Tri des fichiers"
+
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Fort"
+
+# 
+#: ultralcd.cpp:3036
+msgid "Slight skew:"
+msgstr "Deviat.leg.:"
+
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Son"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:5101
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
+
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Une fois"
+
+# MSG_SPEED
+#: ultralcd.cpp:7119
+msgid "Speed"
+msgstr "Vitesse"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:76
+msgid "Spinning"
+msgstr "Tourne"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4596
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Une temperature ambiante stable de 21-26C et un support stable sont requis."
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6978
+msgid "Statistics  "
+msgstr "Statistiques"
+
+# MSG_STOP_PRINT
+#: messages.c:91
+msgid "Stop print"
+msgstr "Arreter impression"
+
+# MSG_STOPPED
+#: messages.c:92
+msgid "STOPPED. "
+msgstr "ARRETE."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6987
+msgid "Support"
+msgstr ""
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8335
+msgid "Swapped"
+msgstr "Echange"
+
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Selectionnez le filament:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Calib. Temp."
+
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Selectionnez la temperature qui correspond a votre materiau."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5873
+msgid "Temp. calibration"
+msgstr "Calibration temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3933
+msgid "Temperature calibration failed"
+msgstr "Echec de la calibration en temperature"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:94
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
+
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Capteur verifie, retirez le filament maintenant."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5739
+msgid "Temperature"
+msgstr ""
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2218
+msgid "Temperatures"
+msgstr ""
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
+
+# 
+#: ultralcd.cpp:2891
+msgid "Total filament"
+msgstr "Filament total"
+
+# 
+#: ultralcd.cpp:2892
+msgid "Total print time"
+msgstr "Temps total impr."
+
+# MSG_TUNE
+#: ultralcd.cpp:6850
+msgid "Tune"
+msgstr "Regler"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Decharger"
+
+# 
+#: ultralcd.cpp:1752
+msgid "Total failures"
+msgstr "Total des echecs"
+
+# 
+#: ultralcd.cpp:2296
+msgid "to load filament"
+msgstr "pour charger le fil."
+
+# 
+#: ultralcd.cpp:2300
+msgid "to unload filament"
+msgstr "pour decharger fil."
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:95
+msgid "Unload filament"
+msgstr "Decharger fil."
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:96
+msgid "Unloading filament"
+msgstr "Dechargement fil."
+
+# 
+#: ultralcd.cpp:1705
+msgid "Total"
+msgstr "Totale"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:6001
+msgid "Used during print"
+msgstr "Utilise pdt impr."
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2221
+msgid "Voltages"
+msgstr "Tensions"
+
+# 
+#: ultralcd.cpp:2194
+msgid "unknown"
+msgstr "inconnu"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5511
+msgid "Wait for user..."
+msgstr "Attente utilisateur..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3434
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Attente du refroidissement des buse et plateau chauffant"
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3395
+msgid "Waiting for PINDA probe cooling"
+msgstr "Attente du refroidissement de la sonde PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Utilisez Remonter le fil. pour retirer le filament 1 s'il depasse du tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1510
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Attention: Types d'imprimante et de carte mere modifies"
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1502
+msgid "Warning: motherboard type changed."
+msgstr "Attention: Type de carte mere modifie."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1506
+msgid "Warning: printer type changed."
+msgstr "Attention: Type d'imprimante modifie"
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3128
+msgid "Was filament unload successful?"
+msgstr "Dechargement du filament reussi?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:81
+msgid "Wiring error"
+msgstr "Erreur de cablage"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5834
+msgid "Wizard"
+msgstr "Assistant"
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
+msgid "XYZ cal. details"
+msgstr "Details calib. XYZ"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Echec calibration XYZ. Consultez le manuel."
+
+# MSG_YES
+#: messages.c:102
+msgid "Yes"
+msgstr "Oui"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:101
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3904
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Calibration XYZ OK. L'ecart sera corrige automatiquement."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3901
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
+msgid "X-correct:"
+msgstr "Correct-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3898
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3882
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Calibration XYZ compromise. Les points de calibration en avant ne sont pas atteignables."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3885
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6261
+msgid "Load all"
+msgstr "Charger un par un"
+
+# 
+#: ultralcd.cpp:3864
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve."
+
+# 
+#: ultralcd.cpp:3870
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables."
+
+# 
+#: ultralcd.cpp:3873
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Echec calibration XYZ. Le point de calibration avant droit n'est pas atteignable."
+
+# 
+#: ultralcd.cpp:2991
+msgid "Y distance from min"
+msgstr "Distance Y du min"
+
+# 
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "L'imprimante commencera a  imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Verification en echec, retirez le filament et reessayez."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
+msgid "Y-correct:"
+msgstr "Correct-Y:"
+
+# MSG_OFF
+#: messages.c:105
+msgid "Off"
+msgstr ""
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr ""
+
+# 
+#: messages.c:53
+msgid "Back"
+msgstr "Retour"
+
+# 
+#: ultralcd.cpp:5724
+msgid "Checks"
+msgstr "Verifications"
+
+# 
+#: ultralcd.cpp:8349
+msgid "False triggering"
+msgstr "Faux declenchement"
+
+# 
+#: ultralcd.cpp:4013
+msgid "FINDA:"
+msgstr "FINDA:"
+
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Stricte"
+
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Avert"
+
+# 
+#: messages.c:83
+msgid "HW Setup"
+msgstr "Config HW"
+
+# 
+#: ultralcd.cpp:4017
+msgid "IR:"
+msgstr "IR:"
+
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Compens. aim."
+
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr ""
+
+# 
+#: ultralcd.cpp:5763
+msgid "Mesh bed leveling"
+msgstr ""
+
+# 
+#: Marlin_main.cpp:872
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S detecte sur imprimante MK3"
+
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "Mode MMU"
+
+# 
+#: ultralcd.cpp:4494
+msgid "Mode change in progress ..."
+msgstr "Changement de mode en cours..."
+
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr "Modele"
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Diam. buse"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "Le G-code a ete prepare pour un niveau different. Continuer?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "Le G-code a ete prepare pour un niveau different. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
+
+# 
+#: util.cpp:431
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Continuer?"
+
+# 
+#: util.cpp:437
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "Le G-code a ete prepare pour une autre version de l'imprimante. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Continuer?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Veuillez mettre a jour le firmware. L'impression annulee."
+
+# 
+#: ultralcd.cpp:4009
+msgid "PINDA:"
+msgstr "PINDA:"
+
+#  c=20
+#: ultralcd.cpp:2452
+msgid "Preheating to cut"
+msgstr "Chauffe pour couper"
+
+#  c=20
+#: ultralcd.cpp:2449
+msgid "Preheating to eject"
+msgstr "Chauf. pour remonter"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Continuer?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee."
+
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr ""
+
+# 
+#: ultralcd.cpp:6814
+msgid "Rename"
+msgstr "Renommer"
+
+# 
+#: ultralcd.cpp:6807
+msgid "Select"
+msgstr "Selectionner"
+
+# 
+#: ultralcd.cpp:2212
+msgid "Sensor info"
+msgstr "Info capteur"
+
+# MSG_SHEET c=10
+#: messages.c:54
+msgid "Sheet"
+msgstr "Plaque"
+
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr ""
+
+#  c=18
+#: ultralcd.cpp:5722
+msgid "Steel sheets"
+msgstr "Plaques en acier"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
+msgid "Z-correct:"
+msgstr "Correct-Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Mesurer x-fois"
+

+ 1842 - 1782
lang/po/Firmware_it.po

@@ -1,1782 +1,1842 @@
-# Translation of Prusa-Firmware into Italian.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: it\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:25:08 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:25:08 PM\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
-msgid " of 4"
-msgstr " su 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
-msgid " of 9"
-msgstr " su 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
-msgid "[0;0] point offset"
-msgstr "[0;0] punto offset"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Rilev. impatto\x0aattivabile solo\x0ain Modalita normale"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "ATTENZIONE:\x0aRilev. impatto\x0adisattivato in\x0aModalita silenziosa"
-
-# 
-#: ultralcd.cpp:2470
-msgid ">Cancel"
-msgstr ">Annulla"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
-msgid "Adjusting Z:"
-msgstr "Compensaz. Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
-msgid "All correct      "
-msgstr "Nessun errore"
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
-msgid "All is done. Happy printing!"
-msgstr "Tutto fatto. Buona stampa!"
-
-# 
-#: ultralcd.cpp:1993
-msgid "Ambient"
-msgstr "Ambiente"
-
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
-msgid "and press the knob"
-msgstr "e cliccare manopola"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
-msgid "Are left and right Z~carriages all up?"
-msgstr "I carrelli Z sin/des sono altezza max?"
-
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr ""
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr ""
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Trova origine"
-
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
-msgid "AutoLoad filament"
-msgstr "Autocaric. filam."
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Caricamento auto. filam. disp. solo con il sensore attivo..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Caricamento automatico attivo, premi la manopola e inserisci il filamento."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
-msgid "Axis length"
-msgstr "Lunghezza dell'asse"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
-msgid "Axis"
-msgstr "Assi"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
-msgid "Bed / Heater"
-msgstr "Letto/Riscald."
-
-# MSG_BED_DONE
-#: messages.c:16
-msgid "Bed done"
-msgstr "Piano fatto."
-
-# MSG_BED_HEATING
-#: messages.c:17
-msgid "Bed Heating"
-msgstr "Riscald. letto"
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
-msgid "Bed level correct"
-msgstr "Correz. liv.letto"
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Livellamento letto fallito.NoRispSensore.Residui su ugello? In attesa di reset."
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Letto"
-
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
-msgid "Belt status"
-msgstr "Stato cinghie"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
-msgid "Blackout occurred. Recover print?"
-msgstr "C'e stato un Blackout. Recuperare la stampa?"
-
-# 
-#: ultralcd.cpp:8404
-msgid "Calibrating home"
-msgstr "Calibrazione Home"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
-msgid "Calibrate XYZ"
-msgstr "Calibra XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:48
-msgid "Calibrate Z"
-msgstr "Calibra Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
-msgid "Calibrate"
-msgstr "Calibra"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
-msgid "Calibrating Z"
-msgstr "Calibrando Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
-msgid "Calibration done"
-msgstr "Calibrazione completa"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:61
-msgid "Calibration"
-msgstr "Calibrazione"
-
-# 
-#: ultralcd.cpp:4828
-msgid "Cancel"
-msgstr "Annulla"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:8812
-msgid "Card removed"
-msgstr "SD rimossa"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2719
-msgid "Color not correct"
-msgstr "Colore non puro"
-
-# MSG_COOLDOWN
-#: messages.c:23
-msgid "Cooldown"
-msgstr "Raffredda"
-
-# 
-#: ultralcd.cpp:4584
-msgid "Copy selected language?"
-msgstr "Copiare la lingua selezionata?"
-
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Rileva.crash [on]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Rileva.crash[N/A]"
-
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Rileva.crash[off]"
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
-msgid "Crash detected."
-msgstr "Rilevato impatto."
-
-# 
-#: Marlin_main.cpp:596
-msgid "Crash detected. Resume print?"
-msgstr "Scontro rilevato. Riprendere la stampa?"
-
-# 
-#: ultralcd.cpp:1837
-msgid "Crash"
-msgstr "Impatto"
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
-msgid "Current"
-msgstr "Attuale"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
-msgid "Date:"
-msgstr "Data:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
-msgid "Disable steppers"
-msgstr "Disabilita motori"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo layer."
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
-
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
-msgid "E-correct:"
-msgstr "Correzione-E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
-msgid "Eject filament"
-msgstr "Espelli filamento "
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
-msgid "Ejecting filament"
-msgstr "Espellendo filamento "
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
-msgid "Endstop not hit"
-msgstr "Finecorsa fuori portata"
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
-msgid "Endstop"
-msgstr "Finecorsa"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
-msgid "Endstops"
-msgstr "Finecorsa"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
-msgid "Error - static memory has been overwritten"
-msgstr "Errore - la memoria statica e stata sovrascritta"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
-
-# MSG_ERROR
-#: messages.c:28
-msgid "ERROR:"
-msgstr "ERRORE:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
-msgid "Extruder fan:"
-msgstr "Ventola estr:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
-msgid "Extruder info"
-msgstr "Info estrusore"
-
-# MSG_MOVE_E
-#: messages.c:29
-msgid "Extruder"
-msgstr "Estrusore"
-
-# 
-#: ultralcd.cpp:6952
-msgid "Fail stats MMU"
-msgstr "Stat.fall. MMU"
-
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "Autocar.fil. [on]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "Autocar.fil.[N/A]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "Autocar.fil.[off]"
-
-# 
-#: ultralcd.cpp:6949
-msgid "Fail stats"
-msgstr "Stat. fallimenti"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:31
-msgid "Fan speed"
-msgstr "Velocita vent."
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:78
-msgid "Fan test"
-msgstr "Test ventola"
-
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Control.vent [on]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Control.vent[off]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Sensore fil. [on]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Sensore fil.[N/A]"
-
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Sensore fil.[off]"
-
-# 
-#: ultralcd.cpp:1836
-msgid "Filam. runouts"
-msgstr "Filam. esauriti"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
-msgid "Filament extruding & with correct color?"
-msgstr "Filamento estruso & con il giusto colore?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
-msgid "Filament not loaded"
-msgstr "Fil. non caricato"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
-msgid "Filament sensor"
-msgstr "Sensore filam."
-
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
-msgid "Filament used"
-msgstr "Filamento utilizzato"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
-msgid "Print time"
-msgstr "Tempo di stampa"
-
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
-msgid "File incomplete. Continue anyway?"
-msgstr "File incompleto. Continuare comunque?"
-
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
-msgid "Finishing movements"
-msgstr "Finalizzando gli spostamenti"
-
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
-msgid "First layer cal."
-msgstr "Cal. primo strato"
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Per primo avviero l'autotest per controllare gli errori di assemblaggio piu comuni."
-
-# 
-#: mmu.cpp:724
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Risolvi il problema e quindi premi il bottone sull'unita MMU. "
-
-# MSG_FLOW
-#: ultralcd.cpp:7038
-msgid "Flow"
-msgstr "Flusso"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
-msgid "Front print fan?"
-msgstr "Ventola frontale?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
-msgid "Front side[um]"
-msgstr "Fronte [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
-msgid "Front/left fans"
-msgstr "Ventola frontale/sinistra"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
-msgid "Heater/Thermistor"
-msgstr "Riscald./Termist."
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
-msgid "Heating disabled by safety timer."
-msgstr "Riscaldamento fermato dal timer di sicurezza."
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:47
-msgid "Heating done."
-msgstr "Riscald. completo"
-
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Riscaldamento..."
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Ciao, sono la tua stampante Original Prusa i3. Gradiresti un aiuto nel processo di configurazione?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Cambia filamento"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
-msgid "Change success!"
-msgstr "Cambio riuscito!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
-msgid "Changed correctly?"
-msgstr "Cambiato correttamente?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
-msgid "Checking bed     "
-msgstr "Verifica piano"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
-msgid "Checking endstops"
-msgstr "Verifica finecorsa"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
-msgid "Checking hotend  "
-msgstr "Verifica ugello"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
-msgid "Checking sensors "
-msgstr "Controllo sensori"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
-msgid "Checking X axis  "
-msgstr "Verifica asse X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
-msgid "Checking Y axis  "
-msgstr "Verifica asse Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
-msgid "Checking Z axis  "
-msgstr "Verifica asse Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Seleziona estrusore:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Scegliere filamento:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr "Filamento"
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
-msgid "I will run z calibration now."
-msgstr "Adesso avviero la Calibrazione Z."
-
-# MSG_WATCH
-#: messages.c:99
-msgid "Info screen"
-msgstr "Schermata info"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
-msgid "Insert filament"
-msgstr "Inserire filamento"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
-msgid "Is filament loaded?"
-msgstr "Il filamento e stato caricato?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
-msgid "Is steel sheet on heatbed?"
-msgstr "La piastra d'acciaio e sul piano riscaldato?"
-
-# 
-#: ultralcd.cpp:1779
-msgid "Last print failures"
-msgstr "Fallimenti ultima stampa"
-
-# 
-#: ultralcd.cpp:1756
-msgid "Last print"
-msgstr "Ultima stampa"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
-msgid "Left hotend fan?"
-msgstr "Vent SX hotend?"
-
-# 
-#: ultralcd.cpp:3011
-msgid "Left"
-msgstr "Sinistra"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
-msgid "Left side [um]"
-msgstr "Sinistra [um]"
-
-# 
-#: ultralcd.cpp:5747
-msgid "Lin. correction"
-msgstr "Correzione lineare"
-
-# MSG_BABYSTEP_Z
-#: messages.c:13
-msgid "Live adjust Z"
-msgstr "Compensazione Z"
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:51
-msgid "Load filament"
-msgstr "Carica filamento"
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
-msgid "Loading color"
-msgstr "Caricando colore"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:52
-msgid "Loading filament"
-msgstr "Caricando filamento"
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
-msgid "Loose pulley"
-msgstr "Puleggia lenta"
-
-# 
-#: ultralcd.cpp:6911
-msgid "Load to nozzle"
-msgstr "Carica ugello"
-
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
-msgid "M117 First layer cal."
-msgstr "M117 Calibrazione primo layer."
-
-# MSG_MAIN
-#: messages.c:56
-msgid "Main"
-msgstr "Menu principale"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
-msgid "Measuring reference height of calibration point"
-msgstr "Misura altezza di rif. del punto di calib."
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
-msgid "Mesh Bed Leveling"
-msgstr "Livel. piatto"
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. riprendendo la posizione... "
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Ripristino temperatura... "
-
-# 
-#: ultralcd.cpp:3052
-msgid "Measured skew"
-msgstr "Deviazione mis"
-
-# 
-#: ultralcd.cpp:1780
-msgid "MMU fails"
-msgstr "Fallimenti MMU"
-
-# 
-#: mmu.cpp:1592
-msgid "MMU load failed     "
-msgstr "Caricamento MMU fallito"
-
-# 
-#: ultralcd.cpp:1781
-msgid "MMU load fails"
-msgstr "Caricamenti MMU falliti"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Riprendendo... "
-
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Mod.    [normale]"
-
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Mod. [silenziosa]"
-
-# 
-#: mmu.cpp:719
-msgid "MMU needs user attention."
-msgstr "Il MMU richiede attenzione dall'utente."
-
-# 
-#: ultralcd.cpp:1807
-msgid "MMU power fails"
-msgstr "Manc. corr. MMU"
-
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Mod. [silenziosa]"
-
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Mod.       [auto]"
-
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Mod.      [forte]"
-
-# 
-#: ultralcd.cpp:2203
-msgid "MMU2 connected"
-msgstr "MMU2 connessa"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:83
-msgid "Motor"
-msgstr "Motore"
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
-msgid "Move axis"
-msgstr "Muovi asse"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4375
-msgid "Move X"
-msgstr "Sposta X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4376
-msgid "Move Y"
-msgstr "Sposta Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4377
-msgid "Move Z"
-msgstr "Sposta Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5293
-msgid "No move."
-msgstr "Nessun movimento."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6878
-msgid "No SD card"
-msgstr "Nessuna SD"
-
-# 
-#: ultralcd.cpp:3017
-msgid "N/A"
-msgstr ""
-
-# MSG_NO
-#: messages.c:62
-msgid "No"
-msgstr ""
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
-msgid "Not connected"
-msgstr "Non connesso"
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Nuova versione firmware disponibile:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
-msgid "Not spinning"
-msgstr "Non gira"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Adesso calibro la distanza fra ugello e superfice del piatto."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Adesso preriscaldero l'ugello per PLA."
-
-# MSG_NOZZLE
-#: messages.c:63
-msgid "Nozzle"
-msgstr "Ugello"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
-
-# 
-#: ultralcd.cpp:5071
-msgid "Now remove the test print from steel sheet."
-msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio."
-
-# 
-#: ultralcd.cpp:1706
-msgid "Nozzle FAN"
-msgstr "Ventola estrusore"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
-msgid "Pause print"
-msgstr "Metti in pausa"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
-msgid "PID cal.           "
-msgstr "Calibrazione PID"
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
-msgid "PID cal. finished"
-msgstr "Calib. PID completa"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
-msgid "PID calibration"
-msgstr "Calibrazione PID"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
-msgid "PINDA Heating"
-msgstr "Riscaldamento PINDA"
-
-# MSG_PAPER c=20 r=8
-#: messages.c:64
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Posizionare un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere subito la stampante."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
-msgid "Please clean heatbed and then press the knob."
-msgstr "Per favore pulisci il piatto, poi premi la manopola."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Pulire l'ugello per la calibrazione, poi fare click."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
-msgid "Please check :"
-msgstr "Verifica:"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
-msgid "Please open idler and remove filament manually."
-msgstr "Aprire la guida filam. e rimuovere il filam. a mano"
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr "Per favore posizionate la piastra d'acciaio sul piano riscaldato."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
-msgid "Please press the knob to unload filament"
-msgstr "Premete la manopola per scaricare il filamento "
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
-msgid "Please pull out filament immediately"
-msgstr "Estrarre il filamento immediatamente"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
-msgid "Please remove filament and then press the knob."
-msgstr "Rimuovi il filamento e quindi premi la manopola. "
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr "Rimuovete la piastra di acciaio dal piano riscaldato"
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
-msgid "Please run XYZ calibration first."
-msgstr "Esegui la calibrazione XYZ prima. "
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Aggiorna il firmware sul tuo MMU2. In attesa di reset. "
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:66
-msgid "Please wait"
-msgstr "Attendere"
-
-# 
-#: ultralcd.cpp:5070
-msgid "Please remove shipping helpers first."
-msgstr "Per favore rimuovete i materiali da spedizione"
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
-msgid "Preheat the nozzle!"
-msgstr "Prerisc. ugello!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6825
-msgid "Preheat"
-msgstr "Preriscalda"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
-msgid "Preheating nozzle. Please wait."
-msgstr "Preriscaldando l'ugello. Attendere prego."
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Prego aggiornare."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Premete la manopola per preriscaldare l'ugello e continuare."
-
-# 
-#: ultralcd.cpp:1835
-msgid "Power failures"
-msgstr "Mancanza corrente"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:69
-msgid "Print aborted"
-msgstr "Stampa interrotta"
-
-# 
-#: ultralcd.cpp:2452
-msgid "Preheating to load"
-msgstr "Preriscaldamento per caricare"
-
-# 
-#: ultralcd.cpp:2456
-msgid "Preheating to unload"
-msgstr "Preriscaldamento per scaricare"
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
-msgid "Print fan:"
-msgstr "Vent.stam:"
-
-# MSG_CARD_MENU
-#: messages.c:21
-msgid "Print from SD"
-msgstr "Stampa da SD"
-
-# 
-#: ultralcd.cpp:2301
-msgid "Press the knob"
-msgstr "Premere la manopola"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
-msgid "Print paused"
-msgstr "Stampa in pausa"
-
-# 
-#: mmu.cpp:723
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Premete la manopola per recuperare la temperatura dell'ugello."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Stampante non ancora calibrata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione."
-
-# 
-#: ultralcd.cpp:1707
-msgid "Print FAN"
-msgstr "Ventola di stampa"
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2189
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
-msgid "Rear side [um]"
-msgstr "Retro [um]"
-
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
-msgid "Recovering print    "
-msgstr "Recupero stampa"
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento. "
-
-# 
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr ""
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
-msgid "Reset XYZ calibr."
-msgstr "Reset calibrazione XYZ."
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
-msgid "Reset"
-msgstr ""
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
-msgid "Resume print"
-msgstr "Riprendi stampa"
-
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
-msgid "Resuming print"
-msgstr "Riprendi stampa"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
-msgid "Right side[um]"
-msgstr "Destra [um]"
-
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "Porta RPi    [on]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "Porta RPi   [off]"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "Mem. SD [normale]"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "Mem. SD [flshAir]"
-
-# 
-#: ultralcd.cpp:3012
-msgid "Right"
-msgstr "Destra"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
-msgid "Searching bed calibration point"
-msgstr "Ricerca dei punti di calibrazione del piano"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
-msgid "Select language"
-msgstr "Seleziona lingua"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
-msgid "Self test OK"
-msgstr "Autotest OK"
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
-msgid "Self test start  "
-msgstr "Avvia autotest"
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5820
-msgid "Selftest         "
-msgstr "Autotest"
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
-msgid "Selftest error !"
-msgstr "Errore Autotest !"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:77
-msgid "Selftest failed  "
-msgstr "Autotest fallito"
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Verra effettuato un self test per calibrare l'homing senza sensori"
-
-# 
-#: ultralcd.cpp:5111
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
-
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Selezionate filamento PLA:"
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
-msgid "Set temperature:"
-msgstr "Imposta temperatura:"
-
-# MSG_SETTINGS
-#: messages.c:86
-msgid "Settings"
-msgstr "Impostazioni"
-
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
-msgid "Show end stops"
-msgstr "Stato finecorsa"
-
-# 
-#: ultralcd.cpp:4022
-msgid "Sensor state"
-msgstr "Stato sensore"
-
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Ordina  [nessuno]"
-
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Ordina    [cron.]"
-
-# 
-#: ultralcd.cpp:3055
-msgid "Severe skew:"
-msgstr "Devia.grave:"
-
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Ordine [alfabeti]"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
-msgid "Sorting files"
-msgstr "Ordinando i file"
-
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Suono     [forte]"
-
-# 
-#: ultralcd.cpp:3054
-msgid "Slight skew:"
-msgstr "Devia.lieve:"
-
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Suono      [mute]"
-
-# 
-#: Marlin_main.cpp:4875
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Sono stati rilevati problemi, avviato livellamento Z ..."
-
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Suono   [singolo]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Suono[silenzioso]"
-
-# MSG_SPEED
-#: ultralcd.cpp:7032
-msgid "Speed"
-msgstr "Velocita"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
-msgid "Spinning"
-msgstr "Gira"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Sono necessari una temperatura ambiente di 21-26C e una superficie rigida "
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6945
-msgid "Statistics  "
-msgstr "Statistiche"
-
-# MSG_STOP_PRINT
-#: messages.c:93
-msgid "Stop print"
-msgstr "Arresta stampa"
-
-# MSG_STOPPED
-#: messages.c:94
-msgid "STOPPED. "
-msgstr "ARRESTATO."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6954
-msgid "Support"
-msgstr "Supporto"
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
-msgid "Swapped"
-msgstr "Scambiato"
-
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Calib. temp. "
-
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Calib. temp. [on]"
-
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Calib. temp.[off]"
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
-msgid "Temp. calibration"
-msgstr "Calib. Temp."
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
-msgid "Temperature calibration failed"
-msgstr "Calibrazione temperatura fallita"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5717
-msgid "Temperature"
-msgstr ""
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
-msgid "Temperatures"
-msgstr "Temperature"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total filament"
-msgstr "Filamento totale"
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total print time"
-msgstr "Tempo stampa totale"
-
-# MSG_TUNE
-#: ultralcd.cpp:6822
-msgid "Tune"
-msgstr "Regola"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Scarica"
-
-# 
-#: ultralcd.cpp:1804
-msgid "Total failures"
-msgstr "Totale fallimenti"
-
-# 
-#: ultralcd.cpp:2308
-msgid "to load filament"
-msgstr "per caricare il filamento"
-
-# 
-#: ultralcd.cpp:2312
-msgid "to unload filament"
-msgstr "per scaricare il filamento"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
-msgid "Unload filament"
-msgstr "Scarica filamento"
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
-msgid "Unloading filament"
-msgstr "Scaricando filamento"
-
-# 
-#: ultralcd.cpp:1757
-msgid "Total"
-msgstr "Totale"
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
-msgid "Used during print"
-msgstr "Usati nella stampa"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
-msgid "Voltages"
-msgstr "Voltaggi"
-
-# 
-#: ultralcd.cpp:2211
-msgid "unknown"
-msgstr "sconosciuto"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5264
-msgid "Wait for user..."
-msgstr "Attendendo utente..."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
-msgid "Waiting for nozzle and bed cooling"
-msgstr "In attesa del raffreddamento dell'ugello e del piano"
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
-msgid "Waiting for PINDA probe cooling"
-msgstr "In attesa del raffreddamento della sonda PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Usate lo scaricamento per rimuovere il filamento 1 se protrude dal retro del tubo posteriore del MMu. Utilizzate l'espulsione se e nascosto nel tubo."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Attenzione: tipo di stampante e di scheda madre cambiati."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
-msgid "Warning: motherboard type changed."
-msgstr "Avviso: tipo di scheda madre cambiato"
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
-msgid "Warning: printer type changed."
-msgstr "Avviso: tipo di stampante cambiato."
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
-msgid "Was filament unload successful?"
-msgstr "Filamento scaricato con successo?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
-msgid "Wiring error"
-msgstr "Errore cablaggio"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
-msgid "Wizard"
-msgstr ""
-
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
-msgid "XYZ cal. details"
-msgstr "XYZ Cal. dettagli"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
-
-# MSG_YES
-#: messages.c:104
-msgid "Yes"
-msgstr "Si"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "E possibile riprendere il Wizard in qualsiasi momento attraverso Calibrazione -> Wizard."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Calibrazione XYZ corretta. La distorsione verra compensata automaticamente."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
-
-# 
-#: ultralcd.cpp:5197
-msgid "X-correct:"
-msgstr "Correzione-X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
-msgid "Load all"
-msgstr "Caricare tutti"
-
-# 
-#: ultralcd.cpp:3879
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
-
-# 
-#: ultralcd.cpp:3885
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
-
-# 
-#: ultralcd.cpp:3888
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
-
-# 
-#: ultralcd.cpp:3009
-msgid "Y distance from min"
-msgstr "Distanza Y dal min"
-
-# 
-#: ultralcd.cpp:5198
-msgid "Y-correct:"
-msgstr "Correzione-Y:"
-
-# MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr ""
-
-# 
-#: messages.c:57
-msgid "Back"
-msgstr "Indietro"
-
-# 
-#: ultralcd.cpp:5706
-msgid "Checks"
-msgstr "Controlli"
-
-# 
-#: ultralcd.cpp:8080
-msgid "False triggering"
-msgstr "Falso innesco"
-
-# 
-#: ultralcd.cpp:4027
-msgid "FINDA:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware[nessuno]"
-
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [esatto]"
-
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware [avviso]"
-
-# 
-#: messages.c:87
-msgid "HW Setup"
-msgstr "Installazione HW"
-
-# 
-#: ultralcd.cpp:4031
-msgid "IR:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Comp. Magneti[N/A]"
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Comp. Magneti[off]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Comp. Magneti [on]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Griglia      [3x3]"
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Griglia      [7x7]"
-
-# 
-#: ultralcd.cpp:5744
-msgid "Mesh bed leveling"
-msgstr "Mesh livel. letto"
-
-# 
-#: Marlin_main.cpp:852
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "Firmware MK3S rilevato su stampante MK3"
-
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "Modalita MMU [Normale]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "Modalita MMU [Silenziosa]"
-
-# 
-#: ultralcd.cpp:4508
-msgid "Mode change in progress ..."
-msgstr "Cambio modalita in corso ..."
-
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Modello [nessuno]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Modello  [esatto]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Modello  [avviso]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Diam.Ugello[0.25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Diam.Ugello[0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Diam.Ugello[0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Ugello  [nessuno]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Ugello   [esatto]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Ugello   [avviso]"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr "G-code processato per un livello diverso. Continuare?"
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr "G-code processato per un livello diverso. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "G-code processato per una stampante diversa. Continuare?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "G-code processato per una stampante diversa. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "G-code processato per un firmware piu recente. Continuare?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "G-code processato per un firmware piu recente. Per favore aggiorna il firmware. Stampa annullata."
-
-# 
-#: ultralcd.cpp:4023
-msgid "PINDA:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:2462
-msgid "Preheating to cut"
-msgstr "Preriscaldamento per taglio"
-
-# 
-#: ultralcd.cpp:2459
-msgid "Preheating to eject"
-msgstr "Preriscaldamento per espulsione"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Diametro ugello diverso da G-Code. Continuare?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
-
-# 
-#: ultralcd.cpp:6786
-msgid "Rename"
-msgstr "Rinomina"
-
-# 
-#: ultralcd.cpp:6779
-msgid "Select"
-msgstr "Seleziona"
-
-# 
-#: ultralcd.cpp:2229
-msgid "Sensor info"
-msgstr "Info Sensore"
-
-# 
-#: messages.c:58
-msgid "Sheet"
-msgstr "Piano"
-
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Suono   [assist.]"
-
-# 
-#: ultralcd.cpp:5704
-msgid "Steel sheets"
-msgstr "Piani d'acciaio"
-
-# 
-#: ultralcd.cpp:5199
-msgid "Z-correct:"
-msgstr "Correzione-Z:"
-
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Z-probe nr.    [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Z-probe nr.    [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Z-probe nr.    [5]"
-
+# Translation of Prusa-Firmware into Italian.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: it\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Fri May 15 18:16:31 CEST 2020\n"
+"PO-Revision-Date: Fri May 15 18:16:31 CEST 2020\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
+
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 o inferiore"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 o superiore"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:36
+msgid " of 4"
+msgstr " su 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:56
+msgid " of 9"
+msgstr " su 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3064
+msgid "[0;0] point offset"
+msgstr "[0;0] punto offset"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Rilev. impatto\x0aattivabile solo\x0ain Modalita normale"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "ATTENZIONE:\x0aRilev. impatto\x0adisattivato in\x0aModalita silenziosa"
+
+# 
+#: ultralcd.cpp:2460
+msgid ">Cancel"
+msgstr ">Annulla"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3184
+msgid "Adjusting Z:"
+msgstr "Compensaz. Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8677
+msgid "All correct      "
+msgstr "Nessun errore"
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:99
+msgid "All is done. Happy printing!"
+msgstr "Tutto fatto. Buona stampa!"
+
+# 
+#: ultralcd.cpp:1956
+msgid "Ambient"
+msgstr "Ambiente"
+
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
+msgid "and press the knob"
+msgstr "e cliccare manopola"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3506
+msgid "Are left and right Z~carriages all up?"
+msgstr "I carrelli Z sin/des sono altezza max?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Trova origine"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
+msgid "AutoLoad filament"
+msgstr "Autocaric. filam."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4445
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Caricamento auto. filam. disp. solo con il sensore attivo..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2804
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Caricamento automatico attivo, premi la manopola e inserisci il filamento."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8325
+msgid "Axis length"
+msgstr "Lunghezza dell'asse"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8327
+msgid "Axis"
+msgstr "Assi"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8269
+msgid "Bed / Heater"
+msgstr "Piano/Riscald."
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Piano fatto."
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Riscald. piano"
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5861
+msgid "Bed level correct"
+msgstr "Correz. liv.piano"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test cinghie     "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Livellamento piano fallito. Sensore KO? Residui su ugello? In attesa di reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Chiaro"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Luminosita'"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Piano"
+
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
+msgid "Belt status"
+msgstr "Stato cinghie"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:67
+msgid "Blackout occurred. Recover print?"
+msgstr "Blackout rilevato. Recuperare la stampa?"
+
+# 
+#: ultralcd.cpp:8679
+msgid "Calibrating home"
+msgstr "Calibrazione Home"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5850
+msgid "Calibrate XYZ"
+msgstr "Calibra XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:44
+msgid "Calibrate Z"
+msgstr "Calibra Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4637
+msgid "Calibrate"
+msgstr "Calibra"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:19
+msgid "Calibrating Z"
+msgstr "Calibrando Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:865
+msgid "Calibration done"
+msgstr "Calibrazione completa"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:57
+msgid "Calibration"
+msgstr "Calibrazione"
+
+# 
+#: ultralcd.cpp:4815
+msgid "Cancel"
+msgstr "Annulla"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:9090
+msgid "Card removed"
+msgstr "SD rimossa"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2709
+msgid "Color not correct"
+msgstr "Colore non puro"
+
+# MSG_COOLDOWN
+#: messages.c:22
+msgid "Cooldown"
+msgstr "Raffredda"
+
+# 
+#: ultralcd.cpp:4570
+msgid "Copy selected language?"
+msgstr "Copiare la lingua selezionata?"
+
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Rileva.crash"
+
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Scegli un filamento per la calibrazione del primo strato e selezionalo nel menu sullo schermo."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:23
+msgid "Crash detected."
+msgstr "Rilevato impatto."
+
+# 
+#: Marlin_main.cpp:607
+msgid "Crash detected. Resume print?"
+msgstr "Scontro rilevato. Riprendere la stampa?"
+
+# 
+#: ultralcd.cpp:1785
+msgid "Crash"
+msgstr "Impatto"
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:6002
+msgid "Current"
+msgstr "Attuale"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2163
+msgid "Date:"
+msgstr "Data:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5743
+msgid "Disable steppers"
+msgstr "Disabilita motori"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Distanza tra la punta dell'ugello e la superficie del piano non ancora impostata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo strato."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5125
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
+msgid "E-correct:"
+msgstr "Correzione-E:"
+
+# MSG_EJECT_FILAMENT c=17 r=1
+#: messages.c:49
+msgid "Eject filament"
+msgstr "Espelli filamento"
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1416
+msgid "Ejecting filament"
+msgstr "Espellendo filamento"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
+msgid "Endstop not hit"
+msgstr "Finec. fuori portata"
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8287
+msgid "Endstop"
+msgstr "Finecorsa"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8275
+msgid "Endstops"
+msgstr "Finecorsa"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6998
+msgid "Error - static memory has been overwritten"
+msgstr "Errore - la memoria statica e' stata sovrascritta"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Taglia filamento"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Tagliatr."
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Tagliando filam."
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4458
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
+
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr "Scuro"
+
+# MSG_ERROR
+#: messages.c:25
+msgid "ERROR:"
+msgstr "ERRORE:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8686
+msgid "Extruder fan:"
+msgstr "Ventola estr:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
+msgid "Extruder info"
+msgstr "Info estrusore"
+
+# MSG_MOVE_E
+#: messages.c:26
+msgid "Extruder"
+msgstr "Estrusore"
+
+# 
+#: ultralcd.cpp:6985
+msgid "Fail stats MMU"
+msgstr "Stat.fall. MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "Autocar.fil."
+
+# 
+#: ultralcd.cpp:6982
+msgid "Fail stats"
+msgstr "Stat. fallimenti"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:28
+msgid "Fan speed"
+msgstr "Velocita vent."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:74
+msgid "Fan test"
+msgstr "Test ventola"
+
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Control.vent"
+
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Sensore fil."
+
+#  c=14
+#: ultralcd.cpp:1784
+msgid "Filam. runouts"
+msgstr "Fil. esauriti"
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:29
+msgid "Filament extruding & with correct color?"
+msgstr "Filamento estruso e con colore corretto?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2705
+msgid "Filament not loaded"
+msgstr "Fil. non caricato"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:80
+msgid "Filament sensor"
+msgstr "Sensore filam."
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
+msgid "Filament used"
+msgstr "Fil. utilizzato"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2870
+msgid "Print time"
+msgstr "Tempo di stampa"
+
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "Azione FS"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 o superiore"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
+msgid "File incomplete. Continue anyway?"
+msgstr "File incompleto. Continuare comunque?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
+msgid "Finishing movements"
+msgstr "Finaliz. spostamenti"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
+msgid "First layer cal."
+msgstr "Cal. primo strato"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:5046
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Per primo avviero l'autotest per controllare gli errori di assemblaggio piu comuni."
+
+# 
+#: mmu.cpp:727
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Risolvere il problema e premere il bottone sull'unita MMU. "
+
+# MSG_FLOW
+#: ultralcd.cpp:7125
+msgid "Flow"
+msgstr "Flusso"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2156
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:71
+msgid "Front print fan?"
+msgstr "Ventola frontale?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3266
+msgid "Front side[um]"
+msgstr "Fronte [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8333
+msgid "Front/left fans"
+msgstr "Ventola frontale/sinistra"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8263
+msgid "Heater/Thermistor"
+msgstr "Riscald./Termist."
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9440
+msgid "Heating disabled by safety timer."
+msgstr "Riscaldamento fermato dal timer di sicurezza."
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:43
+msgid "Heating done."
+msgstr "Riscald. completo"
+
+# MSG_HEATING
+#: messages.c:42
+msgid "Heating"
+msgstr "Riscaldamento..."
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:5025
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Ciao, sono la tua stampante Original Prusa i3. Gradiresti un aiuto nel processo di configurazione?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2157
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:34
+msgid "Change filament"
+msgstr "Cambia filamento"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2620
+msgid "Change success!"
+msgstr "Cambio riuscito!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2697
+msgid "Changed correctly?"
+msgstr "Cambio corretto?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:77
+msgid "Checking bed     "
+msgstr "Verifica piano"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8668
+msgid "Checking endstops"
+msgstr "Verifica finecorsa"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8674
+msgid "Checking hotend  "
+msgstr "Verifica ugello"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:78
+msgid "Checking sensors "
+msgstr "Controllo sensori"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7482
+msgid "Checking X axis  "
+msgstr "Verifica asse X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7491
+msgid "Checking Y axis  "
+msgstr "Verifica asse Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8671
+msgid "Checking Z axis  "
+msgstr "Verifica asse Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:45
+msgid "Choose extruder:"
+msgstr "Seleziona estrusore:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:46
+msgid "Choose filament:"
+msgstr "Scegliere filamento:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:27
+msgid "Filament"
+msgstr "Filamento"
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:5055
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:5063
+msgid "I will run z calibration now."
+msgstr "Adesso avviero la Calibrazione Z."
+
+# MSG_WATCH
+#: messages.c:97
+msgid "Info screen"
+msgstr "Schermata info"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2605
+msgid "Insert filament"
+msgstr "Inserire filamento"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4835
+msgid "Is filament loaded?"
+msgstr "Il filamento e' stato caricato?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:90
+msgid "Is steel sheet on heatbed?"
+msgstr "Piastra d'acciaio su piano riscaldato?"
+
+# 
+#: ultralcd.cpp:1727
+msgid "Last print failures"
+msgstr "Fallimenti ultima stampa"
+
+# 
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Se hai piastre d'acciaio aggiuntive, calibra i preset in Impostazioni - Setup HW - Piastre in Acciaio."
+
+# 
+#: ultralcd.cpp:1704
+msgid "Last print"
+msgstr "Ultima stampa"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:72
+msgid "Left hotend fan?"
+msgstr "Vent SX hotend?"
+
+# 
+#: ultralcd.cpp:2993
+msgid "Left"
+msgstr "Sinistra"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3264
+msgid "Left side [um]"
+msgstr "Sinistra [um]"
+
+# 
+#: ultralcd.cpp:5766
+msgid "Lin. correction"
+msgstr "Correzione lineare"
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Compensazione Z"
+
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Inserire filamento (senza caricarlo) nell'estrusore e premere la manopola."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:47
+msgid "Load filament"
+msgstr "Carica filamento"
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2645
+msgid "Loading color"
+msgstr "Caricando colore"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:48
+msgid "Loading filament"
+msgstr "Caricando filamento"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8317
+msgid "Loose pulley"
+msgstr "Puleggia lenta"
+
+# 
+#: ultralcd.cpp:6944
+msgid "Load to nozzle"
+msgstr "Carica ugello"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
+msgid "M117 First layer cal."
+msgstr "M117 Calibr. primo strato"
+
+# MSG_MAIN
+#: messages.c:52
+msgid "Main"
+msgstr "Menu principale"
+
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Liv. Chiaro"
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr "Liv. Scuro"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:55
+msgid "Measuring reference height of calibration point"
+msgstr "Misura altezza di rif. del punto di calib."
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:5856
+msgid "Mesh Bed Leveling"
+msgstr "Liv. grilia piano"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:765
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. riprendendo la posizione... "
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:758
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Ripristino temperatura... "
+
+# 
+#: ultralcd.cpp:3034
+msgid "Measured skew"
+msgstr "Deviazione mis"
+
+# 
+#: ultralcd.cpp:1728
+msgid "MMU fails"
+msgstr "Fallimenti MMU"
+
+# 
+#: mmu.cpp:1588
+msgid "MMU load failed     "
+msgstr "Caricamento MMU fallito"
+
+# 
+#: ultralcd.cpp:1729
+msgid "MMU load fails"
+msgstr "Caricamenti MMU falliti"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:776
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Riprendendo... "
+
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Mod."
+
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Firmware MK3 rilevato su stampante MK3S"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr "Normale"
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Silenzioso"
+
+# 
+#: mmu.cpp:722
+msgid "MMU needs user attention."
+msgstr "Il MMU richiede attenzione dall'utente."
+
+# 
+#: ultralcd.cpp:1755
+msgid "MMU power fails"
+msgstr "Manc. corr. MMU"
+
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Silenziosa"
+
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Auto"
+
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Forte"
+
+# 
+#: ultralcd.cpp:2186
+msgid "MMU2 connected"
+msgstr "MMU2 connessa"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:79
+msgid "Motor"
+msgstr "Motore"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5741
+msgid "Move axis"
+msgstr "Muovi asse"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4361
+msgid "Move X"
+msgstr "Sposta X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4362
+msgid "Move Y"
+msgstr "Sposta Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4363
+msgid "Move Z"
+msgstr "Sposta Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5541
+msgid "No move."
+msgstr "Nessun movimento."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6911
+msgid "No SD card"
+msgstr "Nessuna SD"
+
+# MSG_NA
+#: messages.c:107
+msgid "N/A"
+msgstr "N/D"
+
+# MSG_NO
+#: messages.c:58
+msgid "No"
+msgstr ""
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8265
+msgid "Not connected"
+msgstr "Non connesso"
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Nuova versione firmware disponibile:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:75
+msgid "Not spinning"
+msgstr "Non gira"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4946
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Adesso calibro la distanza fra ugello e superfice del piatto."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:5071
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Adesso preriscaldero l'ugello per PLA."
+
+# MSG_NOZZLE
+#: messages.c:59
+msgid "Nozzle"
+msgstr "Ugello"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
+
+# 
+#: ultralcd.cpp:5062
+msgid "Now remove the test print from steel sheet."
+msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio."
+
+# 
+#: ultralcd.cpp:1654
+msgid "Nozzle FAN"
+msgstr "Ventola estrusore"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6875
+msgid "Pause print"
+msgstr "Metti in pausa"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1539
+msgid "PID cal.           "
+msgstr "Calibrazione PID"
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1545
+msgid "PID cal. finished"
+msgstr "Calib. PID completa"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5862
+msgid "PID calibration"
+msgstr "Calibrazione PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:896
+msgid "PINDA Heating"
+msgstr "Riscaldamento PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:60
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Posizionare un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere subito la stampante."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5128
+msgid "Please clean heatbed and then press the knob."
+msgstr "Per favore pulisci il piatto, poi premi la manopola."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:21
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Pulire l'ugello per la calibrazione, poi fare click."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8257
+msgid "Please check :"
+msgstr "Verifica:"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:98
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3138
+msgid "Please open idler and remove filament manually."
+msgstr "Aprire la guida filam. e rimuovere il filam. a mano"
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:61
+msgid "Please place steel sheet on heatbed."
+msgstr "Per favore posizionate la piastra d'acciaio sul piano riscaldato."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:64
+msgid "Please press the knob to unload filament"
+msgstr "Premete la manopola per scaricare il filamento "
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:66
+msgid "Please pull out filament immediately"
+msgstr "Estrarre il filamento immediatamente"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1422
+msgid "Please remove filament and then press the knob."
+msgstr "Rimuovi il filamento e quindi premi la manopola. "
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:70
+msgid "Please remove steel sheet from heatbed."
+msgstr "Rimuovete la piastra di acciaio dal piano riscaldato"
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4583
+msgid "Please run XYZ calibration first."
+msgstr "Esegui la calibrazione XYZ prima. "
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1341
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Aggiorna il firmware sul tuo MMU2. In attesa di reset. "
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:62
+msgid "Please wait"
+msgstr "Attendere"
+
+# 
+#: ultralcd.cpp:5061
+msgid "Please remove shipping helpers first."
+msgstr "Per favore rimuovete i materiali da spedizione"
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:63
+msgid "Preheat the nozzle!"
+msgstr "Prerisc. ugello!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6853
+msgid "Preheat"
+msgstr "Preriscalda"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:100
+msgid "Preheating nozzle. Please wait."
+msgstr "Preriscaldando l'ugello. Attendere prego."
+
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Prego aggiornare."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11526
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Premete la manopola per preriscaldare l'ugello e continuare."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr "Pausa"
+
+# 
+#: ultralcd.cpp:1783
+msgid "Power failures"
+msgstr "Mancanza corrente"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:65
+msgid "Print aborted"
+msgstr "Stampa interrotta"
+
+#  c=20
+#: ultralcd.cpp:2442
+msgid "Preheating to load"
+msgstr "Preriscald. carico"
+
+#  c=20
+#: ultralcd.cpp:2446
+msgid "Preheating to unload"
+msgstr "Preriscald. scarico"
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8689
+msgid "Print fan:"
+msgstr "Vent.stam:"
+
+# MSG_CARD_MENU
+#: messages.c:20
+msgid "Print from SD"
+msgstr "Stampa da SD"
+
+# 
+#: ultralcd.cpp:2289
+msgid "Press the knob"
+msgstr "Premere la manopola"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1118
+msgid "Print paused"
+msgstr "Stampa in pausa"
+
+# 
+#: mmu.cpp:726
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Premete la manopola per recuperare la temperatura dell'ugello."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:38
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Stampante non ancora calibrata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione."
+
+# 
+#: ultralcd.cpp:1655
+msgid "Print FAN"
+msgstr "Ventola di stampa"
+
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Inserisci il filamento nell'estrusore, poi premi la manopola per caricarlo."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Per favore inserisci il filamento nel primo tubo del MMU, poi premi la manopola per caricarlo."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Per favore prima carica il filamento."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2155
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3267
+msgid "Rear side [um]"
+msgstr "Retro [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Scaricare prima il filamento, poi ripetere l'operazione."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
+msgid "Recovering print    "
+msgstr "Recupero stampa     "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5867
+msgid "Reset XYZ calibr."
+msgstr "Reset calibrazione XYZ."
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:3268
+msgid "Reset"
+msgstr ""
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:6861
+msgid "Resume print"
+msgstr "Riprendi stampa"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
+msgid "Resuming print"
+msgstr "Riprendi stampa"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3265
+msgid "Right side[um]"
+msgstr "Destra [um]"
+
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr "Porta RPi"
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4864
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?"
+
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "Mem. SD"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2994
+msgid "Right"
+msgstr "Destra"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:35
+msgid "Searching bed calibration point"
+msgstr "Ricerca dei punti di calibrazione del piano"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5779
+msgid "Select language"
+msgstr "Seleziona lingua"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7812
+msgid "Self test OK"
+msgstr "Autotest OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7582
+msgid "Self test start  "
+msgstr "Avvia autotest"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5843
+msgid "Selftest         "
+msgstr "Autotest         "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8255
+msgid "Selftest error !"
+msgstr "Errore Autotest !"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:73
+msgid "Selftest failed  "
+msgstr "Autotest fallito"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1550
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Verra effettuato un self test per calibrare l'homing senza sensori"
+
+# 
+#: ultralcd.cpp:5102
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3286
+msgid "Set temperature:"
+msgstr "Imposta temperatura"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:82
+msgid "Settings"
+msgstr "Impostazioni"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
+msgid "Show end stops"
+msgstr "Stato finecorsa"
+
+# 
+#: ultralcd.cpp:4008
+msgid "Sensor state"
+msgstr "Stato sensore"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
+
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Ordina"
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Nessuno"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Cron."
+
+# 
+#: ultralcd.cpp:3037
+msgid "Severe skew:"
+msgstr "Devia.grave:"
+
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Alfabeti"
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:745
+msgid "Sorting files"
+msgstr "Ordinando i file"
+
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Forte"
+
+# 
+#: ultralcd.cpp:3036
+msgid "Slight skew:"
+msgstr "Devia.lieve:"
+
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Suono"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr "Esaurim"
+
+# 
+#: Marlin_main.cpp:5101
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Sono stati rilevati problemi, avviato livellamento Z ..."
+
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Singolo"
+
+# MSG_SPEED
+#: ultralcd.cpp:7119
+msgid "Speed"
+msgstr "Velocita"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:76
+msgid "Spinning"
+msgstr "Gira"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4596
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Sono necessari una temperatura ambiente di 21-26C e una superficie rigida "
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6978
+msgid "Statistics  "
+msgstr "Statistiche"
+
+# MSG_STOP_PRINT
+#: messages.c:91
+msgid "Stop print"
+msgstr "Arresta stampa"
+
+# MSG_STOPPED
+#: messages.c:92
+msgid "STOPPED. "
+msgstr "ARRESTATO."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6987
+msgid "Support"
+msgstr "Supporto"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8335
+msgid "Swapped"
+msgstr "Scambiato"
+
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Seleziona il filamento:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Calib. temp."
+
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Seleziona la temperatura appropriata per il tuo materiale."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5873
+msgid "Temp. calibration"
+msgstr "Calib. Temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3933
+msgid "Temperature calibration failed"
+msgstr "Calibrazione temperatura fallita"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:94
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
+
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensore verificato, rimuovere il filamento."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5739
+msgid "Temperature"
+msgstr ""
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2218
+msgid "Temperatures"
+msgstr "Temperature"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
+
+# 
+#: ultralcd.cpp:2891
+msgid "Total filament"
+msgstr "Filamento totale"
+
+# 
+#: ultralcd.cpp:2892
+msgid "Total print time"
+msgstr "Tempo stampa totale"
+
+# MSG_TUNE
+#: ultralcd.cpp:6850
+msgid "Tune"
+msgstr "Regola"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Scarica"
+
+# 
+#: ultralcd.cpp:1752
+msgid "Total failures"
+msgstr "Totale fallimenti"
+
+# 
+#: ultralcd.cpp:2296
+msgid "to load filament"
+msgstr "per caricare il filamento"
+
+# 
+#: ultralcd.cpp:2300
+msgid "to unload filament"
+msgstr "per scaricare il filamento"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:95
+msgid "Unload filament"
+msgstr "Scarica filamento"
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:96
+msgid "Unloading filament"
+msgstr "Scaricando filamento"
+
+# 
+#: ultralcd.cpp:1705
+msgid "Total"
+msgstr "Totale"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:6001
+msgid "Used during print"
+msgstr "Usati nella stampa"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2221
+msgid "Voltages"
+msgstr "Voltaggi"
+
+# 
+#: ultralcd.cpp:2194
+msgid "unknown"
+msgstr "sconosciuto"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5511
+msgid "Wait for user..."
+msgstr "Attendendo utente..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3434
+msgid "Waiting for nozzle and bed cooling"
+msgstr "In attesa del raffreddamento dell'ugello e del piano"
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3395
+msgid "Waiting for PINDA probe cooling"
+msgstr "In attesa del raffreddamento della sonda PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Usate lo scaricamento per rimuovere il filamento 1 se protrude dal retro del tubo posteriore del MMu. Utilizzate l'espulsione se e nascosto nel tubo."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1510
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Attenzione: tipo di stampante e di scheda madre cambiati."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1502
+msgid "Warning: motherboard type changed."
+msgstr "Avviso: tipo di scheda madre cambiato"
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1506
+msgid "Warning: printer type changed."
+msgstr "Avviso: tipo di stampante cambiato."
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3128
+msgid "Was filament unload successful?"
+msgstr "Filamento scaricato con successo?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:81
+msgid "Wiring error"
+msgstr "Errore cablaggio"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5834
+msgid "Wizard"
+msgstr ""
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
+msgid "XYZ cal. details"
+msgstr "XYZ Cal. dettagli"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
+
+# MSG_YES
+#: messages.c:102
+msgid "Yes"
+msgstr "Si"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:101
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "E possibile riprendere il Wizard in qualsiasi momento attraverso Calibrazione -> Wizard."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3904
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Calibrazione XYZ corretta. La distorsione verra compensata automaticamente."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3901
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
+msgid "X-correct:"
+msgstr "Correzione-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3898
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3882
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3885
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6261
+msgid "Load all"
+msgstr "Caricare tutti"
+
+# 
+#: ultralcd.cpp:3864
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul piano non e' stato trovato."
+
+# 
+#: ultralcd.cpp:3870
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
+
+# 
+#: ultralcd.cpp:3873
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
+
+# 
+#: ultralcd.cpp:2991
+msgid "Y distance from min"
+msgstr "Distanza Y dal min"
+
+# 
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Verifica fallita, rimuovere il filamento e riprovare."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
+msgid "Y-correct:"
+msgstr "Correzione-Y:"
+
+# MSG_OFF
+#: messages.c:105
+msgid "Off"
+msgstr ""
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr ""
+
+# 
+#: messages.c:53
+msgid "Back"
+msgstr "Indietro"
+
+# 
+#: ultralcd.cpp:5724
+msgid "Checks"
+msgstr "Controlli"
+
+# 
+#: ultralcd.cpp:8349
+msgid "False triggering"
+msgstr "Falso innesco"
+
+# 
+#: ultralcd.cpp:4013
+msgid "FINDA:"
+msgstr ""
+
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Esatto"
+
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Avviso"
+
+# 
+#: messages.c:83
+msgid "HW Setup"
+msgstr "Impostazioni HW"
+
+# 
+#: ultralcd.cpp:4017
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Comp. Magneti"
+
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr "Griglia"
+
+# 
+#: ultralcd.cpp:5763
+msgid "Mesh bed leveling"
+msgstr "Liv. griglia piano"
+
+# 
+#: Marlin_main.cpp:872
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Firmware MK3S rilevato su stampante MK3"
+
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "Mod. MMU"
+
+# 
+#: ultralcd.cpp:4494
+msgid "Mode change in progress ..."
+msgstr "Cambio modalita in corso ..."
+
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr "Modello"
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Diam.Ugello"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-code processato per un livello diverso. Continuare?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "G-code processato per un livello diverso. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
+
+# 
+#: util.cpp:431
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code processato per una stampante diversa. Continuare?"
+
+# 
+#: util.cpp:437
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "G-code processato per una stampante diversa. Per favore esegui nuovamente lo slice del modello. Stampa annullata."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code processato per un firmware piu recente. Continuare?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "G-code processato per un firmware piu recente. Per favore aggiorna il firmware. Stampa annullata."
+
+# 
+#: ultralcd.cpp:4009
+msgid "PINDA:"
+msgstr ""
+
+#  c=20
+#: ultralcd.cpp:2452
+msgid "Preheating to cut"
+msgstr "Preriscalda. taglio"
+
+#  c=20
+#: ultralcd.cpp:2449
+msgid "Preheating to eject"
+msgstr "Preriscalda. espuls."
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Diametro ugello diverso da G-Code. Continuare?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
+
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr "atteso livello %s"
+
+# 
+#: ultralcd.cpp:6814
+msgid "Rename"
+msgstr "Rinomina"
+
+# 
+#: ultralcd.cpp:6807
+msgid "Select"
+msgstr "Seleziona"
+
+# 
+#: ultralcd.cpp:2212
+msgid "Sensor info"
+msgstr "Info Sensore"
+
+# MSG_SHEET c=10
+#: messages.c:54
+msgid "Sheet"
+msgstr "Piano"
+
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr "Assist."
+
+#  c=18
+#: ultralcd.cpp:5722
+msgid "Steel sheets"
+msgstr "Piani d'acciaio"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
+msgid "Z-correct:"
+msgstr "Correzione-Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Nr. Z-test"
+

+ 631 - 576
lang/po/Firmware_nl.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: nl\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:24:02 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:24:02 PM\n"
+"POT-Creation-Date: Wed Sep 9 11:32:59 CEST 2020\n"
+"PO-Revision-Date: Wed Sep 9 11:32:59 CEST 2020\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,18 +20,28 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Z instell.\x0awaarde ingesteld,\x0averder of bij 0\x0abeginen?\x0a%cVerder%cReset"
 
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 of ouder"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 of nieuwer"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
+#: messages.c:36
 msgid " of 4"
 msgstr " van 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
+#: messages.c:56
 msgid " of 9"
 msgstr " van 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
+#: ultralcd.cpp:3062
 msgid "[0;0] point offset"
 msgstr "[0;0] punt offset"
 
@@ -46,777 +56,822 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "WARNING:\x0aCrashdetectie\x0auitgeschakeld in\x0aStealth stand"
 
 # 
-#: ultralcd.cpp:2470
+#: ultralcd.cpp:2451
 msgid ">Cancel"
 msgstr ">Annuleren"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
+#: ultralcd.cpp:3182
 msgid "Adjusting Z:"
 msgstr "Z is ingesteld:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
+#: ultralcd.cpp:8703
 msgid "All correct      "
 msgstr "Allemaal goed    "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
+#: messages.c:99
 msgid "All is done. Happy printing!"
 msgstr "Klaar. Happy printing!"
 
 # 
-#: ultralcd.cpp:1993
+#: ultralcd.cpp:1956
 msgid "Ambient"
-msgstr "EINSY  "
+msgstr "Kamertemp."
 
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2607
 msgid "and press the knob"
 msgstr "en druk op knop"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
+#: ultralcd.cpp:3504
 msgid "Are left and right Z~carriages all up?"
 msgstr "Zijn beide Z wagen heelemaal boven?"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin   [aan]"
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/V]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [uit]"
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
 msgid "Auto home"
 msgstr "Startpositie"
 
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6992
 msgid "AutoLoad filament"
-msgstr "Auto-Laden Filament"
+msgstr "Autoladen Filament"
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
+#: ultralcd.cpp:4441
 msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Autoloading filament alleen beschikbaar wanneer filamentsensor is ingeschakeld ..."
+msgstr "Auto. laden van fil. is enkel beschikbaar wanneer fil.sensor is ingeschakeld ..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
+#: ultralcd.cpp:2802
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Automatisch laden van flament is actief, druk de knop en laad filament..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
+#: ultralcd.cpp:8370
 msgid "Axis length"
 msgstr "Aslengte"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
+#: ultralcd.cpp:8372
 msgid "Axis"
 msgstr "As"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
+#: ultralcd.cpp:8314
 msgid "Bed / Heater"
 msgstr "Bed / Verwarming"
 
 # MSG_BED_DONE
-#: messages.c:16
+#: messages.c:15
 msgid "Bed done"
 msgstr "Bed klaar"
 
 # MSG_BED_HEATING
-#: messages.c:17
+#: messages.c:16
 msgid "Bed Heating"
 msgstr "Bed opwarmen"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
+#: ultralcd.cpp:5888
 msgid "Bed level correct"
 msgstr "Bed niveau correct"
 
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5868
+msgid "Belt test        "
+msgstr "Riemtest       "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr "Bed leveling mislukt. Sensor heeft niet geactiveerd. Puin op tuit? Wacht op reset."
 
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Helder"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Helderheid"
+
 # MSG_BED
-#: messages.c:15
+#: messages.c:14
 msgid "Bed"
 msgstr "Bed"
 
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
 msgid "Belt status"
 msgstr "Riem status"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
+#: messages.c:67
 msgid "Blackout occurred. Recover print?"
 msgstr "Stroomstoring. Print herstellen?"
 
 # 
-#: ultralcd.cpp:8404
+#: ultralcd.cpp:8705
 msgid "Calibrating home"
 msgstr "Kalibreren start"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
+#: ultralcd.cpp:5877
 msgid "Calibrate XYZ"
 msgstr "Kalibratie XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:48
+#: messages.c:44
 msgid "Calibrate Z"
 msgstr "Kalibratie Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
+#: ultralcd.cpp:4633
 msgid "Calibrate"
 msgstr "Kalibreren"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3467
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibreren van XYZ. Draai de knop om de Z-wagen omhoog te gaan tot het einde stoppers. Druk knop als klaar."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
+#: messages.c:19
 msgid "Calibrating Z"
 msgstr "Kalibrere Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3467
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibreren van Z. Draai de knop om de Z-wagen omhoog te gaan tot het einde stoppers. Druk knop als klaar."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
+#: ultralcd.cpp:865
 msgid "Calibration done"
 msgstr "Kalibratie klaar"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:61
+#: messages.c:57
 msgid "Calibration"
 msgstr "Kalibratie"
 
 # 
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:4811
 msgid "Cancel"
 msgstr "Annuleren"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:8812
+#: ultralcd.cpp:9141
 msgid "Card removed"
 msgstr "SD verwijderd"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2719
+#: ultralcd.cpp:2707
 msgid "Color not correct"
 msgstr "Kleur niet juist"
 
 # MSG_COOLDOWN
-#: messages.c:23
+#: messages.c:22
 msgid "Cooldown"
 msgstr "Afkoelen"
 
 # 
-#: ultralcd.cpp:4584
+#: ultralcd.cpp:4566
 msgid "Copy selected language?"
 msgstr "Geselecteerde taal kopieren?"
 
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Crashdet.   [aan]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Crashdet.   [N/V]"
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Crashdet."
 
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Crashdet.   [uit]"
+# 
+#: ultralcd.cpp:4946
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Kies een filament voor de kalibratie van de eerste laag en selecteer deze in het schermmenu."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
+#: messages.c:23
 msgid "Crash detected."
 msgstr "Crash gedetecteerd."
 
 # 
-#: Marlin_main.cpp:596
+#: Marlin_main.cpp:605
 msgid "Crash detected. Resume print?"
 msgstr "Crash gedetecteerd. Print voorzetten?"
 
 # 
-#: ultralcd.cpp:1837
+#: ultralcd.cpp:1785
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
+#: ultralcd.cpp:6032
 msgid "Current"
 msgstr "Actueel"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
+#: ultralcd.cpp:2164
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
+#: ultralcd.cpp:5768
 msgid "Disable steppers"
 msgstr "Motoren uit"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
+#: messages.c:13
 msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 msgstr "Afstand tussen tip van de tuit en het print oppervlak is nog niet vastgesteld. Volg de handleiding, First steps, sectie First layer calibration."
 
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
+#: ultralcd.cpp:5121
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Wilt u de laatste stap herhalen om de afstand tussen de tuit en de bed opnieuw in te stellen?"
 
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5190
 msgid "E-correct:"
 msgstr "E-correctie:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
+#: messages.c:49
 msgid "Eject filament"
 msgstr "Fil. uitwerpen"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
+#: mmu.cpp:1416
 msgid "Ejecting filament"
 msgstr "Werp filament uit"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8338
 msgid "Endstop not hit"
 msgstr "Endstop niet geraakt"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
+#: ultralcd.cpp:8332
 msgid "Endstop"
 msgstr "Eindstop"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
+#: ultralcd.cpp:8320
 msgid "Endstops"
 msgstr "Eindstops"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
+#: ultralcd.cpp:7029
 msgid "Error - static memory has been overwritten"
 msgstr "Fout - het statische geheugen is overschreven"
 
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Fil. knippen"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Mes"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Knippe filament"
+
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
+#: ultralcd.cpp:4454
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "FOUT: Filamentsensor reageert niet, controleer de verbinding."
 
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr ""
+
 # MSG_ERROR
-#: messages.c:28
+#: messages.c:25
 msgid "ERROR:"
 msgstr "FOUT:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
+#: ultralcd.cpp:8712
 msgid "Extruder fan:"
 msgstr "Extruder fan:"
 
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2201
 msgid "Extruder info"
-msgstr "Extruder Info"
+msgstr ""
 
 # MSG_MOVE_E
-#: messages.c:29
+#: messages.c:26
 msgid "Extruder"
 msgstr "Extruder"
 
 # 
-#: ultralcd.cpp:6952
+#: ultralcd.cpp:7016
 msgid "Fail stats MMU"
 msgstr "MMU-Fouten"
 
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "F.autoladen [aan]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "F.autoladen [N/V]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "F.autoladen [uit]"
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "F. autoladen"
 
 # 
-#: ultralcd.cpp:6949
+#: ultralcd.cpp:7013
 msgid "Fail stats"
 msgstr "Foutstatistieken"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:31
+#: messages.c:28
 msgid "Fan speed"
 msgstr "Fan snelh."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:78
+#: messages.c:74
 msgid "Fan test"
 msgstr "Fan test"
 
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Fans check  [aan]"
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5776
+msgid "Fans check"
+msgstr "Fans check"
 
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Fans check  [uit]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Fil. sensor [aan]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Fil. sensor [N/V]"
-
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Fil. sensor [uit]"
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr ""
 
-# 
-#: ultralcd.cpp:1836
+#  c=14
+#: ultralcd.cpp:1784
 msgid "Filam. runouts"
 msgstr "Fil. fouten"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
+#: messages.c:29
 msgid "Filament extruding & with correct color?"
 msgstr "Filament extrudeert met de juiste kleur?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
+#: ultralcd.cpp:2703
 msgid "Filament not loaded"
 msgstr "Fil. niet geladen"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
+#: messages.c:80
 msgid "Filament sensor"
 msgstr "Filamentsensor"
 
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2867
 msgid "Filament used"
 msgstr "Gebruikte filament"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
+#: ultralcd.cpp:2868
 msgid "Print time"
 msgstr "Print tijd"
 
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "FS actie"
+
+#  c=18
+#: Marlin_main.cpp:9469
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 of nieuwer"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8840
 msgid "File incomplete. Continue anyway?"
 msgstr "Bestand onvolledig. Toch doorgaan?"
 
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
 msgid "Finishing movements"
 msgstr "Voortgang afwerken"
 
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
 msgid "First layer cal."
 msgstr "Eerste laag kal."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:5042
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Ten eerste zullen we de zelftest uitvoeren om de meest voorkomende montageproblemen te controleren."
 
 # 
-#: mmu.cpp:724
+#: mmu.cpp:727
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Los het probleem op en druk vervolgens op de knop op de MMU-eenheid."
 
 # MSG_FLOW
-#: ultralcd.cpp:7038
+#: ultralcd.cpp:7156
 msgid "Flow"
 msgstr "Stromen"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
+#: ultralcd.cpp:2157
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
+#: messages.c:71
 msgid "Front print fan?"
 msgstr "Voorzijde fan?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
+#: ultralcd.cpp:3264
 msgid "Front side[um]"
 msgstr "Voorkant  [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
+#: ultralcd.cpp:8378
 msgid "Front/left fans"
 msgstr "Fans voor/links"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
+#: ultralcd.cpp:8308
 msgid "Heater/Thermistor"
 msgstr "Verwarmer/Therm."
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
+#: Marlin_main.cpp:9460
 msgid "Heating disabled by safety timer."
 msgstr "Verwarming uitgeschakeld door veiligheidstimer."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:47
+#: messages.c:43
 msgid "Heating done."
 msgstr "Opwarmen klaar."
 
 # MSG_HEATING
-#: messages.c:46
+#: messages.c:42
 msgid "Heating"
 msgstr "Opwarmen"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
+#: ultralcd.cpp:5021
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Hallo, ik ben uw Original Prusa i3 printer. Zullen we beginnen met het installatieproces?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
+#: ultralcd.cpp:2158
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:37
+#: messages.c:34
 msgid "Change filament"
 msgstr "Wissel filament"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
+#: ultralcd.cpp:2618
 msgid "Change success!"
 msgstr "Wissel geslaagd!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
+#: ultralcd.cpp:2695
 msgid "Changed correctly?"
 msgstr "Wissel ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
+#: messages.c:77
 msgid "Checking bed     "
 msgstr "Controleer bed   "
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
+#: ultralcd.cpp:8694
 msgid "Checking endstops"
 msgstr "Controleer endstops"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
+#: ultralcd.cpp:8700
 msgid "Checking hotend  "
 msgstr "Controleer hotend"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
+#: messages.c:78
 msgid "Checking sensors "
 msgstr "Controleer sensors"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
+#: ultralcd.cpp:7513
 msgid "Checking X axis  "
 msgstr "Controleer X as  "
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
+#: ultralcd.cpp:7522
 msgid "Checking Y axis  "
 msgstr "Controleer Y as  "
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
+#: ultralcd.cpp:8697
 msgid "Checking Z axis  "
 msgstr "Controleer Z as  "
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
+#: messages.c:45
 msgid "Choose extruder:"
 msgstr "Kies extruder:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
+#: messages.c:46
 msgid "Choose filament:"
 msgstr "Kies filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:30
+#: messages.c:27
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
+#: ultralcd.cpp:5051
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Begin nu met xyz-kalibratie. Het duurt ongeveer 12 min."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
+#: ultralcd.cpp:5059
 msgid "I will run z calibration now."
 msgstr "Begin nu met z-kalibratie."
 
 # MSG_WATCH
-#: messages.c:99
+#: messages.c:97
 msgid "Info screen"
 msgstr "Info scherm"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
+#: ultralcd.cpp:2603
 msgid "Insert filament"
 msgstr "Voer filament in"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
+#: ultralcd.cpp:4831
 msgid "Is filament loaded?"
 msgstr "Is filament geladen?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
+#: messages.c:90
 msgid "Is steel sheet on heatbed?"
 msgstr "Ligt de staalplaat op het bed?"
 
 # 
-#: ultralcd.cpp:1779
+#: ultralcd.cpp:1727
 msgid "Last print failures"
 msgstr "Laatste printfouten"
 
 # 
-#: ultralcd.cpp:1756
+#: ultralcd.cpp:5129
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Als u extra staalplaten hebt, kalibreert u hun voorinstellingen in Instellingen - HW Setup - Staalplaten."
+
+# 
+#: ultralcd.cpp:1704
 msgid "Last print"
 msgstr "Laatste print"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
+#: messages.c:72
 msgid "Left hotend fan?"
 msgstr "Linker hotend fan?"
 
 # 
-#: ultralcd.cpp:3011
+#: ultralcd.cpp:2991
 msgid "Left"
 msgstr "Links"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
+#: ultralcd.cpp:3262
 msgid "Left side [um]"
 msgstr "Linkerkant[um]"
 
 # 
-#: ultralcd.cpp:5747
+#: ultralcd.cpp:5791
 msgid "Lin. correction"
 msgstr "Lineaire correctie"
 
 # MSG_BABYSTEP_Z
-#: messages.c:13
+#: messages.c:12
 msgid "Live adjust Z"
 msgstr "Live Z aanpassen"
 
+#  c=20 r=6
+#: ultralcd.cpp:7558
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Steek a.u.b. filament (maar niet laden) in de extruder en druk op knop."
+
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:51
+#: messages.c:47
 msgid "Load filament"
 msgstr "Filament laden"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2643
 msgid "Loading color"
 msgstr "Laden kleur"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:52
+#: messages.c:48
 msgid "Loading filament"
 msgstr "Laden filament"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
+#: ultralcd.cpp:8362
 msgid "Loose pulley"
 msgstr "Losse riemschijf"
 
 # 
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6975
 msgid "Load to nozzle"
 msgstr "Tot tuit laden"
 
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
 msgid "M117 First layer cal."
-msgstr "M117 eerste laag kal."
+msgstr "M117 Eerste laag kal."
 
 # MSG_MAIN
-#: messages.c:56
+#: messages.c:52
 msgid "Main"
 msgstr "Hoofdmenu"
 
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Helder waard"
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr "Dim waarde"
+
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
+#: messages.c:55
 msgid "Measuring reference height of calibration point"
 msgstr "Referentie hoogte van het kalibratiepunt meten"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
+#: ultralcd.cpp:5883
 msgid "Mesh Bed Leveling"
 msgstr "Mesh bed Leveling"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
+#: mmu.cpp:765
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Positie hervatten..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
+#: mmu.cpp:758
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Temperatuur hervatten..."
 
 # 
-#: ultralcd.cpp:3052
+#: ultralcd.cpp:3032
 msgid "Measured skew"
 msgstr "Scheefheid"
 
 # 
-#: ultralcd.cpp:1780
+#: ultralcd.cpp:1728
 msgid "MMU fails"
 msgstr "MMU fout"
 
 # 
-#: mmu.cpp:1592
+#: mmu.cpp:1588
 msgid "MMU load failed     "
 msgstr "MMU laden mislukt   "
 
 # 
-#: ultralcd.cpp:1781
+#: ultralcd.cpp:1729
 msgid "MMU load fails"
 msgstr "MMU laadfout"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
+#: mmu.cpp:776
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Hervatten..."
 
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Stand   [Normaal]"
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Stand"
 
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Stand      [stil]"
+#  c=20 r=3
+#: Marlin_main.cpp:884
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "MK3-firmware bij MK3S-printer gedetecteerd"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr "Normaal"
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Stil"
 
 # 
-#: mmu.cpp:719
+#: mmu.cpp:722
 msgid "MMU needs user attention."
 msgstr "MMU heeft gebruikersaandacht nodig."
 
 # 
-#: ultralcd.cpp:1807
+#: ultralcd.cpp:1755
 msgid "MMU power fails"
 msgstr "MMU stroomstor."
 
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Stand   [Stealth]"
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr ""
 
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Mode[automatisch]"
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr ""
 
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Stand      [hoog]"
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Hoog verm."
 
 # 
-#: ultralcd.cpp:2203
+#: ultralcd.cpp:2176
 msgid "MMU2 connected"
 msgstr "MMU2 verbonden"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:83
+#: messages.c:79
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
+#: ultralcd.cpp:5766
 msgid "Move axis"
 msgstr "As verplaatsen"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4375
+#: ultralcd.cpp:4357
 msgid "Move X"
 msgstr "Verplaats X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4376
+#: ultralcd.cpp:4358
 msgid "Move Y"
 msgstr "Verplaats Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4377
+#: ultralcd.cpp:4359
 msgid "Move Z"
 msgstr "Verplaats Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5293
+#: Marlin_main.cpp:5550
 msgid "No move."
 msgstr "Geen beweging."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6878
+#: ultralcd.cpp:6942
 msgid "No SD card"
 msgstr "Geen SD kaart"
 
-# 
-#: ultralcd.cpp:3017
+# MSG_NA
+#: messages.c:107
 msgid "N/A"
 msgstr "N/V"
 
 # MSG_NO
-#: messages.c:62
+#: messages.c:58
 msgid "No"
 msgstr "Nee"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
+#: ultralcd.cpp:8310
 msgid "Not connected"
 msgstr "Niet verbonden"
 
@@ -826,527 +881,572 @@ msgid "New firmware version available:"
 msgstr "Nieuwe firmware versie beschikbaar:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
+#: messages.c:75
 msgid "Not spinning"
 msgstr "Beweegt niet"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
+#: ultralcd.cpp:4942
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Begin met kalibratie tussen de tuit en het bed."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
+#: ultralcd.cpp:5067
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Opwarmen van de tuit voor PLA voor."
 
 # MSG_NOZZLE
-#: messages.c:63
+#: messages.c:59
 msgid "Nozzle"
 msgstr "Tuit"
 
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1533
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Oude instellingen gevonden. Standaard PID, E-steps etc. instellingen worden geladen."
 
 # 
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:5058
 msgid "Now remove the test print from steel sheet."
 msgstr "Verwijder nu de testprint van staalplaat."
 
 # 
-#: ultralcd.cpp:1706
+#: ultralcd.cpp:1654
 msgid "Nozzle FAN"
 msgstr "Tuit fan"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
+#: ultralcd.cpp:6906
 msgid "Pause print"
 msgstr "Print pauzeren"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
+#: ultralcd.cpp:1539
 msgid "PID cal.           "
 msgstr "PID kal.           "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
+#: ultralcd.cpp:1545
 msgid "PID cal. finished"
 msgstr "PID kalibratie klaar"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
+#: ultralcd.cpp:5889
 msgid "PID calibration"
 msgstr "PID kalibratie"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
+#: ultralcd.cpp:896
 msgid "PINDA Heating"
 msgstr "PINDA opwarmen"
 
-# MSG_PAPER c=20 r=8
-#: messages.c:64
+# MSG_PAPER c=20 r=10
+#: messages.c:60
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Leg een vel papier onder de tuit tijdens de kalibratie van de eerste 4 punten. Als de tuit het papier beweegt, de printer onmiddellijk uitschakelen."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
+#: ultralcd.cpp:5124
 msgid "Please clean heatbed and then press the knob."
 msgstr "Maak het bed schoon en druk op de knop."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
+#: messages.c:21
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Reinig de tuit voor de kalibratie. Druk op de knop wanneer gereed."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
+#: ultralcd.cpp:8302
 msgid "Please check :"
 msgstr "Controleer aub:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
+#: messages.c:98
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Controleer aub ons handboek en los het probleem op. Hervat vervolgens de wizard door de printer opnieuw te starten."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
+#: Marlin_main.cpp:3152
 msgid "Please open idler and remove filament manually."
 msgstr "Open rondsel en verwijder filament handmatig."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
+#: messages.c:61
 msgid "Please place steel sheet on heatbed."
 msgstr "Leg staalplaat op bed."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
+#: messages.c:64
 msgid "Please press the knob to unload filament"
 msgstr "Druk op de knop om filament te verwijderen"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
+#: messages.c:66
 msgid "Please pull out filament immediately"
 msgstr "Trek onmiddellijk de filament eruit"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
+#: mmu.cpp:1422
 msgid "Please remove filament and then press the knob."
 msgstr "Trek onmiddellijk filament eruit en druk vervolgens op de knop."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
+#: messages.c:70
 msgid "Please remove steel sheet from heatbed."
 msgstr "Verwijder staalplaat van het bed."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
+#: Marlin_main.cpp:4596
 msgid "Please run XYZ calibration first."
 msgstr "Voer eerst de XYZ-kalibratie uit."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
+#: mmu.cpp:1341
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Gelieve de firmware te vernieuwen in uw MMU2. Wacht op reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:66
+#: messages.c:62
 msgid "Please wait"
 msgstr "Even geduld aub"
 
 # 
-#: ultralcd.cpp:5070
+#: ultralcd.cpp:5057
 msgid "Please remove shipping helpers first."
 msgstr "Verwijder eerst de transport beschermers."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
+#: messages.c:63
 msgid "Preheat the nozzle!"
 msgstr "Tuit voorverwarmen!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6825
+#: ultralcd.cpp:6884
 msgid "Preheat"
 msgstr "Voorverwarmen"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
+#: messages.c:100
 msgid "Preheating nozzle. Please wait."
 msgstr "Opwarmen van de tuit. Wacht aub."
 
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
 # 
 #: util.cpp:297
 msgid "Please upgrade."
 msgstr "Voer een upgrade uit."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
+#: Marlin_main.cpp:11563
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Druk op de knop om de tuit voor te verwarmen en door te gaan."
 
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:730
+msgid "Pause"
+msgstr "Pauze"
+
 # 
-#: ultralcd.cpp:1835
+#: ultralcd.cpp:1783
 msgid "Power failures"
 msgstr "Stroomstoringen"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:69
+#: messages.c:65
 msgid "Print aborted"
 msgstr "Print afgebroken"
 
-# 
-#: ultralcd.cpp:2452
+#  c=20
+#: ultralcd.cpp:2433
 msgid "Preheating to load"
 msgstr "Opwarmen invoeren"
 
-# 
-#: ultralcd.cpp:2456
+#  c=20
+#: ultralcd.cpp:2437
 msgid "Preheating to unload"
 msgstr "Opwarmen uitwerpen"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
+#: ultralcd.cpp:8715
 msgid "Print fan:"
 msgstr "Print fan:"
 
 # MSG_CARD_MENU
-#: messages.c:21
+#: messages.c:20
 msgid "Print from SD"
 msgstr "Print van SD"
 
 # 
-#: ultralcd.cpp:2301
+#: ultralcd.cpp:2280
 msgid "Press the knob"
 msgstr "Druk op knop"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
+#: ultralcd.cpp:1118
 msgid "Print paused"
 msgstr "Print pauzeren"
 
 # 
-#: mmu.cpp:723
+#: mmu.cpp:726
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Druk op de knop om de temperatuur van de tuit te hervatten."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
+#: messages.c:38
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Printer is nog niet gekalibreerd. Volg de handleiding, hoofdstuk First steps, sectie Calibration flow."
 
 # 
-#: ultralcd.cpp:1707
+#: ultralcd.cpp:1655
 msgid "Print FAN"
 msgstr "Print fan"
 
+# 
+#: ultralcd.cpp:4922
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Steek a.u.b. filament in de extruder en druk op de knop om het te laden."
+
+# 
+#: ultralcd.cpp:4917
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Steek a.u.b. filament in de eerste buis van de MMU en druk op de knop om het te laden."
+
+# 
+#: ultralcd.cpp:4839
+msgid "Please load filament first."
+msgstr "Laad a.u.b. eerst filament."
+
 # MSG_PRUSA3D
-#: ultralcd.cpp:2189
+#: ultralcd.cpp:2156
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
+#: ultralcd.cpp:3265
 msgid "Rear side [um]"
 msgstr "Achterkant[um]"
 
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
+#  c=20 r=4
+#: ultralcd.cpp:7582
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Verwijder eerst het filament en probeer het opnieuw."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10920
 msgid "Recovering print    "
 msgstr "Print herstellen    "
 
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Verwijder de oude filament en druk op de knop om nieuwe filament te laden."
 
-# 
+#  c=20
 #: 
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
+#: ultralcd.cpp:5894
 msgid "Reset XYZ calibr."
 msgstr "Reset XYZ kalibr."
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3266
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
+#: ultralcd.cpp:6892
 msgid "Resume print"
 msgstr "Print hervatten"
 
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
 msgid "Resuming print"
 msgstr "Hervatten print"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
+#: ultralcd.cpp:3263
 msgid "Right side[um]"
 msgstr "Recht.kant[um]"
 
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "RPi port    [aan]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "RPi port    [uit]"
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr ""
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
+#: ultralcd.cpp:4860
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Starten van de Wizard verwijdert de huidige kalibreringsresultaten en begint vanaf het begin. Doorgaan?"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "SD card [normaal]"
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "SD kaart"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "SD Karte[flshAir]"
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
 
 # 
-#: ultralcd.cpp:3012
+#: ultralcd.cpp:2992
 msgid "Right"
 msgstr "Rechts"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
+#: messages.c:35
 msgid "Searching bed calibration point"
 msgstr "Zoeken bed kalibratiepunt"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5806
 msgid "Select language"
 msgstr "Kies taal"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
+#: ultralcd.cpp:7857
 msgid "Self test OK"
 msgstr "Zelftest  OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
+#: ultralcd.cpp:7625
 msgid "Self test start  "
 msgstr "Zelftest start   "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5820
+#: ultralcd.cpp:5870
 msgid "Selftest         "
 msgstr "Zelftest         "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
+#: ultralcd.cpp:8300
 msgid "Selftest error !"
 msgstr "Zelftest fout  !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:77
+#: messages.c:73
 msgid "Selftest failed  "
 msgstr "Zelftest mislukt "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1565
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Zelftest zal worden uitgevoerd om nauwkeurige sensorloze auto positie te kalibreren."
 
 # 
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5098
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selecteer de voorverwarmingstemperatuur van de tuit die overeenkomt met uw materiaal."
 
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Selecteer PLA-filament:"
-
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
+#: ultralcd.cpp:3284
 msgid "Set temperature:"
 msgstr "Temp. instellen:"
 
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
 # MSG_SETTINGS
-#: messages.c:86
+#: messages.c:82
 msgid "Settings"
 msgstr "Instellingen"
 
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5891
 msgid "Show end stops"
 msgstr "Toon endstops"
 
 # 
-#: ultralcd.cpp:4022
+#: ultralcd.cpp:4004
 msgid "Sensor state"
 msgstr "Sensorstatus"
 
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:736
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Sommige bestanden worden niet gesorteerd omdat het maximum aantal bestanden per map 100 is."
 
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Sortering  [geen]"
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Sort."
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Geen"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Sortering  [tijd]"
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Tijd"
 
 # 
-#: ultralcd.cpp:3055
+#: ultralcd.cpp:3035
 msgid "Severe skew:"
 msgstr "Erg scheef:"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Sort    [alfabet]"
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Alfabet"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
+#: cardreader.cpp:743
 msgid "Sorting files"
 msgstr "Bestanden sorteren"
 
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Geluid     [hard]"
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Hard"
 
 # 
-#: ultralcd.cpp:3054
+#: ultralcd.cpp:3034
 msgid "Slight skew:"
 msgstr "Iets scheef:"
 
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Geluid      [uit]"
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Geluid"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
 
 # 
-#: Marlin_main.cpp:4875
+#: Marlin_main.cpp:5110
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Er is een probleem opgetreden, Z-kalibratie afgedwongen ..."
 
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Geluid  [eenmaal]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Geluid     [stil]"
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Eenmaal"
 
 # MSG_SPEED
-#: ultralcd.cpp:7032
+#: ultralcd.cpp:7150
 msgid "Speed"
 msgstr "Snelheid"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
+#: messages.c:76
 msgid "Spinning"
 msgstr "Draait"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
+#: Marlin_main.cpp:4609
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Stabiele omgevingstemperatuur van 21-26C is nodig, een stevige stand is vereist."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6945
+#: ultralcd.cpp:7009
 msgid "Statistics  "
 msgstr "Statistieken"
 
 # MSG_STOP_PRINT
-#: messages.c:93
+#: messages.c:91
 msgid "Stop print"
 msgstr "Print stoppen"
 
 # MSG_STOPPED
-#: messages.c:94
+#: messages.c:92
 msgid "STOPPED. "
 msgstr "GESTOPT. "
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6954
+#: ultralcd.cpp:7018
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
+#: ultralcd.cpp:8380
 msgid "Swapped"
 msgstr "Gewisseld"
 
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Tempkalibratie      "
+# 
+#: ultralcd.cpp:4810
+msgid "Select filament:"
+msgstr "Kies filament:"
 
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Tempkal.    [aan]"
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Tempkalib."
 
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Tempkal.    [uit]"
+# 
+#: ultralcd.cpp:4951
+msgid "Select temperature which matches your material."
+msgstr "Selecteer de temperatuur die overeenkomt met uw materiaal."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5902
 msgid "Temp. calibration"
 msgstr "Tempkalibratie"
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
+#: ultralcd.cpp:3930
 msgid "Temperature calibration failed"
 msgstr "Temperatuurkalibratie mislukt"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
+#: messages.c:94
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Temperatuurkalibratie kan worden uitgeschakeld in het menu Instellingen-> Tempkalibratie."
 
+#  c=20 r=3
+#: ultralcd.cpp:7589
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensor geverifieerd, verwijder nu het filament."
+
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5717
+#: ultralcd.cpp:5764
 msgid "Temperature"
 msgstr "Temperatuur"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2208
 msgid "Temperatures"
 msgstr "Temperaturen"
 
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Er is nog steeds een noodzaak om de Z-kalibratie uit te voeren. Volg de handleiding, hoofdstuk First steps, section Calibration flow."
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2889
 msgid "Total filament"
 msgstr "Totaal fil.   "
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2890
 msgid "Total print time"
 msgstr "Totaal printtijd"
 
 # MSG_TUNE
-#: ultralcd.cpp:6822
+#: ultralcd.cpp:6881
 msgid "Tune"
 msgstr "Fijnafstemming"
 
@@ -1356,62 +1456,62 @@ msgid "Unload"
 msgstr "Verwijderen"
 
 # 
-#: ultralcd.cpp:1804
+#: ultralcd.cpp:1752
 msgid "Total failures"
 msgstr "Totaal fouten"
 
 # 
-#: ultralcd.cpp:2308
+#: ultralcd.cpp:2287
 msgid "to load filament"
 msgstr "om filament te laden"
 
 # 
-#: ultralcd.cpp:2312
+#: ultralcd.cpp:2291
 msgid "to unload filament"
 msgstr "om filament te laden"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
+#: messages.c:95
 msgid "Unload filament"
 msgstr "Filament uitwerpen"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
+#: messages.c:96
 msgid "Unloading filament"
 msgstr "Uitwerpen filament"
 
 # 
-#: ultralcd.cpp:1757
+#: ultralcd.cpp:1705
 msgid "Total"
 msgstr "Totaal"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
+#: ultralcd.cpp:6031
 msgid "Used during print"
 msgstr "Gebruikt bij print"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
+#: ultralcd.cpp:2211
 msgid "Voltages"
 msgstr "Spanning"
 
 # 
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2184
 msgid "unknown"
 msgstr "onbekend"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5264
+#: Marlin_main.cpp:5520
 msgid "Wait for user..."
 msgstr "Wacht op gebruiker ..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
+#: ultralcd.cpp:3432
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Wachten op afkoelen van tuit en bed"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
+#: ultralcd.cpp:3393
 msgid "Waiting for PINDA probe cooling"
 msgstr "Wachten op afkoelen van PINDA"
 
@@ -1421,264 +1521,224 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Gebruik ontladen om filament 1 te verwijderen als het uitsteekt buiten de achterste MMU-buis. Gebruik uitwerpen als deze in de tube is verborgen."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1525
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Waarschuwing: zowel het printertype als het moederbordtype is gewijzigd."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1517
 msgid "Warning: motherboard type changed."
 msgstr "Waarschuwing: type moederbord gewijzigd."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1521
 msgid "Warning: printer type changed."
 msgstr "Waarschuwing: printertype gewijzigd."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
+#: Marlin_main.cpp:3142
 msgid "Was filament unload successful?"
 msgstr "Is filament succesvol verwijderd?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
+#: messages.c:81
 msgid "Wiring error"
 msgstr "Aansluitingsfout"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
+#: ultralcd.cpp:5861
 msgid "Wizard"
 msgstr "Wizard"
 
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2200
 msgid "XYZ cal. details"
 msgstr "XZY kal. details"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
+#: messages.c:18
 msgid "XYZ calibration failed. Please consult the manual."
 msgstr "XYZ-kalibratie mislukt. Raadpleeg de handleiding aub."
 
 # MSG_YES
-#: messages.c:104
+#: messages.c:102
 msgid "Yes"
 msgstr "Ja"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
+#: messages.c:101
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "U kunt de wizard altijd hervatten via Kalibratie -> Wizard."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
+#: ultralcd.cpp:3902
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "XYZ-kalibratie in orde. Scheefheid zal automatisch worden gecorrigeerd."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
+#: ultralcd.cpp:3899
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "XYZ-kalibratie in orde. X / Y-assen zijn licht scheef. Goed gedaan!"
 
-# 
-#: ultralcd.cpp:5197
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr "Time-out"
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5186
 msgid "X-correct:"
 msgstr "X-correctie:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
+#: ultralcd.cpp:3896
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "XYZ-kalibratie ok. X / Y-assen staan loodrecht. Gefeliciteerd!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
+#: ultralcd.cpp:3880
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "XYZ-kalibratie niet gelukt. Voorste kalibratiepunten niet bereikbaar."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
+#: ultralcd.cpp:3883
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "XYZ-kalibratie niet gelukt. Rechter voor kalibratiepunt niet bereikbaar."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
+#: ultralcd.cpp:6291
 msgid "Load all"
 msgstr "Laad alle"
 
 # 
-#: ultralcd.cpp:3879
+#: ultralcd.cpp:3862
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "XYZ-kalibratie mislukt. Bed ijkpunt niet gevonden."
 
 # 
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3868
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "XYZ-kalibratie mislukt. Voorste kalibratiepunten niet bereikbaar."
 
 # 
-#: ultralcd.cpp:3888
+#: ultralcd.cpp:3871
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "XYZ-kalibratie mislukt. Rechter voor kalibratiepunt niet bereikbaar."
 
 # 
-#: ultralcd.cpp:3009
+#: ultralcd.cpp:2989
 msgid "Y distance from min"
 msgstr "Y afstand van min"
 
 # 
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:4954
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr ""
+
+#  c=20 r=5
+#: ultralcd.cpp:7593
+msgid "Verification failed, remove the filament and try again."
+msgstr "Verificatie mislukt, verwijder het filament en probeer het opnieuw."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5187
 msgid "Y-correct:"
 msgstr "Y-correctie:"
 
 # MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [uit]"
+#: messages.c:105
+msgid "Off"
+msgstr "Uit"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "Aan"
 
 # 
-#: messages.c:57
+#: messages.c:53
 msgid "Back"
 msgstr "terug"
 
 # 
-#: ultralcd.cpp:5706
+#: ultralcd.cpp:5741
 msgid "Checks"
 msgstr ""
 
 # 
-#: ultralcd.cpp:8080
+#: ultralcd.cpp:8394
 msgid "False triggering"
 msgstr "Valse triggering"
 
 # 
-#: ultralcd.cpp:4027
+#: ultralcd.cpp:4009
 msgid "FINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware   [geen]"
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [strikt]"
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Strikt"
 
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
 msgstr ""
 
 # 
-#: messages.c:87
+#: messages.c:83
 msgid "HW Setup"
 msgstr "HW Configuratie"
 
 # 
-#: ultralcd.cpp:4031
+#: ultralcd.cpp:4013
 msgid "IR:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Magnet. comp.[N/V]"
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Magnet. comp."
 
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Magnet. comp.[Uit]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Magnet. comp.[Aan]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5744
+#: ultralcd.cpp:5788
 msgid "Mesh bed leveling"
 msgstr "Mesh bed leveling"
 
 # 
-#: Marlin_main.cpp:852
+#: Marlin_main.cpp:877
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "MK3S-firmware op MK3-printer ontdekt"
 
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "MMU Mod.[Normaal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "MMU Mod.[Stealth]"
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "MMU Mod"
 
 # 
-#: ultralcd.cpp:4508
+#: ultralcd.cpp:4490
 msgid "Mode change in progress ..."
 msgstr "Moduswijziging bezig..."
 
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Model      [geen]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Model    [strikt]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Model    [alarm.]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Tuit d.    [0.25]"
-
-"Nozzle d.  [0.25]"
-#: 
-msgid "Tuit d.    [0.25]"
-msgstr 
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Tuit d.    [0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Tuit d.    [0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Tuit       [geen]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Tuit     [strikt]"
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Tuit     [alarm.]"
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Tuit d."
 
 # 
 #: util.cpp:514
@@ -1711,17 +1771,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-Code is voor een nieuwere firmware geslict. Update de firmware alsjeblieft. Druk geannuleerd."
 
 # 
-#: ultralcd.cpp:4023
+#: ultralcd.cpp:4005
 msgid "PINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2462
+#  c=20
+#: ultralcd.cpp:2443
 msgid "Preheating to cut"
 msgstr "Opwarm. te snijden"
 
-# 
-#: ultralcd.cpp:2459
+#  c=20
+#: ultralcd.cpp:2440
 msgid "Preheating to eject"
 msgstr "Opwarm.te uitwerpen"
 
@@ -1735,53 +1795,48 @@ msgstr "De diameter van de tuit van de printer verschilt van de G-code. Doorgaan
 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 msgstr "De diameter van de tuit van de printer verschilt van de G-code. Controleer de waarde in de instellingen. Afdrukken geannuleerd."
 
+#  c=20
+#: ultralcd.cpp:8400
+msgid "%s level expected"
+msgstr ""
+
 # 
-#: ultralcd.cpp:6786
+#: ultralcd.cpp:6845
 msgid "Rename"
 msgstr "Hernoem"
 
 # 
-#: ultralcd.cpp:6779
+#: ultralcd.cpp:6838
 msgid "Select"
 msgstr "Selecteer"
 
 # 
-#: ultralcd.cpp:2229
+#: ultralcd.cpp:2202
 msgid "Sensor info"
 msgstr "Sensor info"
 
-# 
-#: messages.c:58
+# MSG_SHEET c=10
+#: messages.c:54
 msgid "Sheet"
-msgstr "Plaat"
+msgstr "Staalplaat"
 
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Geluid   [assist]"
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5704
+#  c=18
+#: ultralcd.cpp:5739
 msgid "Steel sheets"
 msgstr "Staalplaten"
 
-# 
-#: ultralcd.cpp:5199
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5188
 msgid "Z-correct:"
 msgstr "Z-correctie:"
 
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Z-probe nr.    [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Z-probe nr.    [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Z-probe nr.    [5]"
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr ""
 

+ 1842 - 1786
lang/po/Firmware_pl.po

@@ -1,1786 +1,1842 @@
-# Translation of Prusa-Firmware into Polish.
-#
-msgid ""
-msgstr ""
-"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=UTF-8\n"
-"Content-Transfer-Encoding: 8bit\n"
-"Language: pl\n"
-"Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:26:23 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:26:23 PM\n"
-"Language-Team: \n"
-"X-Generator: Poedit 2.0.7\n"
-"X-Poedit-SourceCharset: UTF-8\n"
-"Last-Translator: \n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-
-# 
-#: 
-msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
-msgstr "[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
-
-# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
-msgid " of 4"
-msgstr " z 4"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
-msgid " of 9"
-msgstr " z 9"
-
-# MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
-msgid "[0;0] point offset"
-msgstr "[0;0] przesun.punktu"
-
-# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
-#: 
-msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
-msgstr "Wykrywanie zderzen\x0amoze byc wlaczone\x0atylko w\x0atrybie Normalnym"
-
-# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
-#: 
-msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "UWAGA:\x0aWykrywanie zderzen\x0awylaczone w\x0atrybie Stealth"
-
-# 
-#: ultralcd.cpp:2470
-msgid ">Cancel"
-msgstr ">Anuluj"
-
-# MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
-msgid "Adjusting Z:"
-msgstr "Ustawianie Z:"
-
-# MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
-msgid "All correct      "
-msgstr "Wszystko OK "
-
-# MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
-msgid "All is done. Happy printing!"
-msgstr "Gotowe. Udanego drukowania!"
-
-# 
-#: ultralcd.cpp:1993
-msgid "Ambient"
-msgstr "Otoczenie"
-
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
-msgid "and press the knob"
-msgstr "i nacisnij pokretlo"
-
-# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
-msgid "Are left and right Z~carriages all up?"
-msgstr "Obydwa konce osi sa na szczycie?"
-
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [wl]"
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/D]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [wyl]"
-
-# MSG_AUTO_HOME
-#: messages.c:11
-msgid "Auto home"
-msgstr "Auto zerowanie"
-
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
-msgid "AutoLoad filament"
-msgstr "Autoladowanie fil."
-
-# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
-msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Autoladowanie filamentu dostepne tylko gdy czujnik filamentu jest wlaczony..."
-
-# MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
-msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "Autoladowanie filamentu wlaczone, nacisnij pokretlo i wsun filament..."
-
-# MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
-msgid "Axis length"
-msgstr "Dlugosc osi"
-
-# MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
-msgid "Axis"
-msgstr "Os"
-
-# MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
-msgid "Bed / Heater"
-msgstr "Stol / Grzanie"
-
-# MSG_BED_DONE
-#: messages.c:16
-msgid "Bed done"
-msgstr "Stol OK"
-
-# MSG_BED_HEATING
-#: messages.c:17
-msgid "Bed Heating"
-msgstr "Grzanie stolu.."
-
-# MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
-msgid "Bed level correct"
-msgstr "Korekta stolu"
-
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
-msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
-
-# MSG_BED
-#: messages.c:15
-msgid "Bed"
-msgstr "Stol"
-
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
-msgid "Belt status"
-msgstr "Stan paskow"
-
-# MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
-msgid "Blackout occurred. Recover print?"
-msgstr "Wykryto zanik napiecia. Kontynowac?"
-
-# 
-#: ultralcd.cpp:8404
-msgid "Calibrating home"
-msgstr "Zerowanie osi"
-
-# MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
-msgid "Calibrate XYZ"
-msgstr "Kalibracja XYZ"
-
-# MSG_HOMEYZ
-#: messages.c:48
-msgid "Calibrate Z"
-msgstr "Kalibruj Z"
-
-# MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
-msgid "Calibrate"
-msgstr "Kalibruj"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
-
-# MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
-msgid "Calibrating Z"
-msgstr "Kalibruje Z"
-
-# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
-msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
-msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
-
-# MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
-msgid "Calibration done"
-msgstr "Kalibracja OK"
-
-# MSG_MENU_CALIBRATION
-#: messages.c:61
-msgid "Calibration"
-msgstr "Kalibracja"
-
-# 
-#: ultralcd.cpp:4828
-msgid "Cancel"
-msgstr "Anuluj"
-
-# MSG_SD_REMOVED
-#: ultralcd.cpp:8812
-msgid "Card removed"
-msgstr "Karta wyjeta"
-
-# MSG_NOT_COLOR
-#: ultralcd.cpp:2719
-msgid "Color not correct"
-msgstr "Kolor zanieczysz."
-
-# MSG_COOLDOWN
-#: messages.c:23
-msgid "Cooldown"
-msgstr "Chlodzenie"
-
-# 
-#: ultralcd.cpp:4584
-msgid "Copy selected language?"
-msgstr "Skopiowac wybrany jezyk?"
-
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Wykr.zderzen [wl]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Wykr.zderzen[N/D]"
-
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Wykr.zderzen[wyl]"
-
-# MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
-msgid "Crash detected."
-msgstr "Zderzenie wykryte"
-
-# 
-#: Marlin_main.cpp:596
-msgid "Crash detected. Resume print?"
-msgstr "Wykryto zderzenie. Wznowic druk?"
-
-# 
-#: ultralcd.cpp:1837
-msgid "Crash"
-msgstr "Zderzenie"
-
-# MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
-msgid "Current"
-msgstr "Aktualne"
-
-# MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
-msgid "Date:"
-msgstr "Data:"
-
-# MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
-msgid "Disable steppers"
-msgstr "Wylacz silniki"
-
-# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
-msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
-
-# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
-msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
-
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
-msgid "E-correct:"
-msgstr "Korekcja-E:"
-
-# MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
-msgid "Eject filament"
-msgstr "Wysun filament"
-
-# MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
-msgid "Ejecting filament"
-msgstr "Wysuwanie filamentu"
-
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
-msgid "Endstop not hit"
-msgstr "Krancowka nie aktyw."
-
-# MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
-msgid "Endstop"
-msgstr "Krancowka"
-
-# MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
-msgid "Endstops"
-msgstr "Krancowki"
-
-# MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
-msgid "Error - static memory has been overwritten"
-msgstr "Blad - pamiec statyczna zostala nadpisana"
-
-# MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
-msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
-
-# MSG_ERROR
-#: messages.c:28
-msgid "ERROR:"
-msgstr "BLAD:"
-
-# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
-msgid "Extruder fan:"
-msgstr "WentHotend:"
-
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
-msgid "Extruder info"
-msgstr "Ekstruder - info"
-
-# MSG_MOVE_E
-#: messages.c:29
-msgid "Extruder"
-msgstr "Ekstruder"
-
-# 
-#: ultralcd.cpp:6952
-msgid "Fail stats MMU"
-msgstr "Bledy MMU"
-
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "Autolad.fil. [wl]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "Autolad.fil.[N/D]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "Autolad.fil.[wyl]"
-
-# 
-#: ultralcd.cpp:6949
-msgid "Fail stats"
-msgstr "Statystyki bledow"
-
-# MSG_FAN_SPEED c=14
-#: messages.c:31
-msgid "Fan speed"
-msgstr "Predkosc went."
-
-# MSG_SELFTEST_FAN c=20
-#: messages.c:78
-msgid "Fan test"
-msgstr "Test wentylatora"
-
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Sprawd.went. [wl]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Sprawd.went.[wyl]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Czuj. filam. [wl]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Czuj. filam.[N/D]"
-
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Czuj. filam.[wyl]"
-
-# 
-#: ultralcd.cpp:1836
-msgid "Filam. runouts"
-msgstr "Konc. filamentu"
-
-# MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
-msgid "Filament extruding & with correct color?"
-msgstr "Filament wychodzi z dyszy, kolor jest ok?"
-
-# MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
-msgid "Filament not loaded"
-msgstr "Fil. nie zaladowany"
-
-# MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
-msgid "Filament sensor"
-msgstr "Czujnik filamentu"
-
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
-msgid "Filament used"
-msgstr "Uzyty filament"
-
-# MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
-msgid "Print time"
-msgstr "Czas druku"
-
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
-msgid "File incomplete. Continue anyway?"
-msgstr "Plik niekompletny. Kontynowac?"
-
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
-msgid "Finishing movements"
-msgstr "Konczenie druku"
-
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
-msgid "First layer cal."
-msgstr "Kal. 1. warstwy"
-
-# MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
-msgid "First, I will run the selftest to check most common assembly problems."
-msgstr "Najpierw wlacze selftest w celu sprawdzenia najczestszych problemow podczas montazu."
-
-# 
-#: mmu.cpp:724
-msgid "Fix the issue and then press button on MMU unit."
-msgstr "Rozwiaz problem i wcisnij przycisk na MMU."
-
-# MSG_FLOW
-#: ultralcd.cpp:7038
-msgid "Flow"
-msgstr "Przeplyw"
-
-# MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
-msgid "forum.prusa3d.com"
-msgstr ""
-
-# MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
-msgid "Front print fan?"
-msgstr "Przedni went. druku?"
-
-# MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
-msgid "Front side[um]"
-msgstr "Przod [um]"
-
-# MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
-msgid "Front/left fans"
-msgstr "Przedni/lewy wentylator"
-
-# MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
-msgid "Heater/Thermistor"
-msgstr "Grzalka/Termistor"
-
-# MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
-msgid "Heating disabled by safety timer."
-msgstr "Grzanie wylaczone przez wyl. czasowy"
-
-# MSG_HEATING_COMPLETE c=20
-#: messages.c:47
-msgid "Heating done."
-msgstr "Grzanie zakonczone"
-
-# MSG_HEATING
-#: messages.c:46
-msgid "Heating"
-msgstr "Grzanie..."
-
-# MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
-msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
-msgstr "Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z ustawieniem?"
-
-# MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
-msgid "howto.prusa3d.com"
-msgstr ""
-
-# MSG_FILAMENTCHANGE
-#: messages.c:37
-msgid "Change filament"
-msgstr "Wymiana filamentu"
-
-# MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
-msgid "Change success!"
-msgstr "Wymiana ok!"
-
-# MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
-msgid "Changed correctly?"
-msgstr "Wymiana ok?"
-
-# MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
-msgid "Checking bed     "
-msgstr "Kontrola stolu"
-
-# MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
-msgid "Checking endstops"
-msgstr "Kontrola krancowek"
-
-# MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
-msgid "Checking hotend  "
-msgstr "Kontrola hotendu"
-
-# MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
-msgid "Checking sensors "
-msgstr "Sprawdzanie czujnikow"
-
-# MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
-msgid "Checking X axis  "
-msgstr "Kontrola osi X"
-
-# MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
-msgid "Checking Y axis  "
-msgstr "Kontrola osi Y"
-
-# MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
-msgid "Checking Z axis  "
-msgstr "Kontrola osi Z"
-
-# MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
-msgid "Choose extruder:"
-msgstr "Wybierz ekstruder:"
-
-# MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
-msgid "Choose filament:"
-msgstr "Wybierz filament:"
-
-# MSG_FILAMENT c=17 r=1
-#: messages.c:30
-msgid "Filament"
-msgstr ""
-
-# MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
-msgid "I will run xyz calibration now. It will take approx. 12 mins."
-msgstr "Przeprowadze teraz kalibracje XYZ. Zajmie ok. 12 min."
-
-# MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
-msgid "I will run z calibration now."
-msgstr "Przeprowadze kalibracje Z."
-
-# MSG_WATCH
-#: messages.c:99
-msgid "Info screen"
-msgstr "Ekran informacyjny"
-
-# MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
-msgid "Insert filament"
-msgstr "Wprowadz filament"
-
-# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
-msgid "Is filament loaded?"
-msgstr "Filament jest zaladowany?"
-
-# MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
-msgid "Is steel sheet on heatbed?"
-msgstr "Czy plyta stal. jest na podgrzew. stole?"
-
-# 
-#: ultralcd.cpp:1779
-msgid "Last print failures"
-msgstr "Ostatnie bledy druku"
-
-# 
-#: ultralcd.cpp:1756
-msgid "Last print"
-msgstr "Ost. wydruk"
-
-# MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
-msgid "Left hotend fan?"
-msgstr "Lewy went hotendu?"
-
-# 
-#: ultralcd.cpp:3011
-msgid "Left"
-msgstr "Lewa"
-
-# MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
-msgid "Left side [um]"
-msgstr "Lewo [um]"
-
-# 
-#: ultralcd.cpp:5747
-msgid "Lin. correction"
-msgstr "Korekcja liniowa"
-
-# MSG_BABYSTEP_Z
-#: messages.c:13
-msgid "Live adjust Z"
-msgstr "Ustaw. Live Z"
-
-# MSG_LOAD_FILAMENT c=17
-#: messages.c:51
-msgid "Load filament"
-msgstr "Ladowanie fil."
-
-# MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
-msgid "Loading color"
-msgstr "Czyszcz. koloru"
-
-# MSG_LOADING_FILAMENT c=20
-#: messages.c:52
-msgid "Loading filament"
-msgstr "Laduje filament"
-
-# MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
-msgid "Loose pulley"
-msgstr "Luzne kolo pasowe"
-
-# 
-#: ultralcd.cpp:6911
-msgid "Load to nozzle"
-msgstr "Zaladuj do dyszy"
-
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
-msgid "M117 First layer cal."
-msgstr "M117 Kal. 1. warstwy"
-
-# MSG_MAIN
-#: messages.c:56
-msgid "Main"
-msgstr "Menu glowne"
-
-# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
-msgid "Measuring reference height of calibration point"
-msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego"
-
-# MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
-msgid "Mesh Bed Leveling"
-msgstr "Poziomowanie stolu wg siatki"
-
-# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
-msgid "MMU OK. Resuming position..."
-msgstr "MMU OK. Wznawianie pozycji."
-
-# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
-msgid "MMU OK. Resuming temperature..."
-msgstr "MMU OK. Wznawiam nagrzewanie..."
-
-# 
-#: ultralcd.cpp:3052
-msgid "Measured skew"
-msgstr "Zmierzony skos"
-
-# 
-#: ultralcd.cpp:1780
-msgid "MMU fails"
-msgstr "Bledy MMU"
-
-# 
-#: mmu.cpp:1592
-msgid "MMU load failed     "
-msgstr "Blad ladowania MMU"
-
-# 
-#: ultralcd.cpp:1781
-msgid "MMU load fails"
-msgstr "Bledy ladow. MMU"
-
-# MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
-msgid "MMU OK. Resuming..."
-msgstr "MMU OK. Wznawianie..."
-
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Tryb   [normalny]"
-
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Tryb      [cichy]"
-
-# 
-#: mmu.cpp:719
-msgid "MMU needs user attention."
-msgstr "MMU wymaga uwagi uzytkownika."
-
-# 
-#: ultralcd.cpp:1807
-msgid "MMU power fails"
-msgstr "Zaniki zasil. MMU"
-
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Tryb      [cichy]"
-
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Tryb [automatycz]"
-
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Tryb[wysoka wyd.]"
-
-# 
-#: ultralcd.cpp:2203
-msgid "MMU2 connected"
-msgstr "MMU podlaczone"
-
-# MSG_SELFTEST_MOTOR
-#: messages.c:83
-msgid "Motor"
-msgstr "Silnik"
-
-# MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
-msgid "Move axis"
-msgstr "Ruch osi"
-
-# MSG_MOVE_X
-#: ultralcd.cpp:4375
-msgid "Move X"
-msgstr "Ruch osi X"
-
-# MSG_MOVE_Y
-#: ultralcd.cpp:4376
-msgid "Move Y"
-msgstr "Ruch osi Y"
-
-# MSG_MOVE_Z
-#: ultralcd.cpp:4377
-msgid "Move Z"
-msgstr "Ruch osi Z"
-
-# MSG_NO_MOVE
-#: Marlin_main.cpp:5293
-msgid "No move."
-msgstr "Brak ruchu."
-
-# MSG_NO_CARD
-#: ultralcd.cpp:6878
-msgid "No SD card"
-msgstr "Brak karty SD"
-
-# 
-#: ultralcd.cpp:3017
-msgid "N/A"
-msgstr "N/D"
-
-# MSG_NO
-#: messages.c:62
-msgid "No"
-msgstr "Nie"
-
-# MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
-msgid "Not connected"
-msgstr "Nie podlaczono "
-
-# 
-#: util.cpp:293
-msgid "New firmware version available:"
-msgstr "Dostepna nowa wersja firmware:"
-
-# MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
-msgid "Not spinning"
-msgstr "Nie kreci sie"
-
-# MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
-msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
-msgstr "Kalibruje odleglosc miedzy koncowka dyszy a powierzchnia druku."
-
-# MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
-msgid "Now I will preheat nozzle for PLA."
-msgstr "Nagrzewam dysze dla PLA."
-
-# MSG_NOZZLE
-#: messages.c:63
-msgid "Nozzle"
-msgstr "Dysza"
-
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
-msgid "Old settings found. Default PID, Esteps etc. will be set."
-msgstr "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
-
-# 
-#: ultralcd.cpp:5071
-msgid "Now remove the test print from steel sheet."
-msgstr "Teraz zdejmij wydruk testowy ze stolu."
-
-# 
-#: ultralcd.cpp:1706
-msgid "Nozzle FAN"
-msgstr "WentHotend"
-
-# MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
-msgid "Pause print"
-msgstr "Wstrzymanie wydruku"
-
-# MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
-msgid "PID cal.           "
-msgstr "Kalibracja PID"
-
-# MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
-msgid "PID cal. finished"
-msgstr "Kal. PID zakonczona"
-
-# MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
-msgid "PID calibration"
-msgstr "Kalibracja PID"
-
-# MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
-msgid "PINDA Heating"
-msgstr "Grzanie sondy PINDA"
-
-# MSG_PAPER c=20 r=8
-#: messages.c:64
-msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
-msgstr "Umiesc kartke papieru na stole roboczym i podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke."
-
-# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
-msgid "Please clean heatbed and then press the knob."
-msgstr "Oczysc powierzchnie druku i nacisnij pokretlo."
-
-# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
-msgid "Please clean the nozzle for calibration. Click when done."
-msgstr "Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem."
-
-# MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
-msgid "Please check :"
-msgstr "Sprawdz :"
-
-# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
-msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
-msgstr "Przeczytaj nasz Podrecznik druku 3D aby naprawic problem. Potem wznow Asystenta przez restart drukarki."
-
-# MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
-msgid "Please open idler and remove filament manually."
-msgstr "Prosze odciagnac dzwignie dociskowa ekstrudera i recznie usunac filament."
-
-# MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
-msgid "Please place steel sheet on heatbed."
-msgstr "Prosze umiescic plyte stalowa na stole podgrzewanym."
-
-# MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
-msgid "Please press the knob to unload filament"
-msgstr "Nacisnij pokretlo aby rozladowac filament"
-
-# MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
-msgid "Please pull out filament immediately"
-msgstr "Wyciagnij filament teraz"
-
-# MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
-msgid "Please remove filament and then press the knob."
-msgstr "Wyciagnij filament i wcisnij pokretlo."
-
-# MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
-msgid "Please remove steel sheet from heatbed."
-msgstr "Prosze zdjac plyte stalowa z podgrzewanego stolu."
-
-# MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
-msgid "Please run XYZ calibration first."
-msgstr "Prosze najpierw uruchomic kalibracje XYZ"
-
-# MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
-msgid "Please update firmware in your MMU2. Waiting for reset."
-msgstr "Prosze zaktualizowac Firmware MMU2. Czekam na reset."
-
-# MSG_PLEASE_WAIT c=20
-#: messages.c:66
-msgid "Please wait"
-msgstr "Prosze czekac"
-
-# 
-#: ultralcd.cpp:5070
-msgid "Please remove shipping helpers first."
-msgstr "Najpierw usun zabezpieczenia transportowe"
-
-# MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
-msgid "Preheat the nozzle!"
-msgstr "Nagrzej dysze!"
-
-# MSG_PREHEAT
-#: ultralcd.cpp:6825
-msgid "Preheat"
-msgstr "Grzanie"
-
-# MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
-msgid "Preheating nozzle. Please wait."
-msgstr "Nagrzewanie dyszy. Prosze czekac."
-
-# 
-#: util.cpp:297
-msgid "Please upgrade."
-msgstr "Prosze zaktualizowac."
-
-# MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
-msgid "Press knob to preheat nozzle and continue."
-msgstr "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
-
-# 
-#: ultralcd.cpp:1835
-msgid "Power failures"
-msgstr "Zaniki zasilania"
-
-# MSG_PRINT_ABORTED c=20
-#: messages.c:69
-msgid "Print aborted"
-msgstr "Druk przerwany"
-
-# 
-#: ultralcd.cpp:2452
-msgid "Preheating to load"
-msgstr "Nagrzew. do ladowania"
-
-# 
-#: ultralcd.cpp:2456
-msgid "Preheating to unload"
-msgstr "Nagrzew. do rozlad."
-
-# MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
-msgid "Print fan:"
-msgstr "WentWydruk:"
-
-# MSG_CARD_MENU
-#: messages.c:21
-msgid "Print from SD"
-msgstr "Druk z karty SD"
-
-# 
-#: ultralcd.cpp:2301
-msgid "Press the knob"
-msgstr "Wcisnij pokretlo"
-
-# MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
-msgid "Print paused"
-msgstr "Druk wstrzymany"
-
-# 
-#: mmu.cpp:723
-msgid "Press the knob to resume nozzle temperature."
-msgstr "Wcisnij pokretlo aby wznowic podgrzewanie dyszy."
-
-# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
-msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
-
-# 
-#: ultralcd.cpp:1707
-msgid "Print FAN"
-msgstr "WentWydruk"
-
-# MSG_PRUSA3D
-#: ultralcd.cpp:2189
-msgid "prusa3d.com"
-msgstr ""
-
-# MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
-msgid "Rear side [um]"
-msgstr "Tyl [um]"
-
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
-msgid "Recovering print    "
-msgstr "Wznawianie wydruku"
-
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
-msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
-
-# 
-#: 
-msgid "Prusa i3 MK3S OK."
-msgstr "Prusa i3 MK3S OK"
-
-# MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
-msgid "Reset XYZ calibr."
-msgstr "Reset kalibr. XYZ"
-
-# MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
-msgid "Reset"
-msgstr ""
-
-# MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
-msgid "Resume print"
-msgstr "Wznowic wydruk"
-
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
-msgid "Resuming print"
-msgstr "Wznawianie druku"
-
-# MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
-msgid "Right side[um]"
-msgstr "Prawo [um]"
-
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "Port RPi     [wl]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "Port RPi    [wyl]"
-
-# MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
-msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
-msgstr "Wlaczenie Asystenta usunie obecne dane kalibracyjne i zacznie od poczatku. Kontynuowac?"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "Karta SD [normal]"
-
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "Karta SD[FlshAir]"
-
-# 
-#: ultralcd.cpp:3012
-msgid "Right"
-msgstr "Prawa"
-
-# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
-msgid "Searching bed calibration point"
-msgstr "Szukam punktu kalibracyjnego na stole"
-
-# MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
-msgid "Select language"
-msgstr "Wybor jezyka"
-
-# MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
-msgid "Self test OK"
-msgstr "Selftest OK"
-
-# MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
-msgid "Self test start  "
-msgstr "Selftest startuje"
-
-# MSG_SELFTEST
-#: ultralcd.cpp:5820
-msgid "Selftest         "
-msgstr "Selftest "
-
-# MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
-msgid "Selftest error !"
-msgstr "Blad selftest!"
-
-# MSG_SELFTEST_FAILED c=20
-#: messages.c:77
-msgid "Selftest failed  "
-msgstr "Selftest nieudany"
-
-# MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
-msgid "Selftest will be run to calibrate accurate sensorless rehoming."
-msgstr "Zostanie uruchomiony Selftest aby dokladnie skalibrowac punkt bazowy bez krancowek"
-
-# 
-#: ultralcd.cpp:5111
-msgid "Select nozzle preheat temperature which matches your material."
-msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu."
-
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Wybierz filament PLA:"
-
-# MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
-msgid "Set temperature:"
-msgstr "Ustaw temperature:"
-
-# MSG_SETTINGS
-#: messages.c:86
-msgid "Settings"
-msgstr "Ustawienia"
-
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
-msgid "Show end stops"
-msgstr "Pokaz krancowki"
-
-# 
-#: ultralcd.cpp:4022
-msgid "Sensor state"
-msgstr "Stan czujnikow"
-
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
-msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
-msgstr "Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
-
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Sortowanie [brak]"
-
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Sortowanie [czas]"
-
-# 
-#: ultralcd.cpp:3055
-msgid "Severe skew:"
-msgstr "Znaczny skos:"
-
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Sortowanie[alfab]"
-
-# MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
-msgid "Sorting files"
-msgstr "Sortowanie plikow"
-
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Dzwiek   [glosny]"
-
-# 
-#: ultralcd.cpp:3054
-msgid "Slight skew:"
-msgstr "Lekki skos:"
-
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Dzwiek[wylaczony]"
-
-# 
-#: Marlin_main.cpp:4875
-msgid "Some problem encountered, Z-leveling enforced ..."
-msgstr "Wykryto problem, wymuszono poziomowanie osi Z."
-
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Dzwiek    [1-raz]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Dzwiek    [cichy]"
-
-# MSG_SPEED
-#: ultralcd.cpp:7032
-msgid "Speed"
-msgstr "Predkosc"
-
-# MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
-msgid "Spinning"
-msgstr "Kreci sie"
-
-# MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
-msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
-msgstr "Potrzebna jest stabilna temperatura otoczenia 21-26C i stabilne podloze."
-
-# MSG_STATISTICS
-#: ultralcd.cpp:6945
-msgid "Statistics  "
-msgstr "Statystyki"
-
-# MSG_STOP_PRINT
-#: messages.c:93
-msgid "Stop print"
-msgstr "Przerwanie druku"
-
-# MSG_STOPPED
-#: messages.c:94
-msgid "STOPPED. "
-msgstr "ZATRZYMANO."
-
-# MSG_SUPPORT
-#: ultralcd.cpp:6954
-msgid "Support"
-msgstr "Wsparcie"
-
-# MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
-msgid "Swapped"
-msgstr "Zamieniono"
-
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Kalibracja temp."
-
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Kalibr.temp. [wl]"
-
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Kalibr.temp.[wyl]"
-
-# MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
-msgid "Temp. calibration"
-msgstr "Kalibracja temp."
-
-# MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
-msgid "Temperature calibration failed"
-msgstr "Kalibracja temperaturowa nieudana"
-
-# MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
-msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
-msgstr "Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
-
-# MSG_TEMPERATURE
-#: ultralcd.cpp:5717
-msgid "Temperature"
-msgstr "Temperatura"
-
-# MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
-msgid "Temperatures"
-msgstr "Temperatury"
-
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
-msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total filament"
-msgstr "Zuzycie filamentu"
-
-# 
-#: ultralcd.cpp:2901
-msgid "Total print time"
-msgstr "Laczny czas druku"
-
-# MSG_TUNE
-#: ultralcd.cpp:6822
-msgid "Tune"
-msgstr "Strojenie"
-
-# 
-#: 
-msgid "Unload"
-msgstr "Rozladuj"
-
-# 
-#: ultralcd.cpp:1804
-msgid "Total failures"
-msgstr "Suma bledow"
-
-# 
-#: ultralcd.cpp:2308
-msgid "to load filament"
-msgstr "aby zaladow. fil."
-
-# 
-#: ultralcd.cpp:2312
-msgid "to unload filament"
-msgstr "aby rozlad. filament"
-
-# MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
-msgid "Unload filament"
-msgstr "Rozladowanie fil."
-
-# MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
-msgid "Unloading filament"
-msgstr "Rozladowuje filament"
-
-# 
-#: ultralcd.cpp:1757
-msgid "Total"
-msgstr "Suma"
-
-# MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
-msgid "Used during print"
-msgstr "Uzyte podczas druku"
-
-# MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
-msgid "Voltages"
-msgstr "Napiecia"
-
-# 
-#: ultralcd.cpp:2211
-msgid "unknown"
-msgstr "nieznane"
-
-# MSG_USERWAIT
-#: Marlin_main.cpp:5264
-msgid "Wait for user..."
-msgstr "Czekam na uzytkownika..."
-
-# MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
-msgid "Waiting for nozzle and bed cooling"
-msgstr "Oczekiwanie na wychlodzenie dyszy i stolu"
-
-# MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
-msgid "Waiting for PINDA probe cooling"
-msgstr "Czekam az spadnie temp. sondy PINDA"
-
-# 
-#: 
-msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
-msgstr "Uzyj opcji Rozladuj jesli filament wystaje z tylnej rurki MMU. Uzyj opcji Wysun jesli wciaz jest w srodku."
-
-# MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
-msgid "Warning: both printer type and motherboard type changed."
-msgstr "Ostrzezenie: typ drukarki i plyta glowna ulegly zmianie."
-
-# MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
-msgid "Warning: motherboard type changed."
-msgstr "Ostrzezenie: plyta glowna ulegla zmianie."
-
-# MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
-msgid "Warning: printer type changed."
-msgstr "Ostrzezenie: rodzaj drukarki ulegl zmianie"
-
-# MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
-msgid "Was filament unload successful?"
-msgstr "Rozladowanie fil. ok?"
-
-# MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
-msgid "Wiring error"
-msgstr "Blad polaczenia"
-
-# MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
-msgid "Wizard"
-msgstr "Asystent"
-
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
-msgid "XYZ cal. details"
-msgstr "Szczegoly kal. XYZ"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
-msgid "XYZ calibration failed. Please consult the manual."
-msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
-
-# MSG_YES
-#: messages.c:104
-msgid "Yes"
-msgstr "Tak"
-
-# MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
-msgid "You can always resume the Wizard from Calibration -> Wizard."
-msgstr "Zawsze mozesz uruchomic Asystenta ponownie przez Kalibracja -> Asystent."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
-msgid "XYZ calibration all right. Skew will be corrected automatically."
-msgstr "Kalibracja XYZ pomyslna. Skos bedzie automatycznie korygowany."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
-msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
-msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
-
-# 
-#: ultralcd.cpp:5197
-msgid "X-correct:"
-msgstr "Korekcja-X:"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
-msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
-msgstr "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
-msgid "XYZ calibration compromised. Front calibration points not reachable."
-msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne."
-
-# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
-msgid "XYZ calibration compromised. Right front calibration point not reachable."
-msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
-
-# MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
-msgid "Load all"
-msgstr "Zalad. wszystkie"
-
-# 
-#: ultralcd.cpp:3879
-msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych."
-
-# 
-#: ultralcd.cpp:3885
-msgid "XYZ calibration failed. Front calibration points not reachable."
-msgstr "Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic montaz drukarki."
-
-# 
-#: ultralcd.cpp:3888
-msgid "XYZ calibration failed. Right front calibration point not reachable."
-msgstr "Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
-
-# 
-#: ultralcd.cpp:3009
-msgid "Y distance from min"
-msgstr "Dystans od 0 w osi Y"
-
-# 
-#: ultralcd.cpp:5198
-msgid "Y-correct:"
-msgstr "Korekcja-Y:"
-
-# MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [wyl]"
-
-# 
-#: messages.c:57
-msgid "Back"
-msgstr "Wstecz"
-
-# 
-#: ultralcd.cpp:5706
-msgid "Checks"
-msgstr "Testy"
-
-# 
-#: ultralcd.cpp:8080
-msgid "False triggering"
-msgstr "Falszywy alarm"
-
-# 
-#: ultralcd.cpp:4027
-msgid "FINDA:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware   [brak]"
-
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [restr.]"
-
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware[ostrzez]"
-
-# 
-#: messages.c:87
-msgid "HW Setup"
-msgstr "Ustawienia HW"
-
-# 
-#: ultralcd.cpp:4031
-msgid "IR:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Kor. magnesow[N/D]"
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Kor. magnesow[wyl]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Kor. magnesow [wl]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Siatka       [3x3]"
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Siatka       [7x7]"
-
-# 
-#: ultralcd.cpp:5744
-msgid "Mesh bed leveling"
-msgstr "Poziomowanie stolu"
-
-# 
-#: Marlin_main.cpp:852
-msgid "MK3S firmware detected on MK3 printer"
-msgstr "Wykryto firmware MK3S w drukarce MK3"
-
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "Tryb MMU[Normaln]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "Tryb MMU[Stealth]"
-
-# 
-#: ultralcd.cpp:4508
-msgid "Mode change in progress ..."
-msgstr "Trwa zmiana trybu..."
-
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Model      [brak]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Model [restrykc.]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Model  [ostrzez.]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Sr. dyszy  [0,25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Sr. dyszy  [0,40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Sr. dyszy  [0,60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Dysza      [brak]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Dysza [restrykc.]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Dysza  [ostrzez.]"
-
-# 
-#: util.cpp:514
-msgid "G-code sliced for a different level. Continue?"
-msgstr ""
-
-# 
-#: util.cpp:520
-msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr "G-code pociety na innym poziomie. Potnij model ponownie. Druk anulowany."
-
-# 
-#: util.cpp:431
-msgid "G-code sliced for a different printer type. Continue?"
-msgstr "G-code pociety dla innej drukarki. Kontynuowac?"
-
-# 
-#: util.cpp:437
-msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
-msgstr "G-code pociety dla drukarki innego typu. Potnij model ponownie. Druk anulowany."
-
-# 
-#: util.cpp:481
-msgid "G-code sliced for a newer firmware. Continue?"
-msgstr "G-code pociety dla nowszego firmware. Kontynuowac?"
-
-# 
-#: util.cpp:487
-msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
-msgstr "G-code pociety dla nowszego firmware. Zaktualizuj firmware. Druk anulowany."
-
-# 
-#: ultralcd.cpp:4023
-msgid "PINDA:"
-msgstr ""
-
-# 
-#: ultralcd.cpp:2462
-msgid "Preheating to cut"
-msgstr "Nagrzewanie do obciecia"
-
-# 
-#: ultralcd.cpp:2459
-msgid "Preheating to eject"
-msgstr "Nagrzewanie do wysuniecia"
-
-# 
-#: util.cpp:394
-msgid "Printer nozzle diameter differs from the G-code. Continue?"
-msgstr "Srednica dyszy drukarki rozni sie od tej w G-code. Kontynuowac?"
-
-# 
-#: util.cpp:401
-msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
-msgstr "Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
-
-# 
-#: ultralcd.cpp:6786
-msgid "Rename"
-msgstr "Zmien nazwe"
-
-# 
-#: ultralcd.cpp:6779
-msgid "Select"
-msgstr "Wybierz"
-
-# 
-#: ultralcd.cpp:2229
-msgid "Sensor info"
-msgstr "Info o sensorach"
-
-# 
-#: messages.c:58
-msgid "Sheet"
-msgstr "Plyta"
-
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Dzwiek   [asyst.]"
-
-# 
-#: ultralcd.cpp:5704
-msgid "Steel sheets"
-msgstr "Plyty stalowe"
-
-# 
-#: ultralcd.cpp:5199
-msgid "Z-correct:"
-msgstr "Korekcja-Z:"
-
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Ilosc Pomiarow [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Ilosc Pomiarow [3]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Ilosc Pomiarow [5]"
-
+# Translation of Prusa-Firmware into Polish.
+#
+msgid ""
+msgstr ""
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: pl\n"
+"Project-Id-Version: Prusa-Firmware\n"
+"POT-Creation-Date: Fri May 15 18:16:57 CEST 2020\n"
+"PO-Revision-Date: Fri May 15 18:16:57 CEST 2020\n"
+"Language-Team: \n"
+"X-Generator: Poedit 2.0.7\n"
+"X-Poedit-SourceCharset: UTF-8\n"
+"Last-Translator: \n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+# 
+#: 
+msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
+msgstr "[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
+
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 lub starszy"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 lub nowszy"
+
+# MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
+#: messages.c:36
+msgid " of 4"
+msgstr " z 4"
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
+#: messages.c:56
+msgid " of 9"
+msgstr " z 9"
+
+# MSG_MEASURED_OFFSET
+#: ultralcd.cpp:3064
+msgid "[0;0] point offset"
+msgstr "[0;0] przesun.punktu"
+
+# MSG_CRASH_DET_ONLY_IN_NORMAL c=20 r=4
+#: 
+msgid "Crash detection can\x0abe turned on only in\x0aNormal mode"
+msgstr "Wykrywanie zderzen\x0amoze byc wlaczone\x0atylko w\x0atrybie Normalnym"
+
+# MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
+#: 
+msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
+msgstr "UWAGA:\x0aWykrywanie zderzen\x0awylaczone w\x0atrybie Stealth"
+
+# 
+#: ultralcd.cpp:2460
+msgid ">Cancel"
+msgstr ">Anuluj"
+
+# MSG_BABYSTEPPING_Z c=15
+#: ultralcd.cpp:3184
+msgid "Adjusting Z:"
+msgstr "Ustawianie Z:"
+
+# MSG_SELFTEST_CHECK_ALLCORRECT c=20
+#: ultralcd.cpp:8677
+msgid "All correct      "
+msgstr "Wszystko OK "
+
+# MSG_WIZARD_DONE c=20 r=8
+#: messages.c:99
+msgid "All is done. Happy printing!"
+msgstr "Gotowe. Udanego drukowania!"
+
+# 
+#: ultralcd.cpp:1956
+msgid "Ambient"
+msgstr "Otoczenie"
+
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
+msgid "and press the knob"
+msgstr "i nacisnij pokretlo"
+
+# MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
+#: ultralcd.cpp:3506
+msgid "Are left and right Z~carriages all up?"
+msgstr "Obydwa konce osi sa na szczycie?"
+
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
+
+# MSG_AUTO_HOME
+#: messages.c:11
+msgid "Auto home"
+msgstr "Auto zerowanie"
+
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
+msgid "AutoLoad filament"
+msgstr "Autoladowanie fil."
+
+# MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
+#: ultralcd.cpp:4445
+msgid "Autoloading filament available only when filament sensor is turned on..."
+msgstr "Autoladowanie fil. dostepne tylko gdy czujnik filamentu jest wlaczony..."
+
+# MSG_AUTOLOADING_ENABLED c=20 r=4
+#: ultralcd.cpp:2804
+msgid "Autoloading filament is active, just press the knob and insert filament..."
+msgstr "Autoladowanie filamentu wlaczone, nacisnij pokretlo i wsun filament..."
+
+# MSG_SELFTEST_AXIS_LENGTH
+#: ultralcd.cpp:8325
+msgid "Axis length"
+msgstr "Dlugosc osi"
+
+# MSG_SELFTEST_AXIS
+#: ultralcd.cpp:8327
+msgid "Axis"
+msgstr "Os"
+
+# MSG_SELFTEST_BEDHEATER
+#: ultralcd.cpp:8269
+msgid "Bed / Heater"
+msgstr "Stol / Grzanie"
+
+# MSG_BED_DONE
+#: messages.c:15
+msgid "Bed done"
+msgstr "Stol OK"
+
+# MSG_BED_HEATING
+#: messages.c:16
+msgid "Bed Heating"
+msgstr "Grzanie stolu.."
+
+# MSG_BED_CORRECTION_MENU
+#: ultralcd.cpp:5861
+msgid "Bed level correct"
+msgstr "Korekta stolu"
+
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test paskow"
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
+msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
+msgstr "Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Jasny"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Jasnosc"
+
+# MSG_BED
+#: messages.c:14
+msgid "Bed"
+msgstr "Stol"
+
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
+msgid "Belt status"
+msgstr "Stan paskow"
+
+# MSG_RECOVER_PRINT c=20 r=2
+#: messages.c:67
+msgid "Blackout occurred. Recover print?"
+msgstr "Wykryto zanik napiecia. Kontynowac?"
+
+# 
+#: ultralcd.cpp:8679
+msgid "Calibrating home"
+msgstr "Zerowanie osi"
+
+# MSG_CALIBRATE_BED
+#: ultralcd.cpp:5850
+msgid "Calibrate XYZ"
+msgstr "Kalibracja XYZ"
+
+# MSG_HOMEYZ
+#: messages.c:44
+msgid "Calibrate Z"
+msgstr "Kalibruj Z"
+
+# MSG_CALIBRATE_PINDA c=17 r=1
+#: ultralcd.cpp:4637
+msgid "Calibrate"
+msgstr "Kalibruj"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
+
+# MSG_CALIBRATE_Z_AUTO c=20 r=2
+#: messages.c:19
+msgid "Calibrating Z"
+msgstr "Kalibruje Z"
+
+# MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
+#: ultralcd.cpp:3469
+msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
+msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
+
+# MSG_HOMEYZ_DONE
+#: ultralcd.cpp:865
+msgid "Calibration done"
+msgstr "Kalibracja OK"
+
+# MSG_MENU_CALIBRATION
+#: messages.c:57
+msgid "Calibration"
+msgstr "Kalibracja"
+
+# 
+#: ultralcd.cpp:4815
+msgid "Cancel"
+msgstr "Anuluj"
+
+# MSG_SD_REMOVED
+#: ultralcd.cpp:9090
+msgid "Card removed"
+msgstr "Karta wyjeta"
+
+# MSG_NOT_COLOR
+#: ultralcd.cpp:2709
+msgid "Color not correct"
+msgstr "Kolor zanieczysz."
+
+# MSG_COOLDOWN
+#: messages.c:22
+msgid "Cooldown"
+msgstr "Chlodzenie"
+
+# 
+#: ultralcd.cpp:4570
+msgid "Copy selected language?"
+msgstr "Skopiowac wybrany jezyk?"
+
+# MSG_CRASHDETECT_ON
+#: messages.c:24
+msgid "Crash det."
+msgstr "Wykr.zderzen"
+
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Wybierz filament do Kalibracji Pierwszej Warstwy i potwierdz w menu ekranowym."
+
+# MSG_CRASH_DETECTED c=20 r=1
+#: messages.c:23
+msgid "Crash detected."
+msgstr "Zderzenie wykryte"
+
+# 
+#: Marlin_main.cpp:607
+msgid "Crash detected. Resume print?"
+msgstr "Wykryto zderzenie. Wznowic druk?"
+
+# 
+#: ultralcd.cpp:1785
+msgid "Crash"
+msgstr "Zderzenie"
+
+# MSG_CURRENT c=19 r=1
+#: ultralcd.cpp:6002
+msgid "Current"
+msgstr "Aktualne"
+
+# MSG_DATE c=17 r=1
+#: ultralcd.cpp:2163
+msgid "Date:"
+msgstr "Data:"
+
+# MSG_DISABLE_STEPPERS
+#: ultralcd.cpp:5743
+msgid "Disable steppers"
+msgstr "Wylacz silniki"
+
+# MSG_BABYSTEP_Z_NOT_SET c=20 r=12
+#: messages.c:13
+msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
+msgstr "Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr "Kont."
+
+# MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
+#: ultralcd.cpp:5125
+msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
+msgstr "Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
+
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
+msgid "E-correct:"
+msgstr "Korekcja-E:"
+
+# MSG_EJECT_FILAMENT c=17 r=1
+#: messages.c:49
+msgid "Eject filament"
+msgstr "Wysun filament"
+
+# MSG_EJECTING_FILAMENT c=20 r=1
+#: mmu.cpp:1416
+msgid "Ejecting filament"
+msgstr "Wysuwanie filamentu"
+
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
+msgid "Endstop not hit"
+msgstr "Krancowka nie aktyw."
+
+# MSG_SELFTEST_ENDSTOP
+#: ultralcd.cpp:8287
+msgid "Endstop"
+msgstr "Krancowka"
+
+# MSG_SELFTEST_ENDSTOPS
+#: ultralcd.cpp:8275
+msgid "Endstops"
+msgstr "Krancowki"
+
+# MSG_STACK_ERROR c=20 r=4
+#: ultralcd.cpp:6998
+msgid "Error - static memory has been overwritten"
+msgstr "Blad - pamiec statyczna zostala nadpisana"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Ciecie filamentu"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Nozyk"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Obcinanie fil."
+
+# MSG_FSENS_NOT_RESPONDING c=20 r=4
+#: ultralcd.cpp:4458
+msgid "ERROR: Filament sensor is not responding, please check connection."
+msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
+
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr "Sciemn"
+
+# MSG_ERROR
+#: messages.c:25
+msgid "ERROR:"
+msgstr "BLAD:"
+
+# MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
+#: ultralcd.cpp:8686
+msgid "Extruder fan:"
+msgstr "WentHotend:"
+
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
+msgid "Extruder info"
+msgstr "Ekstruder - info"
+
+# MSG_MOVE_E
+#: messages.c:26
+msgid "Extruder"
+msgstr "Ekstruder"
+
+# 
+#: ultralcd.cpp:6985
+msgid "Fail stats MMU"
+msgstr "Bledy MMU"
+
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "Autolad. fil."
+
+# 
+#: ultralcd.cpp:6982
+msgid "Fail stats"
+msgstr "Statystyki bledow"
+
+# MSG_FAN_SPEED c=14
+#: messages.c:28
+msgid "Fan speed"
+msgstr "Predkosc went."
+
+# MSG_SELFTEST_FAN c=20
+#: messages.c:74
+msgid "Fan test"
+msgstr "Test wentylatora"
+
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Sprawd.went."
+
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Czuj. filam."
+
+#  c=14
+#: ultralcd.cpp:1784
+msgid "Filam. runouts"
+msgstr "Konc.filamentu"
+
+# MSG_FILAMENT_CLEAN c=20 r=2
+#: messages.c:29
+msgid "Filament extruding & with correct color?"
+msgstr "Filament wychodzi z dyszy,kolor jest ok?"
+
+# MSG_NOT_LOADED c=19
+#: ultralcd.cpp:2705
+msgid "Filament not loaded"
+msgstr "Fil. nie zaladowany"
+
+# MSG_FILAMENT_SENSOR c=20
+#: messages.c:80
+msgid "Filament sensor"
+msgstr "Czujnik filamentu"
+
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
+msgid "Filament used"
+msgstr "Uzyty filament"
+
+# MSG_PRINT_TIME c=19 r=1
+#: ultralcd.cpp:2870
+msgid "Print time"
+msgstr "Czas druku"
+
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "Akcja FS"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 lub nowszy"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
+msgid "File incomplete. Continue anyway?"
+msgstr "Plik niekompletny. Kontynowac?"
+
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
+msgid "Finishing movements"
+msgstr "Konczenie druku"
+
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
+msgid "First layer cal."
+msgstr "Kal. 1. warstwy"
+
+# MSG_WIZARD_SELFTEST c=20 r=8
+#: ultralcd.cpp:5046
+msgid "First, I will run the selftest to check most common assembly problems."
+msgstr "Najpierw wlacze selftest w celu sprawdzenia najczestszych problemow podczas montazu."
+
+# 
+#: mmu.cpp:727
+msgid "Fix the issue and then press button on MMU unit."
+msgstr "Rozwiaz problem i wcisnij przycisk na MMU."
+
+# MSG_FLOW
+#: ultralcd.cpp:7125
+msgid "Flow"
+msgstr "Przeplyw"
+
+# MSG_PRUSA3D_FORUM
+#: ultralcd.cpp:2156
+msgid "forum.prusa3d.com"
+msgstr ""
+
+# MSG_SELFTEST_COOLING_FAN c=20
+#: messages.c:71
+msgid "Front print fan?"
+msgstr "Przedni went. druku?"
+
+# MSG_BED_CORRECTION_FRONT c=14 r=1
+#: ultralcd.cpp:3266
+msgid "Front side[um]"
+msgstr "Przod [um]"
+
+# MSG_SELFTEST_FANS
+#: ultralcd.cpp:8333
+msgid "Front/left fans"
+msgstr "Przedni/lewy wentylator"
+
+# MSG_SELFTEST_HEATERTHERMISTOR
+#: ultralcd.cpp:8263
+msgid "Heater/Thermistor"
+msgstr "Grzalka/Termistor"
+
+# MSG_BED_HEATING_SAFETY_DISABLED
+#: Marlin_main.cpp:9440
+msgid "Heating disabled by safety timer."
+msgstr "Grzanie wylaczone przez wyl. czasowy"
+
+# MSG_HEATING_COMPLETE c=20
+#: messages.c:43
+msgid "Heating done."
+msgstr "Grzanie zakonczone"
+
+# MSG_HEATING
+#: messages.c:42
+msgid "Heating"
+msgstr "Grzanie..."
+
+# MSG_WIZARD_WELCOME c=20 r=7
+#: ultralcd.cpp:5025
+msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
+msgstr "Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z ustawieniem?"
+
+# MSG_PRUSA3D_HOWTO
+#: ultralcd.cpp:2157
+msgid "howto.prusa3d.com"
+msgstr ""
+
+# MSG_FILAMENTCHANGE
+#: messages.c:34
+msgid "Change filament"
+msgstr "Wymiana filamentu"
+
+# MSG_CHANGE_SUCCESS
+#: ultralcd.cpp:2620
+msgid "Change success!"
+msgstr "Wymiana ok!"
+
+# MSG_CORRECTLY c=20
+#: ultralcd.cpp:2697
+msgid "Changed correctly?"
+msgstr "Wymiana ok?"
+
+# MSG_SELFTEST_CHECK_BED c=20
+#: messages.c:77
+msgid "Checking bed     "
+msgstr "Kontrola stolu"
+
+# MSG_SELFTEST_CHECK_ENDSTOPS c=20
+#: ultralcd.cpp:8668
+msgid "Checking endstops"
+msgstr "Kontrola krancowek"
+
+# MSG_SELFTEST_CHECK_HOTEND c=20
+#: ultralcd.cpp:8674
+msgid "Checking hotend  "
+msgstr "Kontrola hotendu"
+
+# MSG_SELFTEST_CHECK_FSENSOR c=20
+#: messages.c:78
+msgid "Checking sensors "
+msgstr "Kontrola czujnikow"
+
+# MSG_SELFTEST_CHECK_X c=20
+#: ultralcd.cpp:7482
+msgid "Checking X axis  "
+msgstr "Kontrola osi X"
+
+# MSG_SELFTEST_CHECK_Y c=20
+#: ultralcd.cpp:7491
+msgid "Checking Y axis  "
+msgstr "Kontrola osi Y"
+
+# MSG_SELFTEST_CHECK_Z c=20
+#: ultralcd.cpp:8671
+msgid "Checking Z axis  "
+msgstr "Kontrola osi Z"
+
+# MSG_CHOOSE_EXTRUDER c=20 r=1
+#: messages.c:45
+msgid "Choose extruder:"
+msgstr "Wybierz ekstruder:"
+
+# MSG_CHOOSE_FILAMENT c=20 r=1
+#: messages.c:46
+msgid "Choose filament:"
+msgstr "Wybierz filament:"
+
+# MSG_FILAMENT c=17 r=1
+#: messages.c:27
+msgid "Filament"
+msgstr ""
+
+# MSG_WIZARD_XYZ_CAL c=20 r=8
+#: ultralcd.cpp:5055
+msgid "I will run xyz calibration now. It will take approx. 12 mins."
+msgstr "Przeprowadze teraz kalibracje XYZ. Zajmie ok. 12 min."
+
+# MSG_WIZARD_Z_CAL c=20 r=8
+#: ultralcd.cpp:5063
+msgid "I will run z calibration now."
+msgstr "Przeprowadze kalibracje Z."
+
+# MSG_WATCH
+#: messages.c:97
+msgid "Info screen"
+msgstr "Ekran informacyjny"
+
+# MSG_INSERT_FILAMENT c=20
+#: ultralcd.cpp:2605
+msgid "Insert filament"
+msgstr "Wprowadz filament"
+
+# MSG_WIZARD_FILAMENT_LOADED c=20 r=2
+#: ultralcd.cpp:4835
+msgid "Is filament loaded?"
+msgstr "Filament jest zaladowany?"
+
+# MSG_STEEL_SHEET_CHECK c=20 r=2
+#: messages.c:90
+msgid "Is steel sheet on heatbed?"
+msgstr "Czy plyta stal. jest na podgrzew. stole?"
+
+# 
+#: ultralcd.cpp:1727
+msgid "Last print failures"
+msgstr "Ostatnie bledy druku"
+
+# 
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Jesli masz dodatkowe plyty stalowe, to skalibruj ich ustawienia w menu Ustawienia - Ustawienia HW - Plyty stalowe."
+
+# 
+#: ultralcd.cpp:1704
+msgid "Last print"
+msgstr "Ost. wydruk"
+
+# MSG_SELFTEST_EXTRUDER_FAN c=20
+#: messages.c:72
+msgid "Left hotend fan?"
+msgstr "Lewy went hotendu?"
+
+# 
+#: ultralcd.cpp:2993
+msgid "Left"
+msgstr "Lewa"
+
+# MSG_BED_CORRECTION_LEFT c=14 r=1
+#: ultralcd.cpp:3264
+msgid "Left side [um]"
+msgstr "Lewo [um]"
+
+# 
+#: ultralcd.cpp:5766
+msgid "Lin. correction"
+msgstr "Korekcja liniowa"
+
+# MSG_BABYSTEP_Z
+#: messages.c:12
+msgid "Live adjust Z"
+msgstr "Ustaw. Live Z"
+
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Wsun filament (nie uzywaj funkcji ladowania) do ekstrudera i nacisnij pokretlo."
+
+# MSG_LOAD_FILAMENT c=17
+#: messages.c:47
+msgid "Load filament"
+msgstr "Ladowanie fil."
+
+# MSG_LOADING_COLOR
+#: ultralcd.cpp:2645
+msgid "Loading color"
+msgstr "Czyszcz. koloru"
+
+# MSG_LOADING_FILAMENT c=20
+#: messages.c:48
+msgid "Loading filament"
+msgstr "Laduje filament"
+
+# MSG_LOOSE_PULLEY c=20 r=1
+#: ultralcd.cpp:8317
+msgid "Loose pulley"
+msgstr "Luzne kolo pasowe"
+
+# 
+#: ultralcd.cpp:6944
+msgid "Load to nozzle"
+msgstr "Zaladuj do dyszy"
+
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
+msgid "M117 First layer cal."
+msgstr "M117 Kal. 1. warstwy"
+
+# MSG_MAIN
+#: messages.c:52
+msgid "Main"
+msgstr "Menu glowne"
+
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Poziom jasn."
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr "Poziom ciem."
+
+# MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
+#: messages.c:55
+msgid "Measuring reference height of calibration point"
+msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego"
+
+# MSG_MESH_BED_LEVELING
+#: ultralcd.cpp:5856
+msgid "Mesh Bed Leveling"
+msgstr "Poziomowanie stolu wg siatki"
+
+# MSG_MMU_OK_RESUMING_POSITION c=20 r=4
+#: mmu.cpp:765
+msgid "MMU OK. Resuming position..."
+msgstr "MMU OK. Wznawianie pozycji."
+
+# MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
+#: mmu.cpp:758
+msgid "MMU OK. Resuming temperature..."
+msgstr "MMU OK. Wznawiam nagrzewanie..."
+
+# 
+#: ultralcd.cpp:3034
+msgid "Measured skew"
+msgstr "Zmierzony skos"
+
+# 
+#: ultralcd.cpp:1728
+msgid "MMU fails"
+msgstr "Bledy MMU"
+
+# 
+#: mmu.cpp:1588
+msgid "MMU load failed     "
+msgstr "Blad ladowania MMU"
+
+# 
+#: ultralcd.cpp:1729
+msgid "MMU load fails"
+msgstr "Bledy ladow. MMU"
+
+# MSG_MMU_OK_RESUMING c=20 r=4
+#: mmu.cpp:776
+msgid "MMU OK. Resuming..."
+msgstr "MMU OK. Wznawianie..."
+
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Tryb"
+
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Wykryto firmware MK3 w drukarce MK3S"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr "Normalni"
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Cichy"
+
+# 
+#: mmu.cpp:722
+msgid "MMU needs user attention."
+msgstr "MMU wymaga uwagi uzytkownika."
+
+# 
+#: ultralcd.cpp:1755
+msgid "MMU power fails"
+msgstr "Zaniki zasil. MMU"
+
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Cichy"
+
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Automatycz"
+
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Wysoka wyd."
+
+# 
+#: ultralcd.cpp:2186
+msgid "MMU2 connected"
+msgstr "MMU podlaczone"
+
+# MSG_SELFTEST_MOTOR
+#: messages.c:79
+msgid "Motor"
+msgstr "Silnik"
+
+# MSG_MOVE_AXIS
+#: ultralcd.cpp:5741
+msgid "Move axis"
+msgstr "Ruch osi"
+
+# MSG_MOVE_X
+#: ultralcd.cpp:4361
+msgid "Move X"
+msgstr "Ruch osi X"
+
+# MSG_MOVE_Y
+#: ultralcd.cpp:4362
+msgid "Move Y"
+msgstr "Ruch osi Y"
+
+# MSG_MOVE_Z
+#: ultralcd.cpp:4363
+msgid "Move Z"
+msgstr "Ruch osi Z"
+
+# MSG_NO_MOVE
+#: Marlin_main.cpp:5541
+msgid "No move."
+msgstr "Brak ruchu."
+
+# MSG_NO_CARD
+#: ultralcd.cpp:6911
+msgid "No SD card"
+msgstr "Brak karty SD"
+
+# MSG_NA
+#: messages.c:107
+msgid "N/A"
+msgstr "N/D"
+
+# MSG_NO
+#: messages.c:58
+msgid "No"
+msgstr "Nie"
+
+# MSG_SELFTEST_NOTCONNECTED
+#: ultralcd.cpp:8265
+msgid "Not connected"
+msgstr "Nie podlaczono "
+
+# 
+#: util.cpp:293
+msgid "New firmware version available:"
+msgstr "Dostepna nowa wersja firmware:"
+
+# MSG_SELFTEST_FAN_NO c=19
+#: messages.c:75
+msgid "Not spinning"
+msgstr "Nie kreci sie"
+
+# MSG_WIZARD_V2_CAL c=20 r=8
+#: ultralcd.cpp:4946
+msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
+msgstr "Kalibruje odleglosc miedzy koncowka dyszy a powierzchnia druku."
+
+# MSG_WIZARD_WILL_PREHEAT c=20 r=4
+#: ultralcd.cpp:5071
+msgid "Now I will preheat nozzle for PLA."
+msgstr "Nagrzewam dysze dla PLA."
+
+# MSG_NOZZLE
+#: messages.c:59
+msgid "Nozzle"
+msgstr "Dysza"
+
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
+msgid "Old settings found. Default PID, Esteps etc. will be set."
+msgstr "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
+
+# 
+#: ultralcd.cpp:5062
+msgid "Now remove the test print from steel sheet."
+msgstr "Teraz zdejmij wydruk testowy ze stolu."
+
+# 
+#: ultralcd.cpp:1654
+msgid "Nozzle FAN"
+msgstr "WentHotend"
+
+# MSG_PAUSE_PRINT
+#: ultralcd.cpp:6875
+msgid "Pause print"
+msgstr "Wstrzymanie wydruku"
+
+# MSG_PID_RUNNING c=20 r=1
+#: ultralcd.cpp:1539
+msgid "PID cal.           "
+msgstr "Kalibracja PID"
+
+# MSG_PID_FINISHED c=20 r=1
+#: ultralcd.cpp:1545
+msgid "PID cal. finished"
+msgstr "Kal. PID zakonczona"
+
+# MSG_PID_EXTRUDER c=17 r=1
+#: ultralcd.cpp:5862
+msgid "PID calibration"
+msgstr "Kalibracja PID"
+
+# MSG_PINDA_PREHEAT c=20 r=1
+#: ultralcd.cpp:896
+msgid "PINDA Heating"
+msgstr "Grzanie sondy PINDA"
+
+# MSG_PAPER c=20 r=10
+#: messages.c:60
+msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
+msgstr "Umiesc kartke papieru na stole roboczym i podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke."
+
+# MSG_WIZARD_CLEAN_HEATBED c=20 r=8
+#: ultralcd.cpp:5128
+msgid "Please clean heatbed and then press the knob."
+msgstr "Oczysc powierzchnie druku i nacisnij pokretlo."
+
+# MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
+#: messages.c:21
+msgid "Please clean the nozzle for calibration. Click when done."
+msgstr "Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem."
+
+# MSG_SELFTEST_PLEASECHECK
+#: ultralcd.cpp:8257
+msgid "Please check :"
+msgstr "Sprawdz :"
+
+# MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
+#: messages.c:98
+msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
+msgstr "Przeczytaj nasz Podrecznik druku 3D aby naprawic problem. Potem wznow Asystenta przez restart drukarki."
+
+# MSG_CHECK_IDLER c=20 r=4
+#: Marlin_main.cpp:3138
+msgid "Please open idler and remove filament manually."
+msgstr "Prosze odciagnac dzwignie dociskowa ekstrudera i recznie usunac filament."
+
+# MSG_PLACE_STEEL_SHEET c=20 r=4
+#: messages.c:61
+msgid "Please place steel sheet on heatbed."
+msgstr "Prosze umiescic plyte stalowa na stole podgrzewanym."
+
+# MSG_PRESS_TO_UNLOAD c=20 r=4
+#: messages.c:64
+msgid "Please press the knob to unload filament"
+msgstr "Nacisnij pokretlo aby rozladowac filament"
+
+# MSG_PULL_OUT_FILAMENT c=20 r=4
+#: messages.c:66
+msgid "Please pull out filament immediately"
+msgstr "Wyciagnij filament teraz"
+
+# MSG_EJECT_REMOVE c=20 r=4
+#: mmu.cpp:1422
+msgid "Please remove filament and then press the knob."
+msgstr "Wyciagnij filament i wcisnij pokretlo."
+
+# MSG_REMOVE_STEEL_SHEET c=20 r=4
+#: messages.c:70
+msgid "Please remove steel sheet from heatbed."
+msgstr "Prosze zdjac plyte stalowa z podgrzewanego stolu."
+
+# MSG_RUN_XYZ c=20 r=4
+#: Marlin_main.cpp:4583
+msgid "Please run XYZ calibration first."
+msgstr "Prosze najpierw uruchomic kalibracje XYZ"
+
+# MSG_UPDATE_MMU2_FW c=20 r=4
+#: mmu.cpp:1341
+msgid "Please update firmware in your MMU2. Waiting for reset."
+msgstr "Prosze zaktualizowac Firmware MMU2. Czekam na reset."
+
+# MSG_PLEASE_WAIT c=20
+#: messages.c:62
+msgid "Please wait"
+msgstr "Prosze czekac"
+
+# 
+#: ultralcd.cpp:5061
+msgid "Please remove shipping helpers first."
+msgstr "Najpierw usun zabezpieczenia transportowe"
+
+# MSG_PREHEAT_NOZZLE c=20
+#: messages.c:63
+msgid "Preheat the nozzle!"
+msgstr "Nagrzej dysze!"
+
+# MSG_PREHEAT
+#: ultralcd.cpp:6853
+msgid "Preheat"
+msgstr "Grzanie"
+
+# MSG_WIZARD_HEATING c=20 r=3
+#: messages.c:100
+msgid "Preheating nozzle. Please wait."
+msgstr "Nagrzewanie dyszy. Prosze czekac."
+
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
+# 
+#: util.cpp:297
+msgid "Please upgrade."
+msgstr "Prosze zaktualizowac."
+
+# MSG_PRESS_TO_PREHEAT c=20 r=4
+#: Marlin_main.cpp:11526
+msgid "Press knob to preheat nozzle and continue."
+msgstr "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
+
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr "Pauza"
+
+# 
+#: ultralcd.cpp:1783
+msgid "Power failures"
+msgstr "Zaniki zasilania"
+
+# MSG_PRINT_ABORTED c=20
+#: messages.c:65
+msgid "Print aborted"
+msgstr "Druk przerwany"
+
+#  c=20
+#: ultralcd.cpp:2442
+msgid "Preheating to load"
+msgstr "Nagrzew.do ladowania"
+
+#  c=20
+#: ultralcd.cpp:2446
+msgid "Preheating to unload"
+msgstr "Nagrzew. do rozlad."
+
+# MSG_SELFTEST_PRINT_FAN_SPEED c=18
+#: ultralcd.cpp:8689
+msgid "Print fan:"
+msgstr "WentWydruk:"
+
+# MSG_CARD_MENU
+#: messages.c:20
+msgid "Print from SD"
+msgstr "Druk z karty SD"
+
+# 
+#: ultralcd.cpp:2289
+msgid "Press the knob"
+msgstr "Wcisnij pokretlo"
+
+# MSG_PRINT_PAUSED c=20 r=1
+#: ultralcd.cpp:1118
+msgid "Print paused"
+msgstr "Druk wstrzymany"
+
+# 
+#: mmu.cpp:726
+msgid "Press the knob to resume nozzle temperature."
+msgstr "Wcisnij pokretlo aby wznowic podgrzewanie dyszy."
+
+# MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
+#: messages.c:38
+msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
+
+# 
+#: ultralcd.cpp:1655
+msgid "Print FAN"
+msgstr "WentWydruk"
+
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Wsun filament do ekstrudera i nacisnij pokretlo, aby go zaladowac."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Wsun filament do pierwszego kanalu w MMU2 i nacisnij pokretlo, aby go zaladowac."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Najpierw zaladuj filament."
+
+# MSG_PRUSA3D
+#: ultralcd.cpp:2155
+msgid "prusa3d.com"
+msgstr ""
+
+# MSG_BED_CORRECTION_REAR c=14 r=1
+#: ultralcd.cpp:3267
+msgid "Rear side [um]"
+msgstr "Tyl [um]"
+
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Najpierw rozladuj filament, nastepnie powtorz czynnosc."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
+msgid "Recovering print    "
+msgstr "Wznawianie wydruku  "
+
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
+msgid "Remove old filament and press the knob to start loading new filament."
+msgstr "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3S OK."
+msgstr ""
+
+# MSG_CALIBRATE_BED_RESET
+#: ultralcd.cpp:5867
+msgid "Reset XYZ calibr."
+msgstr "Reset kalibr. XYZ"
+
+# MSG_BED_CORRECTION_RESET
+#: ultralcd.cpp:3268
+msgid "Reset"
+msgstr ""
+
+# MSG_RESUME_PRINT
+#: ultralcd.cpp:6861
+msgid "Resume print"
+msgstr "Wznowic wydruk"
+
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
+msgid "Resuming print"
+msgstr "Wznawianie druku"
+
+# MSG_BED_CORRECTION_RIGHT c=14 r=1
+#: ultralcd.cpp:3265
+msgid "Right side[um]"
+msgstr "Prawo [um]"
+
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr "Port RPi"
+
+# MSG_WIZARD_RERUN c=20 r=7
+#: ultralcd.cpp:4864
+msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
+msgstr "Wlaczenie Asystenta usunie obecne dane kalibracyjne i zacznie od poczatku. Kontynuowac?"
+
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "Karta SD"
+
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
+
+# 
+#: ultralcd.cpp:2994
+msgid "Right"
+msgstr "Prawa"
+
+# MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
+#: messages.c:35
+msgid "Searching bed calibration point"
+msgstr "Szukam punktu kalibracyjnego na stole"
+
+# MSG_LANGUAGE_SELECT
+#: ultralcd.cpp:5779
+msgid "Select language"
+msgstr "Wybor jezyka"
+
+# MSG_SELFTEST_OK
+#: ultralcd.cpp:7812
+msgid "Self test OK"
+msgstr "Selftest OK"
+
+# MSG_SELFTEST_START c=20
+#: ultralcd.cpp:7582
+msgid "Self test start  "
+msgstr "Selftest startuje"
+
+# MSG_SELFTEST
+#: ultralcd.cpp:5843
+msgid "Selftest         "
+msgstr "Selftest "
+
+# MSG_SELFTEST_ERROR
+#: ultralcd.cpp:8255
+msgid "Selftest error !"
+msgstr "Blad selftest!"
+
+# MSG_SELFTEST_FAILED c=20
+#: messages.c:73
+msgid "Selftest failed  "
+msgstr "Selftest nieudany"
+
+# MSG_FORCE_SELFTEST c=20 r=8
+#: Marlin_main.cpp:1550
+msgid "Selftest will be run to calibrate accurate sensorless rehoming."
+msgstr "Zostanie uruchomiony Selftest aby dokladnie skalibrowac punkt bazowy bez krancowek"
+
+# 
+#: ultralcd.cpp:5102
+msgid "Select nozzle preheat temperature which matches your material."
+msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu."
+
+# MSG_SET_TEMPERATURE c=19 r=1
+#: ultralcd.cpp:3286
+msgid "Set temperature:"
+msgstr "Ustaw temperature:"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
+# MSG_SETTINGS
+#: messages.c:82
+msgid "Settings"
+msgstr "Ustawienia"
+
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
+msgid "Show end stops"
+msgstr "Pokaz krancowki"
+
+# 
+#: ultralcd.cpp:4008
+msgid "Sensor state"
+msgstr "Stan czujnikow"
+
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
+msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
+msgstr "Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
+
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Sortowanie"
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Brak"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Czas"
+
+# 
+#: ultralcd.cpp:3037
+msgid "Severe skew:"
+msgstr "Znaczny skos:"
+
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Alfab"
+
+# MSG_SORTING c=20 r=1
+#: cardreader.cpp:745
+msgid "Sorting files"
+msgstr "Sortowanie plikow"
+
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Glosny"
+
+# 
+#: ultralcd.cpp:3036
+msgid "Slight skew:"
+msgstr "Lekki skos:"
+
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Dzwiek"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr "Konce f"
+
+# 
+#: Marlin_main.cpp:5101
+msgid "Some problem encountered, Z-leveling enforced ..."
+msgstr "Wykryto problem, wymuszono poziomowanie osi Z."
+
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "1-raz"
+
+# MSG_SPEED
+#: ultralcd.cpp:7119
+msgid "Speed"
+msgstr "Predkosc"
+
+# MSG_SELFTEST_FAN_YES c=19
+#: messages.c:76
+msgid "Spinning"
+msgstr "Kreci sie"
+
+# MSG_TEMP_CAL_WARNING c=20 r=4
+#: Marlin_main.cpp:4596
+msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
+msgstr "Potrzebna jest stabilna temperatura otoczenia 21-26C i stabilne podloze."
+
+# MSG_STATISTICS
+#: ultralcd.cpp:6978
+msgid "Statistics  "
+msgstr "Statystyki"
+
+# MSG_STOP_PRINT
+#: messages.c:91
+msgid "Stop print"
+msgstr "Przerwanie druku"
+
+# MSG_STOPPED
+#: messages.c:92
+msgid "STOPPED. "
+msgstr "ZATRZYMANO."
+
+# MSG_SUPPORT
+#: ultralcd.cpp:6987
+msgid "Support"
+msgstr "Wsparcie"
+
+# MSG_SELFTEST_SWAPPED
+#: ultralcd.cpp:8335
+msgid "Swapped"
+msgstr "Zamieniono"
+
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Wybierz filament:"
+
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Kalib. temp."
+
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Wybierz temperature, ktora odpowiada Twojemu filamentowi."
+
+# MSG_CALIBRATION_PINDA_MENU c=17 r=1
+#: ultralcd.cpp:5873
+msgid "Temp. calibration"
+msgstr "Kalibracja temp."
+
+# MSG_TEMP_CAL_FAILED c=20 r=8
+#: ultralcd.cpp:3933
+msgid "Temperature calibration failed"
+msgstr "Kalibracja temperaturowa nieudana"
+
+# MSG_TEMP_CALIBRATION_DONE c=20 r=12
+#: messages.c:94
+msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
+msgstr "Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
+
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Czujnik sprawdzony, wyciagnij filament."
+
+# MSG_TEMPERATURE
+#: ultralcd.cpp:5739
+msgid "Temperature"
+msgstr "Temperatura"
+
+# MSG_MENU_TEMPERATURES c=15 r=1
+#: ultralcd.cpp:2218
+msgid "Temperatures"
+msgstr "Temperatury"
+
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
+msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
+msgstr "Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
+
+# 
+#: ultralcd.cpp:2891
+msgid "Total filament"
+msgstr "Zuzycie filamentu"
+
+# 
+#: ultralcd.cpp:2892
+msgid "Total print time"
+msgstr "Laczny czas druku"
+
+# MSG_TUNE
+#: ultralcd.cpp:6850
+msgid "Tune"
+msgstr "Strojenie"
+
+# 
+#: 
+msgid "Unload"
+msgstr "Rozladuj"
+
+# 
+#: ultralcd.cpp:1752
+msgid "Total failures"
+msgstr "Suma bledow"
+
+# 
+#: ultralcd.cpp:2296
+msgid "to load filament"
+msgstr "aby zaladow. fil."
+
+# 
+#: ultralcd.cpp:2300
+msgid "to unload filament"
+msgstr "aby rozlad. filament"
+
+# MSG_UNLOAD_FILAMENT c=17
+#: messages.c:95
+msgid "Unload filament"
+msgstr "Rozladowanie fil."
+
+# MSG_UNLOADING_FILAMENT c=20 r=1
+#: messages.c:96
+msgid "Unloading filament"
+msgstr "Rozladowuje filament"
+
+# 
+#: ultralcd.cpp:1705
+msgid "Total"
+msgstr "Suma"
+
+# MSG_USED c=19 r=1
+#: ultralcd.cpp:6001
+msgid "Used during print"
+msgstr "Uzyte podczas druku"
+
+# MSG_MENU_VOLTAGES c=15 r=1
+#: ultralcd.cpp:2221
+msgid "Voltages"
+msgstr "Napiecia"
+
+# 
+#: ultralcd.cpp:2194
+msgid "unknown"
+msgstr "nieznane"
+
+# MSG_USERWAIT
+#: Marlin_main.cpp:5511
+msgid "Wait for user..."
+msgstr "Czekam na uzytkownika..."
+
+# MSG_WAITING_TEMP c=20 r=3
+#: ultralcd.cpp:3434
+msgid "Waiting for nozzle and bed cooling"
+msgstr "Oczekiwanie na wychlodzenie dyszy i stolu"
+
+# MSG_WAITING_TEMP_PINDA c=20 r=3
+#: ultralcd.cpp:3395
+msgid "Waiting for PINDA probe cooling"
+msgstr "Czekam az spadnie temp. sondy PINDA"
+
+# 
+#: 
+msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU tube. Use eject if it is hidden in tube."
+msgstr "Uzyj opcji Rozladuj jesli filament wystaje z tylnej rurki MMU. Uzyj opcji Wysun jesli wciaz jest w srodku."
+
+# MSG_CHANGED_BOTH c=20 r=4
+#: Marlin_main.cpp:1510
+msgid "Warning: both printer type and motherboard type changed."
+msgstr "Ostrzezenie: typ drukarki i plyta glowna ulegly zmianie."
+
+# MSG_CHANGED_MOTHERBOARD c=20 r=4
+#: Marlin_main.cpp:1502
+msgid "Warning: motherboard type changed."
+msgstr "Ostrzezenie: plyta glowna ulegla zmianie."
+
+# MSG_CHANGED_PRINTER c=20 r=4
+#: Marlin_main.cpp:1506
+msgid "Warning: printer type changed."
+msgstr "Ostrzezenie: rodzaj drukarki ulegl zmianie"
+
+# MSG_UNLOAD_SUCCESSFUL c=20 r=2
+#: Marlin_main.cpp:3128
+msgid "Was filament unload successful?"
+msgstr "Rozladowanie fil. ok?"
+
+# MSG_SELFTEST_WIRINGERROR
+#: messages.c:81
+msgid "Wiring error"
+msgstr "Blad polaczenia"
+
+# MSG_WIZARD c=17 r=1
+#: ultralcd.cpp:5834
+msgid "Wizard"
+msgstr "Asystent"
+
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
+msgid "XYZ cal. details"
+msgstr "Szczegoly kal. XYZ"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
+#: messages.c:18
+msgid "XYZ calibration failed. Please consult the manual."
+msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
+
+# MSG_YES
+#: messages.c:102
+msgid "Yes"
+msgstr "Tak"
+
+# MSG_WIZARD_QUIT c=20 r=8
+#: messages.c:101
+msgid "You can always resume the Wizard from Calibration -> Wizard."
+msgstr "Zawsze mozesz uruchomic Asystenta ponownie przez Kalibracja -> Asystent."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
+#: ultralcd.cpp:3904
+msgid "XYZ calibration all right. Skew will be corrected automatically."
+msgstr "Kalibracja XYZ pomyslna. Skos bedzie automatycznie korygowany."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
+#: ultralcd.cpp:3901
+msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
+msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
+
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr "Wyl. czas."
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
+msgid "X-correct:"
+msgstr "Korekcja-X:"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
+#: ultralcd.cpp:3898
+msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
+msgstr "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
+#: ultralcd.cpp:3882
+msgid "XYZ calibration compromised. Front calibration points not reachable."
+msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne."
+
+# MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
+#: ultralcd.cpp:3885
+msgid "XYZ calibration compromised. Right front calibration point not reachable."
+msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
+
+# MSG_LOAD_ALL c=17
+#: ultralcd.cpp:6261
+msgid "Load all"
+msgstr "Zalad. wszystkie"
+
+# 
+#: ultralcd.cpp:3864
+msgid "XYZ calibration failed. Bed calibration point was not found."
+msgstr "Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych."
+
+# 
+#: ultralcd.cpp:3870
+msgid "XYZ calibration failed. Front calibration points not reachable."
+msgstr "Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic montaz drukarki."
+
+# 
+#: ultralcd.cpp:3873
+msgid "XYZ calibration failed. Right front calibration point not reachable."
+msgstr "Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
+
+# 
+#: ultralcd.cpp:2991
+msgid "Y distance from min"
+msgstr "Dystans od 0 w osi Y"
+
+# 
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Niepowodzenie sprawdzenia, wyciagnij filament i sprobuj ponownie."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
+msgid "Y-correct:"
+msgstr "Korekcja-Y:"
+
+# MSG_OFF
+#: messages.c:105
+msgid "Off"
+msgstr "Wyl"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "Wl"
+
+# 
+#: messages.c:53
+msgid "Back"
+msgstr "Wstecz"
+
+# 
+#: ultralcd.cpp:5724
+msgid "Checks"
+msgstr "Testy"
+
+# 
+#: ultralcd.cpp:8349
+msgid "False triggering"
+msgstr "Falszywy alarm"
+
+# 
+#: ultralcd.cpp:4013
+msgid "FINDA:"
+msgstr ""
+
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
+
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Restr."
+
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Ostrzez"
+
+# 
+#: messages.c:83
+msgid "HW Setup"
+msgstr "Ustawienia HW"
+
+# 
+#: ultralcd.cpp:4017
+msgid "IR:"
+msgstr ""
+
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Kor. magnesow"
+
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr "Siatka"
+
+# 
+#: ultralcd.cpp:5763
+msgid "Mesh bed leveling"
+msgstr "Poziomowanie stolu"
+
+# 
+#: Marlin_main.cpp:872
+msgid "MK3S firmware detected on MK3 printer"
+msgstr "Wykryto firmware MK3S w drukarce MK3"
+
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "Tryb MMU"
+
+# 
+#: ultralcd.cpp:4494
+msgid "Mode change in progress ..."
+msgstr "Trwa zmiana trybu..."
+
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr ""
+
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Sr. dyszy"
+
+# 
+#: util.cpp:514
+msgid "G-code sliced for a different level. Continue?"
+msgstr "G-code pociety dla innej wersji. Kontynuowac?"
+
+# 
+#: util.cpp:520
+msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
+msgstr "G-code pociety na innym poziomie. Potnij model ponownie. Druk anulowany."
+
+# 
+#: util.cpp:431
+msgid "G-code sliced for a different printer type. Continue?"
+msgstr "G-code pociety dla innej drukarki. Kontynuowac?"
+
+# 
+#: util.cpp:437
+msgid "G-code sliced for a different printer type. Please re-slice the model again. Print cancelled."
+msgstr "G-code pociety dla drukarki innego typu. Potnij model ponownie. Druk anulowany."
+
+# 
+#: util.cpp:481
+msgid "G-code sliced for a newer firmware. Continue?"
+msgstr "G-code pociety dla nowszego firmware. Kontynuowac?"
+
+# 
+#: util.cpp:487
+msgid "G-code sliced for a newer firmware. Please update the firmware. Print cancelled."
+msgstr "G-code pociety dla nowszego firmware. Zaktualizuj firmware. Druk anulowany."
+
+# 
+#: ultralcd.cpp:4009
+msgid "PINDA:"
+msgstr ""
+
+#  c=20
+#: ultralcd.cpp:2452
+msgid "Preheating to cut"
+msgstr "Nagrzew. obciecia"
+
+#  c=20
+#: ultralcd.cpp:2449
+msgid "Preheating to eject"
+msgstr "Nagrzew. wysuniecia"
+
+# 
+#: util.cpp:394
+msgid "Printer nozzle diameter differs from the G-code. Continue?"
+msgstr "Srednica dyszy drukarki rozni sie od tej w G-code. Kontynuowac?"
+
+# 
+#: util.cpp:401
+msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
+msgstr "Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
+
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr "Oczekiwano wersji %s"
+
+# 
+#: ultralcd.cpp:6814
+msgid "Rename"
+msgstr "Zmien nazwe"
+
+# 
+#: ultralcd.cpp:6807
+msgid "Select"
+msgstr "Wybierz"
+
+# 
+#: ultralcd.cpp:2212
+msgid "Sensor info"
+msgstr "Info o sensorach"
+
+# MSG_SHEET c=10
+#: messages.c:54
+msgid "Sheet"
+msgstr "Plyta"
+
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr "Asyst."
+
+#  c=18
+#: ultralcd.cpp:5722
+msgid "Steel sheets"
+msgstr "Plyty stalowe"
+
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
+msgid "Z-correct:"
+msgstr "Korekcja-Z:"
+
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Ilosc Pomiarow"
+

+ 629 - 564
lang/po/new/cs.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: cs\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:19:09 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:19:09 PM\n"
+"POT-Creation-Date: Wed May 13 17:41:02 CEST 2020\n"
+"PO-Revision-Date: Wed May 13 17:41:02 CEST 2020\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,18 +20,28 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Doladeni Z\x0auz nastaveno, pouzit\x0anebo reset od nuly?\x0a%cPokracovat%cReset"
 
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 nebo starsi"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 nebo novejsi"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
+#: messages.c:36
 msgid " of 4"
 msgstr " z 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
+#: messages.c:56
 msgid " of 9"
 msgstr " z 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
+#: ultralcd.cpp:3064
 msgid "[0;0] point offset"
 msgstr "[0;0] odsazeni bodu"
 
@@ -46,777 +56,822 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "POZOR:\x0aCrash detekce\x0adeaktivovana ve\x0aStealth modu"
 
 # 
-#: ultralcd.cpp:2470
+#: ultralcd.cpp:2460
 msgid ">Cancel"
 msgstr ">Zrusit"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
+#: ultralcd.cpp:3184
 msgid "Adjusting Z:"
 msgstr "Doladeni Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
+#: ultralcd.cpp:8677
 msgid "All correct      "
 msgstr "Vse OK "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
+#: messages.c:99
 msgid "All is done. Happy printing!"
 msgstr "Vse je hotovo."
 
 # 
-#: ultralcd.cpp:1993
+#: ultralcd.cpp:1956
 msgid "Ambient"
 msgstr "Okoli"
 
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
 msgid "and press the knob"
 msgstr "a stisknete tlacitko"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
+#: ultralcd.cpp:3506
 msgid "Are left and right Z~carriages all up?"
 msgstr "Dojely oba Z voziky k~hornimu dorazu?"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin   [zap]"
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
 msgstr ""
 
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [vyp]"
-
 # MSG_AUTO_HOME
 #: messages.c:11
 msgid "Auto home"
 msgstr ""
 
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
 msgid "AutoLoad filament"
 msgstr "AutoZavedeni fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
+#: ultralcd.cpp:4445
 msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Automaticke zavadeni filamentu je dostupne pouze pri zapnutem filament senzoru..."
+msgstr "Automaticke zavadeni filamentu je mozne pouze pri zapnutem filament senzoru..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
+#: ultralcd.cpp:2804
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Automaticke zavadeni filamentu aktivni, stisknete tlacitko a vlozte filament..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
+#: ultralcd.cpp:8325
 msgid "Axis length"
 msgstr "Delka osy"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
+#: ultralcd.cpp:8327
 msgid "Axis"
 msgstr "Osa"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
+#: ultralcd.cpp:8269
 msgid "Bed / Heater"
 msgstr "Podlozka / Topeni"
 
 # MSG_BED_DONE
-#: messages.c:16
+#: messages.c:15
 msgid "Bed done"
 msgstr "Bed OK."
 
 # MSG_BED_HEATING
-#: messages.c:17
+#: messages.c:16
 msgid "Bed Heating"
 msgstr "Zahrivani bedu"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
+#: ultralcd.cpp:5861
 msgid "Bed level correct"
 msgstr "Korekce podlozky"
 
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test remenu      "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr "Kalibrace Z selhala. Sensor nesepnul. Znecistena tryska? Cekam na reset."
 
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Jasny"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Podsviceni"
+
 # MSG_BED
-#: messages.c:15
+#: messages.c:14
 msgid "Bed"
 msgstr "Podlozka"
 
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
 msgid "Belt status"
 msgstr "Stav remenu"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
+#: messages.c:67
 msgid "Blackout occurred. Recover print?"
 msgstr "Detekovan vypadek proudu.Obnovit tisk?"
 
 # 
-#: ultralcd.cpp:8404
+#: ultralcd.cpp:8679
 msgid "Calibrating home"
 msgstr "Kalibruji vychozi poz."
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
+#: ultralcd.cpp:5850
 msgid "Calibrate XYZ"
 msgstr "Kalibrace XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:48
+#: messages.c:44
 msgid "Calibrate Z"
 msgstr "Kalibrovat Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
+#: ultralcd.cpp:4637
 msgid "Calibrate"
 msgstr "Zkalibrovat"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibrace XYZ. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
+#: messages.c:19
 msgid "Calibrating Z"
 msgstr "Kalibruji Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibrace Z. Otacenim tlacitka posunte Z osu az k~hornimu dorazu. Potvrdte tlacitkem."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
+#: ultralcd.cpp:865
 msgid "Calibration done"
 msgstr "Kalibrace OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:61
+#: messages.c:57
 msgid "Calibration"
 msgstr "Kalibrace"
 
 # 
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:4815
 msgid "Cancel"
 msgstr "Zrusit"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:8812
+#: ultralcd.cpp:9090
 msgid "Card removed"
 msgstr "Karta vyjmuta"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2719
+#: ultralcd.cpp:2709
 msgid "Color not correct"
 msgstr "Barva neni cista"
 
 # MSG_COOLDOWN
-#: messages.c:23
+#: messages.c:22
 msgid "Cooldown"
 msgstr "Zchladit"
 
 # 
-#: ultralcd.cpp:4584
+#: ultralcd.cpp:4570
 msgid "Copy selected language?"
 msgstr "Kopirovat vybrany jazyk?"
 
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Crash det.  [zap]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
 msgstr ""
 
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Crash det.  [vyp]"
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Zvolte filament pro kalibraci prvni vrstvy z nasledujiciho menu"
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
+#: messages.c:23
 msgid "Crash detected."
 msgstr "Detekovan naraz."
 
 # 
-#: Marlin_main.cpp:596
+#: Marlin_main.cpp:607
 msgid "Crash detected. Resume print?"
 msgstr "Detekovan naraz. Obnovit tisk?"
 
 # 
-#: ultralcd.cpp:1837
+#: ultralcd.cpp:1785
 msgid "Crash"
 msgstr "Naraz"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
+#: ultralcd.cpp:6002
 msgid "Current"
 msgstr "Pouze aktualni"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
+#: ultralcd.cpp:2163
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
+#: ultralcd.cpp:5743
 msgid "Disable steppers"
 msgstr "Vypnout motory"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
+#: messages.c:13
 msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 msgstr "Neni zkalibrovana vzdalenost trysky od tiskove podlozky. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Nastaveni prvni vrstvy."
 
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr "Pokr."
+
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
+#: ultralcd.cpp:5125
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Chcete opakovat posledni krok a pozmenit vzdalenost mezi tryskou a podlozkou?"
 
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
 msgid "E-correct:"
 msgstr "Korekce E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
+#: messages.c:49
 msgid "Eject filament"
 msgstr "Vysunout filament"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
+#: mmu.cpp:1416
 msgid "Ejecting filament"
 msgstr "Vysouvam filament"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
 msgid "Endstop not hit"
 msgstr "Kon. spinac nesepnut"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
+#: ultralcd.cpp:8287
 msgid "Endstop"
 msgstr "Koncovy spinac"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
+#: ultralcd.cpp:8275
 msgid "Endstops"
 msgstr "Konc. spinace"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
+#: ultralcd.cpp:6998
 msgid "Error - static memory has been overwritten"
 msgstr "Chyba - Doslo k prepisu staticke pameti!"
 
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Ustrihnout"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Strihani"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Strihani filamentu"
+
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
+#: ultralcd.cpp:4458
 msgid "ERROR: Filament sensor is not responding, please check connection."
-msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte zapojeni."
+msgstr "CHYBA: Filament senzor nereaguje, zkontrolujte prosim zapojeni."
+
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr "Temny"
 
 # MSG_ERROR
-#: messages.c:28
+#: messages.c:25
 msgid "ERROR:"
 msgstr "CHYBA:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
+#: ultralcd.cpp:8686
 msgid "Extruder fan:"
 msgstr "Levy vent.:"
 
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
 msgid "Extruder info"
 msgstr ""
 
 # MSG_MOVE_E
-#: messages.c:29
+#: messages.c:26
 msgid "Extruder"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6952
+#: ultralcd.cpp:6985
 msgid "Fail stats MMU"
 msgstr "Selhani MMU"
 
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "F. autozav. [zap]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "F. autozav. [N/A]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "F. autozav. [vyp]"
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "F. autozav."
 
 # 
-#: ultralcd.cpp:6949
+#: ultralcd.cpp:6982
 msgid "Fail stats"
 msgstr "Selhani"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:31
+#: messages.c:28
 msgid "Fan speed"
 msgstr "Rychlost vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:78
+#: messages.c:74
 msgid "Fan test"
 msgstr "Test ventilatoru"
 
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Kontr. vent.[zap]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Kontr. vent.[vyp]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Fil. senzor [zap]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Fil. senzor [N/A]"
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Kontr. vent."
 
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Fil. senzor [vyp]"
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Fil. senzor"
 
-# 
-#: ultralcd.cpp:1836
+#  c=14
+#: ultralcd.cpp:1784
 msgid "Filam. runouts"
 msgstr "Vypadky filam."
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
+#: messages.c:29
 msgid "Filament extruding & with correct color?"
 msgstr "Filament vytlacen a spravne barvy?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
+#: ultralcd.cpp:2705
 msgid "Filament not loaded"
 msgstr "Filament nezaveden"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
+#: messages.c:80
 msgid "Filament sensor"
 msgstr "Senzor filamentu"
 
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
 msgid "Filament used"
-msgstr "Spotrebovano filamentu"
+msgstr "Spotrebovano filam."
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
+#: ultralcd.cpp:2870
 msgid "Print time"
 msgstr "Cas tisku"
 
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "FS reakce"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 a novejsi"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
 msgid "File incomplete. Continue anyway?"
 msgstr "Soubor nekompletni. Pokracovat?"
 
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
 msgid "Finishing movements"
 msgstr "Dokoncovani pohybu"
 
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
 msgid "First layer cal."
 msgstr "Kal. prvni vrstvy"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:5046
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Nejdriv pomoci selftestu zkontoluji nejcastejsi chyby vznikajici pri sestaveni tiskarny."
 
 # 
-#: mmu.cpp:724
+#: mmu.cpp:727
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Opravte chybu a pote stisknete tlacitko na jednotce MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7038
+#: ultralcd.cpp:7125
 msgid "Flow"
 msgstr "Prutok"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
+#: ultralcd.cpp:2156
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
+#: messages.c:71
 msgid "Front print fan?"
 msgstr "Predni tiskovy vent?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
+#: ultralcd.cpp:3266
 msgid "Front side[um]"
 msgstr "Vpredu [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
+#: ultralcd.cpp:8333
 msgid "Front/left fans"
 msgstr "Predni/levy vent."
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
+#: ultralcd.cpp:8263
 msgid "Heater/Thermistor"
 msgstr "Topeni/Termistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
+#: Marlin_main.cpp:9440
 msgid "Heating disabled by safety timer."
 msgstr "Zahrivani preruseno bezpecnostnim casovacem."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:47
+#: messages.c:43
 msgid "Heating done."
 msgstr "Zahrivani OK."
 
 # MSG_HEATING
-#: messages.c:46
+#: messages.c:42
 msgid "Heating"
 msgstr "Zahrivani"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
+#: ultralcd.cpp:5025
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Dobry den, jsem vase tiskarna Original Prusa i3. Chcete abych Vas provedla kalibracnim procesem?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
+#: ultralcd.cpp:2157
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:37
+#: messages.c:34
 msgid "Change filament"
 msgstr "Vymenit filament"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
+#: ultralcd.cpp:2620
 msgid "Change success!"
 msgstr "Zmena uspesna!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
+#: ultralcd.cpp:2697
 msgid "Changed correctly?"
 msgstr "Vymena ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
+#: messages.c:77
 msgid "Checking bed     "
 msgstr "Kontrola podlozky"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
+#: ultralcd.cpp:8668
 msgid "Checking endstops"
 msgstr "Kontrola endstopu"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
+#: ultralcd.cpp:8674
 msgid "Checking hotend  "
 msgstr "Kontrola hotend "
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
+#: messages.c:78
 msgid "Checking sensors "
 msgstr "Kontrola senzoru"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
+#: ultralcd.cpp:7482
 msgid "Checking X axis  "
 msgstr "Kontrola osy X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
+#: ultralcd.cpp:7491
 msgid "Checking Y axis  "
 msgstr "Kontrola osy Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
+#: ultralcd.cpp:8671
 msgid "Checking Z axis  "
 msgstr "Kontrola osy Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
+#: messages.c:45
 msgid "Choose extruder:"
 msgstr "Vyberte extruder:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
+#: messages.c:46
 msgid "Choose filament:"
 msgstr "Vyber filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:30
+#: messages.c:27
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
+#: ultralcd.cpp:5055
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Nyni provedu xyz kalibraci. Zabere to priblizne 12 min."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
+#: ultralcd.cpp:5063
 msgid "I will run z calibration now."
 msgstr "Nyni provedu z kalibraci."
 
 # MSG_WATCH
-#: messages.c:99
+#: messages.c:97
 msgid "Info screen"
 msgstr "Informace"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
+#: ultralcd.cpp:2605
 msgid "Insert filament"
 msgstr "Vlozte filament"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
+#: ultralcd.cpp:4835
 msgid "Is filament loaded?"
 msgstr "Je filament zaveden?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
+#: messages.c:90
 msgid "Is steel sheet on heatbed?"
 msgstr "Je tiskovy plat na podlozce?"
 
 # 
-#: ultralcd.cpp:1779
+#: ultralcd.cpp:1727
 msgid "Last print failures"
 msgstr "Selhani posl. tisku"
 
 # 
-#: ultralcd.cpp:1756
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Mate-li vice tiskovych platu, kalibrujte je v menu Nastaveni - HW nastaveni - Tiskove platy"
+
+# 
+#: ultralcd.cpp:1704
 msgid "Last print"
 msgstr "Posledni tisk"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
+#: messages.c:72
 msgid "Left hotend fan?"
 msgstr "Levy vent na trysce?"
 
 # 
-#: ultralcd.cpp:3011
+#: ultralcd.cpp:2993
 msgid "Left"
 msgstr "Vlevo"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
+#: ultralcd.cpp:3264
 msgid "Left side [um]"
 msgstr "Vlevo [um]"
 
 # 
-#: ultralcd.cpp:5747
+#: ultralcd.cpp:5766
 msgid "Lin. correction"
 msgstr "Korekce lin."
 
 # MSG_BABYSTEP_Z
-#: messages.c:13
+#: messages.c:12
 msgid "Live adjust Z"
 msgstr "Doladeni osy Z"
 
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Vlozte filament (nezavadejte) do extruderu a stisknete tlacitko"
+
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:51
+#: messages.c:47
 msgid "Load filament"
 msgstr "Zavest filament"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2645
 msgid "Loading color"
 msgstr "Cisteni barvy"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:52
+#: messages.c:48
 msgid "Loading filament"
 msgstr "Zavadeni filamentu"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
+#: ultralcd.cpp:8317
 msgid "Loose pulley"
 msgstr "Uvolnena remenicka"
 
 # 
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6944
 msgid "Load to nozzle"
 msgstr "Zavest do trysky"
 
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
 msgid "M117 First layer cal."
 msgstr "M117 Kal. prvni vrstvy"
 
 # MSG_MAIN
-#: messages.c:56
+#: messages.c:52
 msgid "Main"
 msgstr "Hlavni nabidka"
 
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr ""
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr ""
+
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
+#: messages.c:55
 msgid "Measuring reference height of calibration point"
 msgstr "Merim referencni vysku kalibracniho bodu"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
+#: ultralcd.cpp:5856
 msgid "Mesh Bed Leveling"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
+#: mmu.cpp:765
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Pokracuji v tisku..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
+#: mmu.cpp:758
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Pokracuji v nahrivani..."
 
 # 
-#: ultralcd.cpp:3052
+#: ultralcd.cpp:3034
 msgid "Measured skew"
 msgstr "Merene zkoseni"
 
 # 
-#: ultralcd.cpp:1780
+#: ultralcd.cpp:1728
 msgid "MMU fails"
 msgstr "Selhani MMU"
 
 # 
-#: mmu.cpp:1592
+#: mmu.cpp:1588
 msgid "MMU load failed     "
 msgstr "Zavedeni MMU selhalo"
 
 # 
-#: ultralcd.cpp:1781
+#: ultralcd.cpp:1729
 msgid "MMU load fails"
 msgstr "MMU selhani zavadeni"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
+#: mmu.cpp:776
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Pokracuji..."
 
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Mod      [Normal]"
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Mod"
 
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Mod       [tichy]"
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr ""
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Tichy"
 
 # 
-#: mmu.cpp:719
+#: mmu.cpp:722
 msgid "MMU needs user attention."
 msgstr "MMU potrebuje zasah uzivatele."
 
 # 
-#: ultralcd.cpp:1807
+#: ultralcd.cpp:1755
 msgid "MMU power fails"
 msgstr "MMU vypadky proudu"
 
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Mod       [tichy]"
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Tichy"
 
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Mod [automaticky]"
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Automaticky"
 
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Mod  [vys. vykon]"
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Vys. vykon"
 
 # 
-#: ultralcd.cpp:2203
+#: ultralcd.cpp:2186
 msgid "MMU2 connected"
 msgstr "MMU2 pripojeno"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:83
+#: messages.c:79
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
+#: ultralcd.cpp:5741
 msgid "Move axis"
 msgstr "Posunout osu"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4375
+#: ultralcd.cpp:4361
 msgid "Move X"
 msgstr "Posunout X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4376
+#: ultralcd.cpp:4362
 msgid "Move Y"
 msgstr "Posunout Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4377
+#: ultralcd.cpp:4363
 msgid "Move Z"
 msgstr "Posunout Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5293
+#: Marlin_main.cpp:5541
 msgid "No move."
 msgstr "Bez pohybu."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6878
+#: ultralcd.cpp:6911
 msgid "No SD card"
 msgstr "Zadna SD karta"
 
-# 
-#: ultralcd.cpp:3017
+# MSG_NA
+#: messages.c:107
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:62
+#: messages.c:58
 msgid "No"
 msgstr "Ne"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
+#: ultralcd.cpp:8265
 msgid "Not connected"
 msgstr "Nezapojeno "
 
@@ -826,527 +881,572 @@ msgid "New firmware version available:"
 msgstr "Vysla nova verze firmware:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
+#: messages.c:75
 msgid "Not spinning"
 msgstr "Netoci se"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
+#: ultralcd.cpp:4946
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Nyni zkalibruji vzdalenost mezi koncem trysky a povrchem podlozky."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
+#: ultralcd.cpp:5071
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Nyni predehreji trysku pro PLA."
 
 # MSG_NOZZLE
-#: messages.c:63
+#: messages.c:59
 msgid "Nozzle"
 msgstr "Tryska"
 
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Neplatne hodnoty nastaveni. Bude pouzito vychozi PID, Esteps atd."
 
 # 
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:5062
 msgid "Now remove the test print from steel sheet."
 msgstr "Nyni odstrante testovaci vytisk z tiskoveho platu."
 
 # 
-#: ultralcd.cpp:1706
+#: ultralcd.cpp:1654
 msgid "Nozzle FAN"
 msgstr "Vent. trysky"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
+#: ultralcd.cpp:6875
 msgid "Pause print"
 msgstr "Pozastavit tisk"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
+#: ultralcd.cpp:1539
 msgid "PID cal.           "
 msgstr "PID kal. "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
+#: ultralcd.cpp:1545
 msgid "PID cal. finished"
 msgstr "PID kal. ukoncena"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
+#: ultralcd.cpp:5862
 msgid "PID calibration"
 msgstr "PID kalibrace"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
+#: ultralcd.cpp:896
 msgid "PINDA Heating"
 msgstr "Nahrivani PINDA"
 
-# MSG_PAPER c=20 r=8
-#: messages.c:64
+# MSG_PAPER c=20 r=10
+#: messages.c:60
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Umistete list papiru na podlozku a udrzujte jej pod tryskou behem mereni prvnich 4 bodu. Pokud tryska zachyti papir, okamzite vypnete tiskarnu."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
+#: ultralcd.cpp:5128
 msgid "Please clean heatbed and then press the knob."
 msgstr "Prosim ocistete podlozku a stisknete tlacitko."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
+#: messages.c:21
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Pro uspesnou kalibraci ocistete prosim tiskovou trysku. Potvrdte tlacitkem."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
+#: ultralcd.cpp:8257
 msgid "Please check :"
 msgstr "Zkontrolujte :"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
+#: messages.c:98
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Prosim nahlednete do prirucky 3D tiskare a opravte problem. Pote obnovte Pruvodce restartovanim tiskarny."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
+#: Marlin_main.cpp:3138
 msgid "Please open idler and remove filament manually."
 msgstr "Prosim otevrete idler a manualne odstrante filament."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
+#: messages.c:61
 msgid "Please place steel sheet on heatbed."
 msgstr "Umistete prosim tiskovy plat na podlozku"
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
+#: messages.c:64
 msgid "Please press the knob to unload filament"
 msgstr "Pro vysunuti filamentu stisknete prosim tlacitko"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
+#: messages.c:66
 msgid "Please pull out filament immediately"
 msgstr "Prosim vyjmete urychlene filament"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
+#: mmu.cpp:1422
 msgid "Please remove filament and then press the knob."
 msgstr "Prosim vyjmete filament a pote stisknete tlacitko."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
+#: messages.c:70
 msgid "Please remove steel sheet from heatbed."
 msgstr "Odstrante prosim tiskovy plat z podlozky."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
+#: Marlin_main.cpp:4583
 msgid "Please run XYZ calibration first."
 msgstr "Nejprve spustte kalibraci XYZ."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
+#: mmu.cpp:1341
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Prosim aktualizujte firmware ve vasi MMU2 jednotce. Cekam na reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:66
+#: messages.c:62
 msgid "Please wait"
 msgstr "Prosim cekejte"
 
 # 
-#: ultralcd.cpp:5070
+#: ultralcd.cpp:5061
 msgid "Please remove shipping helpers first."
 msgstr "Nejprve prosim sundejte transportni soucastky."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
+#: messages.c:63
 msgid "Preheat the nozzle!"
 msgstr "Predehrejte trysku!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6825
+#: ultralcd.cpp:6853
 msgid "Preheat"
 msgstr "Predehrev"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
+#: messages.c:100
 msgid "Preheating nozzle. Please wait."
 msgstr "Predehrev trysky. Prosim cekejte."
 
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
 # 
 #: util.cpp:297
 msgid "Please upgrade."
 msgstr "Prosim aktualizujte."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
+#: Marlin_main.cpp:11526
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Pro nahrati trysky a pokracovani stisknete tlacitko."
 
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr ""
+
 # 
-#: ultralcd.cpp:1835
+#: ultralcd.cpp:1783
 msgid "Power failures"
 msgstr "Vypadky proudu"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:69
+#: messages.c:65
 msgid "Print aborted"
 msgstr "Tisk prerusen"
 
-# 
-#: ultralcd.cpp:2452
+#  c=20
+#: ultralcd.cpp:2442
 msgid "Preheating to load"
 msgstr "Predehrev k zavedeni"
 
-# 
-#: ultralcd.cpp:2456
+#  c=20
+#: ultralcd.cpp:2446
 msgid "Preheating to unload"
 msgstr "Predehrev k vyjmuti"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
+#: ultralcd.cpp:8689
 msgid "Print fan:"
 msgstr "Tiskovy vent.:"
 
 # MSG_CARD_MENU
-#: messages.c:21
+#: messages.c:20
 msgid "Print from SD"
 msgstr "Tisk z SD"
 
 # 
-#: ultralcd.cpp:2301
+#: ultralcd.cpp:2289
 msgid "Press the knob"
 msgstr "Stisknete hl. tlacitko"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
+#: ultralcd.cpp:1118
 msgid "Print paused"
 msgstr "Tisk pozastaven"
 
 # 
-#: mmu.cpp:723
+#: mmu.cpp:726
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Pro pokracovani nahrivani trysky stisknete tlacitko."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
+#: messages.c:38
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Tiskarna nebyla jeste zkalibrovana. Postupujte prosim podle manualu, kapitola Zaciname, odstavec Postup kalibrace."
 
 # 
-#: ultralcd.cpp:1707
+#: ultralcd.cpp:1655
 msgid "Print FAN"
 msgstr "Tiskovy vent."
 
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Prosim vlozte filament do extruderu a stisknete tlacitko k jeho zavedeni"
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Prosim vlozte filament do prvni trubicky MMU a stisknete tlacitko k jeho zavedeni"
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Prosim nejdriv zavedte filament"
+
 # MSG_PRUSA3D
-#: ultralcd.cpp:2189
+#: ultralcd.cpp:2155
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
+#: ultralcd.cpp:3267
 msgid "Rear side [um]"
 msgstr "Vzadu [um]"
 
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Prosim vyjmete filament a zopakujte tuto akci"
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
 msgid "Recovering print    "
-msgstr "Obnovovani tisku "
+msgstr "Obnovovani tisku    "
 
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Vyjmete stary filament a stisknete tlacitko pro zavedeni noveho."
 
-# 
+#  c=20
 #: 
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
+#: ultralcd.cpp:5867
 msgid "Reset XYZ calibr."
 msgstr "Reset XYZ kalibr."
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3268
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
+#: ultralcd.cpp:6861
 msgid "Resume print"
 msgstr "Pokracovat"
 
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
 msgid "Resuming print"
 msgstr "Obnoveni tisku"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
+#: ultralcd.cpp:3265
 msgid "Right side[um]"
 msgstr "Vpravo [um]"
 
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "RPi port    [zap]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "RPi port    [vyp]"
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr ""
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
+#: ultralcd.cpp:4864
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Spusteni Pruvodce vymaze ulozene vysledky vsech kalibraci a spusti kalibracni proces od zacatku. Pokracovat?"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
 msgstr ""
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "SD card [FlshAir]"
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
 
 # 
-#: ultralcd.cpp:3012
+#: ultralcd.cpp:2994
 msgid "Right"
 msgstr "Vpravo"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
+#: messages.c:35
 msgid "Searching bed calibration point"
 msgstr "Hledam kalibracni bod podlozky"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5779
 msgid "Select language"
 msgstr "Vyber jazyka"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
+#: ultralcd.cpp:7812
 msgid "Self test OK"
 msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
+#: ultralcd.cpp:7582
 msgid "Self test start  "
 msgstr "Self test start "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5820
+#: ultralcd.cpp:5843
 msgid "Selftest         "
 msgstr "Selftest "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
+#: ultralcd.cpp:8255
 msgid "Selftest error !"
 msgstr "Chyba Selftestu!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:77
+#: messages.c:73
 msgid "Selftest failed  "
 msgstr "Selftest selhal "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1550
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Pro kalibraci presneho rehomovani bude nyni spusten selftest."
 
 # 
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5102
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Vyberte teplotu predehrati trysky ktera odpovida vasemu materialu."
 
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Vyberte PLA filament:"
-
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
+#: ultralcd.cpp:3286
 msgid "Set temperature:"
 msgstr "Nastavte teplotu:"
 
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
 # MSG_SETTINGS
-#: messages.c:86
+#: messages.c:82
 msgid "Settings"
 msgstr "Nastaveni"
 
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
 msgid "Show end stops"
 msgstr "Stav konc. spin."
 
 # 
-#: ultralcd.cpp:4022
+#: ultralcd.cpp:4008
 msgid "Sensor state"
 msgstr "Stav senzoru"
 
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Nektere soubory nebudou setrideny. Maximalni pocet souboru ve slozce pro setrideni je 100."
 
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Trideni   [Zadne]"
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Trideni"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Trideni     [cas]"
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Zadne"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Cas"
 
 # 
-#: ultralcd.cpp:3055
+#: ultralcd.cpp:3037
 msgid "Severe skew:"
 msgstr "Tezke zkoseni:"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Trideni [Abeceda]"
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Abeceda"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
+#: cardreader.cpp:745
 msgid "Sorting files"
 msgstr "Trideni souboru"
 
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Zvuk    [hlasity]"
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Hlasity"
 
 # 
-#: ultralcd.cpp:3054
+#: ultralcd.cpp:3036
 msgid "Slight skew:"
 msgstr "Lehke zkoseni:"
 
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Zvuk    [vypnuto]"
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Zvuk"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
 
 # 
-#: Marlin_main.cpp:4875
+#: Marlin_main.cpp:5101
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Vyskytl se problem, srovnavam osu Z ..."
 
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Zvuk     [jednou]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Zvuk      [tichy]"
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Jednou"
 
 # MSG_SPEED
-#: ultralcd.cpp:7032
+#: ultralcd.cpp:7119
 msgid "Speed"
 msgstr "Rychlost"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
+#: messages.c:76
 msgid "Spinning"
 msgstr "Toci se"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
+#: Marlin_main.cpp:4596
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Je vyzadovana stabilni pokojova teplota 21-26C a pevna podlozka."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6945
+#: ultralcd.cpp:6978
 msgid "Statistics  "
 msgstr "Statistika "
 
 # MSG_STOP_PRINT
-#: messages.c:93
+#: messages.c:91
 msgid "Stop print"
 msgstr "Zastavit tisk"
 
 # MSG_STOPPED
-#: messages.c:94
+#: messages.c:92
 msgid "STOPPED. "
 msgstr "ZASTAVENO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6954
+#: ultralcd.cpp:6987
 msgid "Support"
 msgstr "Podpora"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
+#: ultralcd.cpp:8335
 msgid "Swapped"
 msgstr "Prohozene"
 
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Tepl. kal. "
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Zvolte filament:"
 
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Tepl. kal.  [zap]"
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Tepl. kal."
 
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Tepl. kal.  [vyp]"
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Zvolte teplotu, ktera odpovida vasemu materialu."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5873
 msgid "Temp. calibration"
 msgstr "Teplot. kalibrace"
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
+#: ultralcd.cpp:3933
 msgid "Temperature calibration failed"
 msgstr "Teplotni kalibrace selhala"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
+#: messages.c:94
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Teplotni kalibrace dokoncena a je nyni aktivni. Teplotni kalibraci je mozno deaktivovat v menu Nastaveni->Tepl. kal."
 
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Senzor overen, vyjmete filament."
+
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5717
+#: ultralcd.cpp:5739
 msgid "Temperature"
 msgstr "Teplota"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2218
 msgid "Temperatures"
 msgstr "Teploty"
 
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Je potreba kalibrovat osu Z. Prosim postupujte dle prirucky, kapitola Zaciname, sekce Postup kalibrace."
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2891
 msgid "Total filament"
 msgstr "Filament celkem"
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2892
 msgid "Total print time"
 msgstr "Celkovy cas tisku"
 
 # MSG_TUNE
-#: ultralcd.cpp:6822
+#: ultralcd.cpp:6850
 msgid "Tune"
 msgstr "Ladit"
 
@@ -1356,62 +1456,62 @@ msgid "Unload"
 msgstr "Vysunout"
 
 # 
-#: ultralcd.cpp:1804
+#: ultralcd.cpp:1752
 msgid "Total failures"
 msgstr "Celkem selhani"
 
 # 
-#: ultralcd.cpp:2308
+#: ultralcd.cpp:2296
 msgid "to load filament"
 msgstr "k zavedeni filamentu"
 
 # 
-#: ultralcd.cpp:2312
+#: ultralcd.cpp:2300
 msgid "to unload filament"
 msgstr "k vyjmuti filamentu"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
+#: messages.c:95
 msgid "Unload filament"
 msgstr "Vyjmout filament"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
+#: messages.c:96
 msgid "Unloading filament"
 msgstr "Vysouvam filament"
 
 # 
-#: ultralcd.cpp:1757
+#: ultralcd.cpp:1705
 msgid "Total"
 msgstr "Celkem"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
+#: ultralcd.cpp:6001
 msgid "Used during print"
 msgstr "Pouzite behem tisku"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
+#: ultralcd.cpp:2221
 msgid "Voltages"
 msgstr "Napeti"
 
 # 
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2194
 msgid "unknown"
 msgstr "neznamy"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5264
+#: Marlin_main.cpp:5511
 msgid "Wait for user..."
 msgstr "Ceka se na uzivatele..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
+#: ultralcd.cpp:3434
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Cekani na zchladnuti trysky a podlozky."
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
+#: ultralcd.cpp:3395
 msgid "Waiting for PINDA probe cooling"
 msgstr "Cekani na zchladnuti PINDA"
 
@@ -1421,259 +1521,224 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Pouzijte vyjmout pro odstraneni filamentu 1 pokud presahuje z PTFE trubicky za tiskarnou. Pouzijte vysunout, pokud neni videt."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1510
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Varovani: doslo ke zmene typu tiskarny a motherboardu."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1502
 msgid "Warning: motherboard type changed."
 msgstr "Varovani: doslo ke zmene typu motherboardu."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1506
 msgid "Warning: printer type changed."
 msgstr "Varovani: doslo ke zmene typu tiskarny."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
+#: Marlin_main.cpp:3128
 msgid "Was filament unload successful?"
 msgstr "Bylo vysunuti filamentu uspesne?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
+#: messages.c:81
 msgid "Wiring error"
 msgstr "Chyba zapojeni"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
+#: ultralcd.cpp:5834
 msgid "Wizard"
 msgstr "Pruvodce"
 
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
 msgid "XYZ cal. details"
 msgstr "Detaily XYZ kal."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
+#: messages.c:18
 msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Kalibrace XYZ selhala. Nahlednete do manualu."
 
 # MSG_YES
-#: messages.c:104
+#: messages.c:102
 msgid "Yes"
 msgstr "Ano"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
+#: messages.c:101
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Pruvodce muzete kdykoliv znovu spustit z menu Kalibrace -> Pruvodce"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
+#: ultralcd.cpp:3904
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Kalibrace XYZ v poradku. Zkoseni bude automaticky vyrovnano pri tisku."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
+#: ultralcd.cpp:3901
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Kalibrace XYZ v poradku. X/Y osy mirne zkosene. Dobra prace!"
 
-# 
-#: ultralcd.cpp:5197
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
 msgid "X-correct:"
 msgstr "Korekce X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
+#: ultralcd.cpp:3898
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Kalibrace XYZ v poradku. X/Y osy jsou kolme. Gratuluji!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
+#: ultralcd.cpp:3882
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Kalibrace XYZ nepresna. Predni kalibracni body moc vpredu."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
+#: ultralcd.cpp:3885
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibrace XYZ nepresna. Pravy predni bod moc vpredu."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
+#: ultralcd.cpp:6261
 msgid "Load all"
 msgstr "Zavest vse"
 
 # 
-#: ultralcd.cpp:3879
+#: ultralcd.cpp:3864
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Kalibrace XYZ selhala. Kalibracni bod podlozky nenalezen."
 
 # 
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3870
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Kalibrace XYZ selhala. Predni kalibracni body moc vpredu. Srovnejte tiskarnu."
 
 # 
-#: ultralcd.cpp:3888
+#: ultralcd.cpp:3873
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Kalibrace XYZ selhala. Pravy predni bod moc vpredu. Srovnejte tiskarnu."
 
 # 
-#: ultralcd.cpp:3009
+#: ultralcd.cpp:2991
 msgid "Y distance from min"
 msgstr "Y vzdalenost od min"
 
 # 
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "Tiskarna zacne tisknout lomenou caru. Otacenim tlacitka nastavte optimalni vysku. Postupujte podle obrazku v handbooku (kapitola Kalibrace)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Overeni selhalo, vyjmete filament a zkuste znovu."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
 msgid "Y-correct:"
 msgstr "Korekce Y:"
 
 # MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [vyp]"
+#: messages.c:105
+msgid "Off"
+msgstr "Vyp"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "Zap"
 
 # 
-#: messages.c:57
+#: messages.c:53
 msgid "Back"
 msgstr "Zpet"
 
 # 
-#: ultralcd.cpp:5706
+#: ultralcd.cpp:5724
 msgid "Checks"
 msgstr "Kontrola"
 
 # 
-#: ultralcd.cpp:8080
+#: ultralcd.cpp:8349
 msgid "False triggering"
 msgstr "Falesne spusteni"
 
 # 
-#: ultralcd.cpp:4027
+#: ultralcd.cpp:4013
 msgid "FINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware  [Zadne]"
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [Prisne]"
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Prisne"
 
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware[Varovat]"
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Varovat"
 
 # 
-#: messages.c:87
+#: messages.c:83
 msgid "HW Setup"
 msgstr "HW nastaveni"
 
 # 
-#: ultralcd.cpp:4031
+#: ultralcd.cpp:4017
 msgid "IR:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Komp. magnetu[N/A]"
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Komp. magnetu[Vyp]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Komp. magnetu[Zap]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Mesh         [3x3]"
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Komp. magnetu"
 
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Mesh         [7x7]"
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr ""
 
 # 
-#: ultralcd.cpp:5744
+#: ultralcd.cpp:5763
 msgid "Mesh bed leveling"
 msgstr "Mesh Bed Leveling"
 
 # 
-#: Marlin_main.cpp:852
+#: Marlin_main.cpp:872
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "MK3S firmware detekovan na tiskarne MK3"
 
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "MMU mod  [Normal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "MMU Mod   [Tichy]"
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "MMU mod"
 
 # 
-#: ultralcd.cpp:4508
+#: ultralcd.cpp:4494
 msgid "Mode change in progress ..."
 msgstr "Probiha zmena modu..."
 
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Model     [Zadne]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Model    [Prisne]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Model   [Varovat]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Tryska     [0.25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Tryska     [0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Tryska     [0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Tryska    [Zadne]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Tryska   [Prisne]"
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Tryska  [Varovat]"
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Tryska"
 
 # 
 #: util.cpp:514
@@ -1706,17 +1771,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-code je pripraven pro novejsi firmware. Prosim aktualizujte firmware. Tisk zrusen."
 
 # 
-#: ultralcd.cpp:4023
+#: ultralcd.cpp:4009
 msgid "PINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2462
+#  c=20
+#: ultralcd.cpp:2452
 msgid "Preheating to cut"
-msgstr "Predehrev k ustrizeni"
+msgstr "Predehrev ke strihu"
 
-# 
-#: ultralcd.cpp:2459
+#  c=20
+#: ultralcd.cpp:2449
 msgid "Preheating to eject"
 msgstr "Predehrev k vysunuti"
 
@@ -1730,50 +1795,50 @@ msgstr "Prumer trysky tiskarny se lisi od G-code. Pokracovat?"
 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 msgstr "Prumer trysky tiskarny se lisi od G-code. Prosim zkontrolujte nastaveni. Tisk zrusen."
 
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr ""
+
 # 
-#: ultralcd.cpp:6786
+#: ultralcd.cpp:6814
 msgid "Rename"
 msgstr "Prejmenovat"
 
 # 
-#: ultralcd.cpp:6779
+#: ultralcd.cpp:6807
 msgid "Select"
 msgstr "Vybrat"
 
 # 
-#: ultralcd.cpp:2229
+#: ultralcd.cpp:2212
 msgid "Sensor info"
 msgstr "Senzor info"
 
-# 
-#: messages.c:58
+# MSG_SHEET c=10
+#: messages.c:54
 msgid "Sheet"
 msgstr "Plat"
 
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Zvuk     [Asist.]"
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr "Asist."
 
-# 
-#: ultralcd.cpp:5704
+#  c=18
+#: ultralcd.cpp:5722
 msgid "Steel sheets"
 msgstr "Tiskove platy"
 
-# 
-#: ultralcd.cpp:5199
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
 msgid "Z-correct:"
 msgstr "Korekce Z:"
 
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Pocet mereni Z [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Pocet mereni Z [3]"
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Pocet mereni Z"
 
 # 
 #: ultralcd.cpp:7145

+ 632 - 577
lang/po/new/de.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: de\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:20:17 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:20:17 PM\n"
+"POT-Creation-Date: Fri May 15 16:44:45 CEST 2020\n"
+"PO-Revision-Date: Fri May 15 16:44:45 CEST 2020\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,18 +20,28 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Z Einstell.\x0aWert gesetzt,weiter\x0aoder mit 0 beginnen?\x0a%cWeiter%cNeu beginnen"
 
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 oder aelter"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 oder neuer"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
+#: messages.c:36
 msgid " of 4"
 msgstr " von 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
+#: messages.c:56
 msgid " of 9"
 msgstr " von 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
+#: ultralcd.cpp:3064
 msgid "[0;0] point offset"
 msgstr "[0;0] Punktversatz"
 
@@ -46,777 +56,822 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "WARNUNG:\x0aCrash Erkennung\x0adeaktiviert im\x0aStealth Modus"
 
 # 
-#: ultralcd.cpp:2470
+#: ultralcd.cpp:2460
 msgid ">Cancel"
 msgstr ">Abbruch"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
+#: ultralcd.cpp:3184
 msgid "Adjusting Z:"
 msgstr "Z Anpassen:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
+#: ultralcd.cpp:8677
 msgid "All correct      "
 msgstr "Alles richtig    "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
+#: messages.c:99
 msgid "All is done. Happy printing!"
 msgstr "Alles abgeschlossen. Viel Spass beim Drucken!"
 
 # 
-#: ultralcd.cpp:1993
+#: ultralcd.cpp:1956
 msgid "Ambient"
 msgstr "Raumtemp."
 
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
 msgid "and press the knob"
 msgstr "und Knopf druecken"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
+#: ultralcd.cpp:3506
 msgid "Are left and right Z~carriages all up?"
 msgstr "Sind linke+rechte Z- Schlitten ganz oben?"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [an]"
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/V]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [aus]"
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
 msgid "Auto home"
 msgstr "Startposition"
 
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
 msgid "AutoLoad filament"
 msgstr "AutoLaden Filament"
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
+#: ultralcd.cpp:4445
 msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Automatisches Laden Filament nur bei einge schaltetem Filament- sensor verfuegbar..."
+msgstr "Automatisches Laden Filament nur bei eingeschaltetem Fil. sensor verfuegbar..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
+#: ultralcd.cpp:2804
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Automatisches Laden Filament ist aktiv, Knopf druecken und Filament einlegen..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
+#: ultralcd.cpp:8325
 msgid "Axis length"
 msgstr "Achsenlaenge"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
+#: ultralcd.cpp:8327
 msgid "Axis"
 msgstr "Achse"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
+#: ultralcd.cpp:8269
 msgid "Bed / Heater"
 msgstr "Bett / Heizung"
 
 # MSG_BED_DONE
-#: messages.c:16
+#: messages.c:15
 msgid "Bed done"
 msgstr "Bett OK"
 
 # MSG_BED_HEATING
-#: messages.c:17
+#: messages.c:16
 msgid "Bed Heating"
 msgstr "Bett aufwaermen"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
+#: ultralcd.cpp:5861
 msgid "Bed level correct"
 msgstr "Ausgleich Bett ok"
 
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Riementest       "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr "Z-Kal. fehlgeschlg. Sensor nicht ausgeloest. Schmutzige Duese? Warte auf Reset."
 
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Hell"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Helligkeit"
+
 # MSG_BED
-#: messages.c:15
+#: messages.c:14
 msgid "Bed"
 msgstr "Bett"
 
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
 msgid "Belt status"
 msgstr "Gurtstatus"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
+#: messages.c:67
 msgid "Blackout occurred. Recover print?"
 msgstr "Stromausfall! Druck wiederherstellen?"
 
 # 
-#: ultralcd.cpp:8404
+#: ultralcd.cpp:8679
 msgid "Calibrating home"
 msgstr "Kalibriere Start"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
+#: ultralcd.cpp:5850
 msgid "Calibrate XYZ"
 msgstr "Kalibrierung XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:48
+#: messages.c:44
 msgid "Calibrate Z"
 msgstr "Kalibrierung Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
+#: ultralcd.cpp:4637
 msgid "Calibrate"
 msgstr "Kalibrieren"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "XYZ Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
+#: messages.c:19
 msgid "Calibrating Z"
 msgstr "Kalibrierung Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Z Kalibrieren: Drehen Sie den Knopf bis der obere Anschlag erreicht wird. Anschliessend den Knopf druecken."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
+#: ultralcd.cpp:865
 msgid "Calibration done"
 msgstr "Kalibrierung OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:61
+#: messages.c:57
 msgid "Calibration"
 msgstr "Kalibrierung"
 
 # 
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:4815
 msgid "Cancel"
 msgstr "Abbruch"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:8812
+#: ultralcd.cpp:9090
 msgid "Card removed"
 msgstr "SD Karte entfernt"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2719
+#: ultralcd.cpp:2709
 msgid "Color not correct"
 msgstr "Falsche Farbe"
 
 # MSG_COOLDOWN
-#: messages.c:23
+#: messages.c:22
 msgid "Cooldown"
 msgstr "Abkuehlen"
 
 # 
-#: ultralcd.cpp:4584
+#: ultralcd.cpp:4570
 msgid "Copy selected language?"
 msgstr "Gewaehlte Sprache kopieren?"
 
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Crash Erk.   [an]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Crash Erk.   [nv]"
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Crash Erk."
 
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Crash Erk.  [aus]"
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Waehlen Sie ein Filament fuer Erste Schichtkalibrierung aus und waehlen Sie es im On-Screen-Menu aus."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
+#: messages.c:23
 msgid "Crash detected."
 msgstr "Crash erkannt."
 
 # 
-#: Marlin_main.cpp:596
+#: Marlin_main.cpp:607
 msgid "Crash detected. Resume print?"
 msgstr "Crash erkannt. Druck fortfuehren?"
 
 # 
-#: ultralcd.cpp:1837
+#: ultralcd.cpp:1785
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
+#: ultralcd.cpp:6002
 msgid "Current"
 msgstr "Aktuelles"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
+#: ultralcd.cpp:2163
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
+#: ultralcd.cpp:5743
 msgid "Disable steppers"
 msgstr "Motoren aus"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
+#: messages.c:13
 msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 msgstr "Der Abstand zwischen der Spitze der Duese und dem Bett ist noch nicht eingestellt. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Erste Schicht Kalibrierung."
 
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
+#: ultralcd.cpp:5125
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Moechten Sie den letzten Schritt wiederholen, um den Abstand zwischen Duese und Druckbett neu einzustellen?"
 
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
 msgid "E-correct:"
 msgstr "E-Korrektur:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
+#: messages.c:49
 msgid "Eject filament"
 msgstr "Filamentauswurf"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
+#: mmu.cpp:1416
 msgid "Ejecting filament"
 msgstr "werfe Filament aus"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
 msgid "Endstop not hit"
 msgstr "Ende nicht getroffen"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
+#: ultralcd.cpp:8287
 msgid "Endstop"
 msgstr "Endanschlag"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
+#: ultralcd.cpp:8275
 msgid "Endstops"
 msgstr "Endschalter"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
+#: ultralcd.cpp:6998
 msgid "Error - static memory has been overwritten"
 msgstr "Fehler - statischer Speicher wurde ueberschrieben"
 
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Fil. schneiden"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Messer"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Schneide filament"
+
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
+#: ultralcd.cpp:4458
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "FEHLER: Filament- sensor reagiert nicht, bitte Verbindung pruefen."
 
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr "Dimm"
+
 # MSG_ERROR
-#: messages.c:28
+#: messages.c:25
 msgid "ERROR:"
 msgstr "FEHLER:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
+#: ultralcd.cpp:8686
 msgid "Extruder fan:"
 msgstr "Extruder Luefter:"
 
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
 msgid "Extruder info"
 msgstr "Extruder Info"
 
 # MSG_MOVE_E
-#: messages.c:29
+#: messages.c:26
 msgid "Extruder"
 msgstr ""
 
 # 
-#: ultralcd.cpp:6952
+#: ultralcd.cpp:6985
 msgid "Fail stats MMU"
 msgstr "MMU-Fehler"
 
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "F.Autoladen  [an]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "F. Autoload  [nv]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "F. Autoload [aus]"
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "F. autoladen"
 
 # 
-#: ultralcd.cpp:6949
+#: ultralcd.cpp:6982
 msgid "Fail stats"
 msgstr "Fehlerstatistik"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:31
+#: messages.c:28
 msgid "Fan speed"
 msgstr "Luefter-Tempo"
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:78
+#: messages.c:74
 msgid "Fan test"
 msgstr "Lueftertest"
 
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Luefter Chk. [an]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Luefter Chk.[aus]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Fil. Sensor  [an]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Fil. Sensor  [nv]"
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Luefter Chk."
 
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Fil. Sensor [aus]"
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Fil. Sensor"
 
-# 
-#: ultralcd.cpp:1836
+#  c=14
+#: ultralcd.cpp:1784
 msgid "Filam. runouts"
 msgstr "Filam. Maengel"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
+#: messages.c:29
 msgid "Filament extruding & with correct color?"
 msgstr "Filament extrudiert mit richtiger Farbe?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
+#: ultralcd.cpp:2705
 msgid "Filament not loaded"
 msgstr "Fil. nicht geladen"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
+#: messages.c:80
 msgid "Filament sensor"
 msgstr "Filamentsensor"
 
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
 msgid "Filament used"
 msgstr "Filament benutzt"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
+#: ultralcd.cpp:2870
 msgid "Print time"
 msgstr "Druckzeit"
 
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "FS Aktion"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 oder neuer"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
 msgid "File incomplete. Continue anyway?"
 msgstr "Datei unvollstaendig Trotzdem fortfahren?"
 
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
 msgid "Finishing movements"
 msgstr "Bewegung beenden"
 
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
 msgid "First layer cal."
 msgstr "Erste-Schicht Kal."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:5046
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Zunaechst fuehre ich den Selbsttest durch, um die haeufigsten Probleme beim Zusammenbau zu ueberpruefen."
 
 # 
-#: mmu.cpp:724
+#: mmu.cpp:727
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Beseitigen Sie das Problem und druecken Sie dann den Knopf am MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7038
+#: ultralcd.cpp:7125
 msgid "Flow"
 msgstr "Durchfluss"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
+#: ultralcd.cpp:2156
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
+#: messages.c:71
 msgid "Front print fan?"
 msgstr "Vorderer Luefter?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
+#: ultralcd.cpp:3266
 msgid "Front side[um]"
 msgstr "Vorne [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
+#: ultralcd.cpp:8333
 msgid "Front/left fans"
 msgstr "Vorderer/linke Luefter"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
+#: ultralcd.cpp:8263
 msgid "Heater/Thermistor"
 msgstr "Heizung/Thermistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
+#: Marlin_main.cpp:9440
 msgid "Heating disabled by safety timer."
 msgstr "Heizung durch Sicherheitstimer deaktiviert."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:47
+#: messages.c:43
 msgid "Heating done."
 msgstr "Aufwaermen OK."
 
 # MSG_HEATING
-#: messages.c:46
+#: messages.c:42
 msgid "Heating"
 msgstr "Aufwaermen"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
+#: ultralcd.cpp:5025
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Hallo, ich bin Ihr Original Prusa i3 Drucker. Moechten Sie, dass ich Sie durch den Einrich- tungsablauf fuehre?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
+#: ultralcd.cpp:2157
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:37
+#: messages.c:34
 msgid "Change filament"
 msgstr "Filament-Wechsel"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
+#: ultralcd.cpp:2620
 msgid "Change success!"
 msgstr "Wechsel erfolgr.!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
+#: ultralcd.cpp:2697
 msgid "Changed correctly?"
 msgstr "Wechsel ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
+#: messages.c:77
 msgid "Checking bed     "
 msgstr "Pruefe Bett "
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
+#: ultralcd.cpp:8668
 msgid "Checking endstops"
 msgstr "Pruefe Endschalter"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
+#: ultralcd.cpp:8674
 msgid "Checking hotend  "
 msgstr "Pruefe Duese  "
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
+#: messages.c:78
 msgid "Checking sensors "
 msgstr "Pruefe Sensoren "
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
+#: ultralcd.cpp:7482
 msgid "Checking X axis  "
 msgstr "Pruefe X Achse "
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
+#: ultralcd.cpp:7491
 msgid "Checking Y axis  "
 msgstr "Pruefe Y Achse "
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
+#: ultralcd.cpp:8671
 msgid "Checking Z axis  "
 msgstr "Pruefe Z Achse "
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
+#: messages.c:45
 msgid "Choose extruder:"
 msgstr "Extruder waehlen:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
+#: messages.c:46
 msgid "Choose filament:"
 msgstr "Waehle Filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:30
+#: messages.c:27
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
+#: ultralcd.cpp:5055
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Ich werde jetzt die XYZ-Kalibrierung durchfuehren. Es wird ca. 12 Minuten dauern."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
+#: ultralcd.cpp:5063
 msgid "I will run z calibration now."
 msgstr "Ich werde jetzt die Z Kalibrierung durchfuehren."
 
 # MSG_WATCH
-#: messages.c:99
+#: messages.c:97
 msgid "Info screen"
 msgstr "Infoanzeige"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
+#: ultralcd.cpp:2605
 msgid "Insert filament"
 msgstr "Filament einlegen"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
+#: ultralcd.cpp:4835
 msgid "Is filament loaded?"
 msgstr "Ist das Filament geladen?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
+#: messages.c:90
 msgid "Is steel sheet on heatbed?"
 msgstr "Liegt das Stahlblech auf dem Heizbett?"
 
 # 
-#: ultralcd.cpp:1779
+#: ultralcd.cpp:1727
 msgid "Last print failures"
 msgstr "Letzte Druckfehler"
 
 # 
-#: ultralcd.cpp:1756
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Wenn Sie zusaetzliche Stahlbleche haben, kalibrieren Sie deren Voreinstellungen unter Einstellungen - HW Setup - Stahlbleche."
+
+# 
+#: ultralcd.cpp:1704
 msgid "Last print"
 msgstr "Letzter Druck"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
+#: messages.c:72
 msgid "Left hotend fan?"
 msgstr "Linker Luefter?"
 
 # 
-#: ultralcd.cpp:3011
+#: ultralcd.cpp:2993
 msgid "Left"
 msgstr "Links"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
+#: ultralcd.cpp:3264
 msgid "Left side [um]"
 msgstr "Links [um]"
 
 # 
-#: ultralcd.cpp:5747
+#: ultralcd.cpp:5766
 msgid "Lin. correction"
 msgstr "Lineare Korrektur"
 
 # MSG_BABYSTEP_Z
-#: messages.c:13
+#: messages.c:12
 msgid "Live adjust Z"
 msgstr "Z einstellen"
 
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Stecken Sie das Filament (nicht laden) in den Extruder und druecken Sie dann den Knopf."
+
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:51
+#: messages.c:47
 msgid "Load filament"
 msgstr "Filament laden"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2645
 msgid "Loading color"
 msgstr "Lade Farbe"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:52
+#: messages.c:48
 msgid "Loading filament"
 msgstr "Filament laedt"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
+#: ultralcd.cpp:8317
 msgid "Loose pulley"
 msgstr "Lose Riemenscheibe"
 
 # 
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6944
 msgid "Load to nozzle"
 msgstr "In Druckduese laden"
 
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
 msgid "M117 First layer cal."
 msgstr "M117 Erste-Schicht Kal."
 
 # MSG_MAIN
-#: messages.c:56
+#: messages.c:52
 msgid "Main"
 msgstr "Hauptmenue"
 
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Hell.wert"
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr "Dimmwert"
+
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
+#: messages.c:55
 msgid "Measuring reference height of calibration point"
 msgstr "Messen der Referenzhoehe des Kalibrierpunktes"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
+#: ultralcd.cpp:5856
 msgid "Mesh Bed Leveling"
 msgstr "MeshBett Ausgleich"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
+#: mmu.cpp:765
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Position wiederherstellen..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
+#: mmu.cpp:758
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Temperatur wiederherstellen..."
 
 # 
-#: ultralcd.cpp:3052
+#: ultralcd.cpp:3034
 msgid "Measured skew"
 msgstr "Schraeglauf"
 
 # 
-#: ultralcd.cpp:1780
+#: ultralcd.cpp:1728
 msgid "MMU fails"
 msgstr "MMU Fehler"
 
 # 
-#: mmu.cpp:1592
+#: mmu.cpp:1588
 msgid "MMU load failed     "
 msgstr "MMU Ladefehler"
 
 # 
-#: ultralcd.cpp:1781
+#: ultralcd.cpp:1729
 msgid "MMU load fails"
 msgstr "MMU Ladefehler"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
+#: mmu.cpp:776
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK.  Weiterdrucken..."
 
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Modus    [Normal]"
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Modus"
 
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Modus     [leise]"
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "MK3-Firmware am MK3S-Drucker erkannt"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Leise"
 
 # 
-#: mmu.cpp:719
+#: mmu.cpp:722
 msgid "MMU needs user attention."
 msgstr "MMU erfordert Benutzereingriff."
 
 # 
-#: ultralcd.cpp:1807
+#: ultralcd.cpp:1755
 msgid "MMU power fails"
 msgstr "MMU Netzfehler"
 
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Modus   [Stealth]"
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr ""
 
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Modus[Auto Power]"
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Auto Leist"
 
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Modus[Hohe Leist]"
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Hohe leist"
 
 # 
-#: ultralcd.cpp:2203
+#: ultralcd.cpp:2186
 msgid "MMU2 connected"
 msgstr "MMU2 verbunden"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:83
+#: messages.c:79
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
+#: ultralcd.cpp:5741
 msgid "Move axis"
 msgstr "Achse bewegen"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4375
+#: ultralcd.cpp:4361
 msgid "Move X"
 msgstr "Bewege X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4376
+#: ultralcd.cpp:4362
 msgid "Move Y"
 msgstr "Bewege Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4377
+#: ultralcd.cpp:4363
 msgid "Move Z"
 msgstr "Bewege Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5293
+#: Marlin_main.cpp:5541
 msgid "No move."
 msgstr "Keine Bewegung."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6878
+#: ultralcd.cpp:6911
 msgid "No SD card"
 msgstr "Keine SD Karte"
 
-# 
-#: ultralcd.cpp:3017
+# MSG_NA
+#: messages.c:107
 msgid "N/A"
-msgstr "N.V."
+msgstr "N/V"
 
 # MSG_NO
-#: messages.c:62
+#: messages.c:58
 msgid "No"
 msgstr "Nein"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
+#: ultralcd.cpp:8265
 msgid "Not connected"
 msgstr "Nicht angeschlossen"
 
@@ -826,527 +881,572 @@ msgid "New firmware version available:"
 msgstr "Neue Firmware- Version verfuegbar:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
+#: messages.c:75
 msgid "Not spinning"
 msgstr "Dreht sich nicht"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
+#: ultralcd.cpp:4946
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Jetzt werde ich den Abstand zwischen Duesenspitze und Druckbett kalibrieren."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
+#: ultralcd.cpp:5071
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Jetzt werde ich die Duese fuer PLA vorheizen."
 
 # MSG_NOZZLE
-#: messages.c:63
+#: messages.c:59
 msgid "Nozzle"
 msgstr "Duese"
 
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Alte Einstellungen gefunden. Standard PID, E-Steps u.s.w. werden gesetzt."
 
 # 
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:5062
 msgid "Now remove the test print from steel sheet."
 msgstr "Testdruck jetzt von Stahlblech entfernen."
 
 # 
-#: ultralcd.cpp:1706
+#: ultralcd.cpp:1654
 msgid "Nozzle FAN"
 msgstr "Duesevent."
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
+#: ultralcd.cpp:6875
 msgid "Pause print"
 msgstr "Druck pausieren"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
+#: ultralcd.cpp:1539
 msgid "PID cal.           "
 msgstr "PID Kal.           "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
+#: ultralcd.cpp:1545
 msgid "PID cal. finished"
 msgstr "PID Kalib. fertig"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
+#: ultralcd.cpp:5862
 msgid "PID calibration"
 msgstr "PID Kalibrierung"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
+#: ultralcd.cpp:896
 msgid "PINDA Heating"
 msgstr "PINDA erwaermen"
 
-# MSG_PAPER c=20 r=8
-#: messages.c:64
+# MSG_PAPER c=20 r=10
+#: messages.c:60
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Legen Sie ein Blatt Papier unter die Duese waehrend der Kalibrierung der ersten 4 Punkte. Wenn die Duese das Papier erfasst, den Drucker sofort ausschalten."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
+#: ultralcd.cpp:5128
 msgid "Please clean heatbed and then press the knob."
 msgstr "Bitte reinigen Sie das Heizbett und druecken Sie dann den Knopf."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
+#: messages.c:21
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Bitte entfernen Sie ueberstehendes Filament von der Duese. Klicken wenn sauber."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
+#: ultralcd.cpp:8257
 msgid "Please check :"
 msgstr "Bitte pruefe:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
+#: messages.c:98
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Bitte lesen Sie unser Handbuch und beheben Sie das Problem. Fahren Sie dann mit dem Assistenten fort, indem Sie den Drucker neu starten."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
+#: Marlin_main.cpp:3138
 msgid "Please open idler and remove filament manually."
 msgstr "Bitte Spannrolle oeffnen und Fila- ment von Hand entfernen"
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
+#: messages.c:61
 msgid "Please place steel sheet on heatbed."
 msgstr "Bitte legen Sie das Stahlblech auf das Heizbett."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
+#: messages.c:64
 msgid "Please press the knob to unload filament"
 msgstr "Bitte druecken Sie den Knopf um das Filament zu entladen."
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
+#: messages.c:66
 msgid "Please pull out filament immediately"
 msgstr "Bitte ziehen Sie das Filament sofort heraus"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
+#: mmu.cpp:1422
 msgid "Please remove filament and then press the knob."
 msgstr "Bitte Filament entfernen und dann den Knopf druecken"
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
+#: messages.c:70
 msgid "Please remove steel sheet from heatbed."
 msgstr "Bitte entfernen Sie das Stahlblech vom Heizbett."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
+#: Marlin_main.cpp:4583
 msgid "Please run XYZ calibration first."
 msgstr "Bitte zuerst XYZ Kalibrierung ausfuehren."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
+#: mmu.cpp:1341
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Bitte aktualisieren Sie die Firmware in der MMU2. Warte auf Reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:66
+#: messages.c:62
 msgid "Please wait"
 msgstr "Bitte warten"
 
 # 
-#: ultralcd.cpp:5070
+#: ultralcd.cpp:5061
 msgid "Please remove shipping helpers first."
 msgstr "Bitte zuerst Transportsicherungen entfernen."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
+#: messages.c:63
 msgid "Preheat the nozzle!"
 msgstr "Duese vorheizen!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6825
+#: ultralcd.cpp:6853
 msgid "Preheat"
 msgstr "Vorheizen"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
+#: messages.c:100
 msgid "Preheating nozzle. Please wait."
 msgstr "Vorheizen der Duese. Bitte warten."
 
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
 # 
 #: util.cpp:297
 msgid "Please upgrade."
 msgstr "Bitte aktualisieren."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
+#: Marlin_main.cpp:11526
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Bitte druecken Sie den Knopf um die Duese vorzuheizen und fortzufahren."
 
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr ""
+
 # 
-#: ultralcd.cpp:1835
+#: ultralcd.cpp:1783
 msgid "Power failures"
 msgstr "Netzfehler"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:69
+#: messages.c:65
 msgid "Print aborted"
 msgstr "Druck abgebrochen"
 
-# 
-#: ultralcd.cpp:2452
+#  c=20
+#: ultralcd.cpp:2442
 msgid "Preheating to load"
 msgstr "Heizen zum Laden"
 
-# 
-#: ultralcd.cpp:2456
+#  c=20
+#: ultralcd.cpp:2446
 msgid "Preheating to unload"
 msgstr "Heizen zum Entladen"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
+#: ultralcd.cpp:8689
 msgid "Print fan:"
 msgstr "Druckvent.:"
 
 # MSG_CARD_MENU
-#: messages.c:21
+#: messages.c:20
 msgid "Print from SD"
 msgstr "Drucken von SD"
 
 # 
-#: ultralcd.cpp:2301
+#: ultralcd.cpp:2289
 msgid "Press the knob"
 msgstr "Knopf druecken zum"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
+#: ultralcd.cpp:1118
 msgid "Print paused"
 msgstr "Druck pausiert"
 
 # 
-#: mmu.cpp:723
+#: mmu.cpp:726
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Druecken Sie den Knopf um die Duesentemperatur wiederherzustellen"
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
+#: messages.c:38
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Drucker wurde noch nicht kalibriert. Bitte folgen Sie dem Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrie- rungsablauf."
 
 # 
-#: ultralcd.cpp:1707
+#: ultralcd.cpp:1655
 msgid "Print FAN"
 msgstr "Druckvent."
 
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Bitte legen Sie das Filament in den Extruder ein und druecken Sie dann den Knopf, um es zu laden."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Bitte stecken Sie das Filament in den ersten Schlauch der MMU und druecken Sie dann den Knopf, um es zu laden."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Bitte laden Sie zuerst das Filament."
+
 # MSG_PRUSA3D
-#: ultralcd.cpp:2189
+#: ultralcd.cpp:2155
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
+#: ultralcd.cpp:3267
 msgid "Rear side [um]"
 msgstr "Hinten [um]"
 
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Bitte entladen Sie erst das Filament und versuchen Sie es nochmal."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
 msgid "Recovering print    "
-msgstr "Druck wiederherst    "
+msgstr "Druck wiederherst   "
 
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Entfernen Sie das alte Filament und druecken Sie den Knopf, um das neue zu laden."
 
-# 
+#  c=20
 #: 
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
+#: ultralcd.cpp:5867
 msgid "Reset XYZ calibr."
 msgstr "Reset XYZ Kalibr."
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3268
 msgid "Reset"
 msgstr "Ruecksetzen"
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
+#: ultralcd.cpp:6861
 msgid "Resume print"
 msgstr "Druck fortsetzen"
 
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
 msgid "Resuming print"
 msgstr "Druck fortgesetzt"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
+#: ultralcd.cpp:3265
 msgid "Right side[um]"
 msgstr "Rechts [um]"
 
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "RPi Port     [an]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "RPi Port    [aus]"
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr ""
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
+#: ultralcd.cpp:4864
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Der Assistent wird die aktuellen Kalibrierungsdaten loeschen und von vorne beginnen. Weiterfahren?"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "SD Karte [normal]"
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "SD Karte"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "SD Karte[flshAir]"
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
 
 # 
-#: ultralcd.cpp:3012
+#: ultralcd.cpp:2994
 msgid "Right"
 msgstr "Rechts"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
+#: messages.c:35
 msgid "Searching bed calibration point"
 msgstr "Suche Bett Kalibrierpunkt"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5779
 msgid "Select language"
 msgstr "Waehle Sprache"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
+#: ultralcd.cpp:7812
 msgid "Self test OK"
 msgstr "Selbsttest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
+#: ultralcd.cpp:7582
 msgid "Self test start  "
 msgstr "Selbsttest start "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5820
+#: ultralcd.cpp:5843
 msgid "Selftest         "
 msgstr "Selbsttest       "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
+#: ultralcd.cpp:8255
 msgid "Selftest error !"
 msgstr "Selbsttest Fehler!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:77
+#: messages.c:73
 msgid "Selftest failed  "
 msgstr "Selbsttest Error "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1550
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Selbsttest im Gang, um die genaue Rueck- kehr zum Nullpunkt ohne Sensor zu kalibrieren"
 
 # 
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5102
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Bitte Vorheiztemperatur auswaehlen, die Ihrem Material entspricht."
 
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "PLA Filament auswaehlen:"
-
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
+#: ultralcd.cpp:3286
 msgid "Set temperature:"
 msgstr "Temp. einstellen:"
 
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
 # MSG_SETTINGS
-#: messages.c:86
+#: messages.c:82
 msgid "Settings"
 msgstr "Einstellungen"
 
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
 msgid "Show end stops"
 msgstr "Endschalter Status"
 
 # 
-#: ultralcd.cpp:4022
+#: ultralcd.cpp:4008
 msgid "Sensor state"
 msgstr "Sensorstatus"
 
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Einige Dateien wur- den nicht sortiert. Max. Dateien pro Verzeichnis = 100."
 
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Sort.      [ohne]"
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Sort."
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Ohne"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Sort.      [Zeit]"
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Zeit"
 
 # 
-#: ultralcd.cpp:3055
+#: ultralcd.cpp:3037
 msgid "Severe skew:"
 msgstr "Schwer.Schr:"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Sort.  [Alphabet]"
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr ""
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
+#: cardreader.cpp:745
 msgid "Sorting files"
 msgstr "Sortiere Dateien"
 
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Sound      [laut]"
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Laut"
 
 # 
-#: ultralcd.cpp:3054
+#: ultralcd.cpp:3036
 msgid "Slight skew:"
 msgstr "Leicht.Schr:"
 
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Sound     [stumm]"
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Ton"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
 
 # 
-#: Marlin_main.cpp:4875
+#: Marlin_main.cpp:5101
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Fehler aufgetreten, Z-Kalibrierung erforderlich..."
 
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Sound    [einmal]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Sound     [leise]"
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Einmal"
 
 # MSG_SPEED
-#: ultralcd.cpp:7032
+#: ultralcd.cpp:7119
 msgid "Speed"
 msgstr "Geschwindigkeit"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
+#: messages.c:76
 msgid "Spinning"
 msgstr "Dreht sich"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
+#: Marlin_main.cpp:4596
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Stabile Umgebungs- temperatur 21-26C und feste Stand- flaeche erforderlich"
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6945
+#: ultralcd.cpp:6978
 msgid "Statistics  "
 msgstr "Statistiken "
 
 # MSG_STOP_PRINT
-#: messages.c:93
+#: messages.c:91
 msgid "Stop print"
 msgstr "Druck abbrechen"
 
 # MSG_STOPPED
-#: messages.c:94
+#: messages.c:92
 msgid "STOPPED. "
 msgstr "GESTOPPT."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6954
+#: ultralcd.cpp:6987
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
+#: ultralcd.cpp:8335
 msgid "Swapped"
 msgstr "Ausgetauscht"
 
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Temp Kalib.         "
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Filament auswaehlen:"
 
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Temp. Kal.   [an]"
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Temp Kalib."
 
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Temp. Kal.  [aus]"
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Waehlen Sie die Temperatur, die zu Ihrem Material passt."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5873
 msgid "Temp. calibration"
 msgstr "Temp. kalibrieren"
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
+#: ultralcd.cpp:3933
 msgid "Temperature calibration failed"
 msgstr "Temperaturkalibrierung fehlgeschlagen"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
+#: messages.c:94
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Temp.kalibrierung ist fertig + aktiv. Temp.kalibrierung kann ausgeschaltet werden im Menu Einstellungen -> Temp.kal."
 
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensor ueberprueft, entladen Sie jetzt das Filament."
+
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5717
+#: ultralcd.cpp:5739
 msgid "Temperature"
 msgstr "Temperatur"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2218
 msgid "Temperatures"
 msgstr "Temperaturen"
 
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
-msgstr "Es ist noch notwendig die Z-Kalibrierung auszufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
+msgstr "Es ist noch not- wendig die Z- Kalibrierung aus- zufuehren. Bitte befolgen Sie das Handbuch, Kapitel Erste Schritte, Abschnitt Kalibrierablauf."
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2891
 msgid "Total filament"
 msgstr "Gesamtes Filament"
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2892
 msgid "Total print time"
 msgstr "Gesamte Druckzeit"
 
 # MSG_TUNE
-#: ultralcd.cpp:6822
+#: ultralcd.cpp:6850
 msgid "Tune"
 msgstr "Feineinstellung"
 
@@ -1356,62 +1456,62 @@ msgid "Unload"
 msgstr "Entladen"
 
 # 
-#: ultralcd.cpp:1804
+#: ultralcd.cpp:1752
 msgid "Total failures"
 msgstr "Gesamte Fehler"
 
 # 
-#: ultralcd.cpp:2308
+#: ultralcd.cpp:2296
 msgid "to load filament"
 msgstr "Filament laden"
 
 # 
-#: ultralcd.cpp:2312
+#: ultralcd.cpp:2300
 msgid "to unload filament"
 msgstr "Filament entladen"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
+#: messages.c:95
 msgid "Unload filament"
 msgstr "Filament entladen"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
+#: messages.c:96
 msgid "Unloading filament"
 msgstr "Filament auswerfen"
 
 # 
-#: ultralcd.cpp:1757
+#: ultralcd.cpp:1705
 msgid "Total"
 msgstr "Gesamt"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
+#: ultralcd.cpp:6001
 msgid "Used during print"
 msgstr "Beim Druck benutzt"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
+#: ultralcd.cpp:2221
 msgid "Voltages"
 msgstr "Spannungen"
 
 # 
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2194
 msgid "unknown"
 msgstr "unbekannt"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5264
+#: Marlin_main.cpp:5511
 msgid "Wait for user..."
 msgstr "Warte auf Benutzer.."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
+#: ultralcd.cpp:3434
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Warten bis Heizung und Bett abgekuehlt sind"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
+#: ultralcd.cpp:3395
 msgid "Waiting for PINDA probe cooling"
 msgstr "Warten, bis PINDA- Sonde abgekuehlt ist"
 
@@ -1421,264 +1521,224 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Entladen Sie das Filament 1, wenn er aus dem hinteren MMU-Rohr herausragt. Verwenden Sie den Auswurf, wenn er im Rohr versteckt ist."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1510
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Warnung: Druckertyp und Platinentyp wurden beide geaendert."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1502
 msgid "Warning: motherboard type changed."
 msgstr "Warnung: Platinentyp wurde geaendert."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1506
 msgid "Warning: printer type changed."
 msgstr "Warnung: Druckertyp wurde geaendert."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
+#: Marlin_main.cpp:3128
 msgid "Was filament unload successful?"
 msgstr "Konnten Sie das Filament entnehmen?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
+#: messages.c:81
 msgid "Wiring error"
 msgstr "Verdrahtungsfehler"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
+#: ultralcd.cpp:5834
 msgid "Wizard"
 msgstr "Assistent"
 
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
 msgid "XYZ cal. details"
 msgstr "XYZ Kal. Details"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
+#: messages.c:18
 msgid "XYZ calibration failed. Please consult the manual."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Bitte schauen Sie in das Handbuch."
 
 # MSG_YES
-#: messages.c:104
+#: messages.c:102
 msgid "Yes"
 msgstr "Ja"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
+#: messages.c:101
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Sie koennen den Assistenten immer im Menu neu starten: Kalibrierung -> Assistent"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
+#: ultralcd.cpp:3904
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "XYZ Kalibrierung in Ordnung. Schraeglauf wird automatisch korrigiert."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
+#: ultralcd.cpp:3901
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "XYZ Kalibrierung in Ordnung. X/Y Achsen sind etwas schraeg."
 
-# 
-#: ultralcd.cpp:5197
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr "Verzoegerung"
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
 msgid "X-correct:"
 msgstr "X-Korrektur:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
+#: ultralcd.cpp:3898
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "XYZ-Kalibrierung ok. X/Y-Achsen sind senkrecht zueinander Glueckwunsch!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
+#: ultralcd.cpp:3882
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Vordere Kalibrierpunkte nicht erreichbar."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
+#: ultralcd.cpp:3885
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "XYZ-Kalibrierung beeintraechtigt. Rechter vorderer Kalibrierpunkt nicht erreichbar."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
+#: ultralcd.cpp:6261
 msgid "Load all"
 msgstr "Alle laden"
 
 # 
-#: ultralcd.cpp:3879
+#: ultralcd.cpp:3864
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Bett-Kalibrierpunkt nicht gefunden."
 
 # 
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3870
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Vordere Kalibrierpunkte nicht erreichbar."
 
 # 
-#: ultralcd.cpp:3888
+#: ultralcd.cpp:3873
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
 
-"XYZ calibration failed. Right front calibration point not reachable."
-#: 
-msgid "XYZ-Kalibrierung fehlgeschlagen. Rechter vorderer Kalibrierpunkt ist nicht erreichbar."
-msgstr 
-
 # 
-#: ultralcd.cpp:3009
+#: ultralcd.cpp:2991
 msgid "Y distance from min"
 msgstr "Y Entfernung vom Min"
 
 # 
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "Der Drucker beginnt mit dem Drucken einer Zickzacklinie. Drehen Sie den Knopf, bis Sie die optimale Hoehe erreicht haben. Ueberpruefen Sie die Bilder im Handbuch (Kapitel Kalibrierung)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Ueberpruefung fehl- geschlagen, entladen Sie das Filament und versuchen Sie es erneut."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
 msgid "Y-correct:"
 msgstr "Y-Korrektur:"
 
 # MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [aus]"
+#: messages.c:105
+msgid "Off"
+msgstr "Aus"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "An"
 
 # 
-#: messages.c:57
+#: messages.c:53
 msgid "Back"
 msgstr "Zurueck"
 
 # 
-#: ultralcd.cpp:5706
+#: ultralcd.cpp:5724
 msgid "Checks"
 msgstr "Kontrolle"
 
 # 
-#: ultralcd.cpp:8080
+#: ultralcd.cpp:8349
 msgid "False triggering"
 msgstr "Falschtriggerung"
 
 # 
-#: ultralcd.cpp:4027
+#: ultralcd.cpp:4013
 msgid "FINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware   [ohne]"
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [strikt]"
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Strikt"
 
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware [warnen]"
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Warnen"
 
 # 
-#: messages.c:87
+#: messages.c:83
 msgid "HW Setup"
 msgstr "HW Einstellungen"
 
 # 
-#: ultralcd.cpp:4031
+#: ultralcd.cpp:4017
 msgid "IR:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Magnet Komp.  [nv]"
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Magnet Komp."
 
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Magnet Komp. [Aus]"
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr "Gitter"
 
 # 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Magnet Komp.  [An]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Gitter       [3x3]"
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Gitter       [7x7]"
-
-# 
-#: ultralcd.cpp:5744
+#: ultralcd.cpp:5763
 msgid "Mesh bed leveling"
 msgstr "MeshBett Ausgleich"
 
 # 
-#: Marlin_main.cpp:852
+#: Marlin_main.cpp:872
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "MK3S-Firmware auf MK3-Drucker erkannt"
 
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "MMU Modus[Normal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "MMU Mod.[Stealth]"
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "MMU Modus"
 
 # 
-#: ultralcd.cpp:4508
+#: ultralcd.cpp:4494
 msgid "Mode change in progress ..."
 msgstr "Moduswechsel erfolgt..."
 
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Modell     [ohne]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Modell   [strikt]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Modell   [warnen]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Duese D.   [0.25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Duese D.   [0.40]"
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr "Modell"
 
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Duese D.   [0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Duese      [ohne]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Duese    [strikt]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Duese    [warnen]"
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Duese D."
 
 # 
 #: util.cpp:514
@@ -1711,17 +1771,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-Code ist fuer eine neuere Firmware geslict. Bitte die Firmware updaten. Druck abgebrochen."
 
 # 
-#: ultralcd.cpp:4023
+#: ultralcd.cpp:4009
 msgid "PINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2462
+#  c=20
+#: ultralcd.cpp:2452
 msgid "Preheating to cut"
 msgstr "Heizen zum Schnitt"
 
-# 
-#: ultralcd.cpp:2459
+#  c=20
+#: ultralcd.cpp:2449
 msgid "Preheating to eject"
 msgstr "Heizen zum Auswurf"
 
@@ -1735,53 +1795,48 @@ msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Fortfahren?"
 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 msgstr "Der Durchmesser der Druckerduese weicht vom G-Code ab. Bitte ueberpruefen Sie den Wert in den Einstellungen. Druck abgebrochen."
 
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr ""
+
 # 
-#: ultralcd.cpp:6786
+#: ultralcd.cpp:6814
 msgid "Rename"
 msgstr "Umbenennen"
 
 # 
-#: ultralcd.cpp:6779
+#: ultralcd.cpp:6807
 msgid "Select"
 msgstr "Auswahl"
 
 # 
-#: ultralcd.cpp:2229
+#: ultralcd.cpp:2212
 msgid "Sensor info"
 msgstr "Sensor Info"
 
-# 
-#: messages.c:58
+# MSG_SHEET c=10
+#: messages.c:54
 msgid "Sheet"
-msgstr "Blech"
+msgstr "Stahlblech"
 
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Sound    [Assist]"
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5704
+#  c=18
+#: ultralcd.cpp:5722
 msgid "Steel sheets"
 msgstr "Stahlbleche"
 
-# 
-#: ultralcd.cpp:5199
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
 msgid "Z-correct:"
 msgstr "Z-Korrektur:"
 
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Z-Probe Nr.    [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Z-Probe Nr.    [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Z-Probe Nr.    [5]"
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr ""
 

+ 645 - 585
lang/po/new/es.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: es\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:21:33 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:21:33 PM\n"
+"POT-Creation-Date: Wed May 13 17:41:49 CEST 2020\n"
+"PO-Revision-Date: Wed May 13 17:41:49 CEST 2020\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,18 +20,28 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Ajuste Z\x0aAjustado, continuar\x0ao empezar de nuevo?\x0a%cContinuar%cRepetir"
 
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 o mayor"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 o mas nueva"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
+#: messages.c:36
 msgid " of 4"
 msgstr " de 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
+#: messages.c:56
 msgid " of 9"
 msgstr " de 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
+#: ultralcd.cpp:3064
 msgid "[0;0] point offset"
 msgstr "[0;0] punto offset"
 
@@ -46,53 +56,48 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "ATENCION:\x0aDec. choque\x0adesactivada en\x0aModo silencio"
 
 # 
-#: ultralcd.cpp:2470
+#: ultralcd.cpp:2460
 msgid ">Cancel"
 msgstr ">Cancelar"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
+#: ultralcd.cpp:3184
 msgid "Adjusting Z:"
 msgstr "Ajustar-Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
+#: ultralcd.cpp:8677
 msgid "All correct      "
 msgstr "Todo bien"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
+#: messages.c:99
 msgid "All is done. Happy printing!"
 msgstr "Terminado! Feliz impresion!"
 
 # 
-#: ultralcd.cpp:1993
+#: ultralcd.cpp:1956
 msgid "Ambient"
 msgstr "Ambiente"
 
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
 msgid "and press the knob"
 msgstr "Haz clic"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
+#: ultralcd.cpp:3506
 msgid "Are left and right Z~carriages all up?"
 msgstr "Carros Z izq./der. estan arriba maximo?"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr ""
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
 msgstr ""
 
 # MSG_AUTO_HOME
@@ -100,723 +105,773 @@ msgstr ""
 msgid "Auto home"
 msgstr "Llevar al origen"
 
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
 msgid "AutoLoad filament"
-msgstr "Carga automatica de filamento"
+msgstr "Carga auto. filam."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
+#: ultralcd.cpp:4445
 msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "La carga automatica de filamento solo funciona si el sensor de filamento esta activado..."
+msgstr "La carga automatica solo funciona si el sensor de filamento esta activado..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
+#: ultralcd.cpp:2804
 msgid "Autoloading filament is active, just press the knob and insert filament..."
-msgstr "La carga automatica de filamento esta activada, pulse el dial e inserte el filamento..."
+msgstr "La carga automatica esta activada, pulse el dial e inserte el filamento..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
+#: ultralcd.cpp:8325
 msgid "Axis length"
 msgstr "Longitud del eje"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
+#: ultralcd.cpp:8327
 msgid "Axis"
 msgstr "Eje"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
+#: ultralcd.cpp:8269
 msgid "Bed / Heater"
 msgstr "Base / Calentador"
 
 # MSG_BED_DONE
-#: messages.c:16
+#: messages.c:15
 msgid "Bed done"
 msgstr "Base preparada"
 
 # MSG_BED_HEATING
-#: messages.c:17
+#: messages.c:16
 msgid "Bed Heating"
 msgstr "Calentando Base"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
+#: ultralcd.cpp:5861
 msgid "Bed level correct"
 msgstr "Corr. de la cama"
 
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test cinturon    "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr "Nivelacion fallada. Sensor no funciona. Restos en boquilla? Esperando reset."
 
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Brill."
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Brillo"
+
 # MSG_BED
-#: messages.c:15
+#: messages.c:14
 msgid "Bed"
 msgstr "Base"
 
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
 msgid "Belt status"
-msgstr "Estado de la correa"
+msgstr "Estado de correa"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
+#: messages.c:67
 msgid "Blackout occurred. Recover print?"
 msgstr "Se fue la luz. ?Reanudar la impresion?"
 
 # 
-#: ultralcd.cpp:8404
+#: ultralcd.cpp:8679
 msgid "Calibrating home"
 msgstr "Calibrando posicion inicial"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
+#: ultralcd.cpp:5850
 msgid "Calibrate XYZ"
 msgstr "Calibrar XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:48
+#: messages.c:44
 msgid "Calibrate Z"
 msgstr "Calibrar Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
+#: ultralcd.cpp:4637
 msgid "Calibrate"
 msgstr "Calibrar"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibrando XYZ. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
+#: messages.c:19
 msgid "Calibrating Z"
 msgstr "Calibrando Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibrando Z. Gira el dial para subir el extrusor hasta tocar los topes superiores. Despues haz clic."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
+#: ultralcd.cpp:865
 msgid "Calibration done"
 msgstr "Calibracion OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:61
+#: messages.c:57
 msgid "Calibration"
 msgstr "Calibracion"
 
 # 
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:4815
 msgid "Cancel"
 msgstr "Cancelar"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:8812
+#: ultralcd.cpp:9090
 msgid "Card removed"
 msgstr "Tarjeta retirada"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2719
+#: ultralcd.cpp:2709
 msgid "Color not correct"
 msgstr "Color no homogeneo"
 
 # MSG_COOLDOWN
-#: messages.c:23
+#: messages.c:22
 msgid "Cooldown"
 msgstr "Enfriar"
 
 # 
-#: ultralcd.cpp:4584
+#: ultralcd.cpp:4570
 msgid "Copy selected language?"
 msgstr "Copiar idioma seleccionado?"
 
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Det. choque [act]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Dec. choque [N/D]"
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Det. choque"
 
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Det. choque [ina]"
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Escoge un filamento para la Calibracion de la Primera Capa y seleccionalo en el menu en pantalla."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
+#: messages.c:23
 msgid "Crash detected."
 msgstr "Choque detectado."
 
 # 
-#: Marlin_main.cpp:596
+#: Marlin_main.cpp:607
 msgid "Crash detected. Resume print?"
 msgstr "Choque detectado. Continuar impresion?"
 
 # 
-#: ultralcd.cpp:1837
+#: ultralcd.cpp:1785
 msgid "Crash"
 msgstr "Choque"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
+#: ultralcd.cpp:6002
 msgid "Current"
 msgstr "Actual"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
+#: ultralcd.cpp:2163
 msgid "Date:"
 msgstr "Fecha:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
+#: ultralcd.cpp:5743
 msgid "Disable steppers"
 msgstr "Apagar motores"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
+#: messages.c:13
 msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 msgstr "Distancia entre la punta del boquilla y la superficie de la base aun no fijada. Por favor siga el manual, capitulo Primeros Pasos, Calibracion primera capa."
 
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
+#: ultralcd.cpp:5125
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Quieres repetir el ultimo paso para reajustar la distancia boquilla-base?"
 
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
 msgid "E-correct:"
 msgstr "Corregir-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
+#: messages.c:49
 msgid "Eject filament"
-msgstr "Expulsar filamento"
+msgstr "Expulsar fil."
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
+#: mmu.cpp:1416
 msgid "Ejecting filament"
 msgstr "Expulsando filamento"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
 msgid "Endstop not hit"
 msgstr "Endstop no alcanzado"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
+#: ultralcd.cpp:8287
 msgid "Endstop"
 msgstr ""
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
+#: ultralcd.cpp:8275
 msgid "Endstops"
 msgstr ""
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
+#: ultralcd.cpp:6998
 msgid "Error - static memory has been overwritten"
 msgstr "Error - se ha sobre-escrito la memoria estatica"
 
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Cortar filament"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Cuchillo"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Corte de filament"
+
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
+#: ultralcd.cpp:4458
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "ERROR: El sensor de filamento no responde, por favor comprueba la conexion."
 
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr ""
+
 # MSG_ERROR
-#: messages.c:28
+#: messages.c:25
 msgid "ERROR:"
 msgstr ""
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
+#: ultralcd.cpp:8686
 msgid "Extruder fan:"
 msgstr "Vent.extrusor:"
 
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
 msgid "Extruder info"
-msgstr "Informacion del extrusor"
+msgstr "Info. del extrusor"
 
 # MSG_MOVE_E
-#: messages.c:29
+#: messages.c:26
 msgid "Extruder"
 msgstr "Extruir"
 
 # 
-#: ultralcd.cpp:6952
+#: ultralcd.cpp:6985
 msgid "Fail stats MMU"
 msgstr "Estadistica de fallos MMU"
 
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "Autocarg.Fil[act]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "Autocarg.Fil[N/D]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "Autocarg.Fil[ina]"
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "Autocarg.fil."
 
 # 
-#: ultralcd.cpp:6949
+#: ultralcd.cpp:6982
 msgid "Fail stats"
 msgstr "Estadistica de fallos"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:31
+#: messages.c:28
 msgid "Fan speed"
-msgstr "Velocidad Vent."
+msgstr "Velocidad Vent"
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:78
+#: messages.c:74
 msgid "Fan test"
 msgstr "Test ventiladores"
 
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Comprob.vent[act]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Comprob.vent[ina]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Sensor Fil. [act]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Sensor Fil. [N/D]"
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Comprob.vent"
 
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Sensor Fil. [ina]"
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Sensor Fil."
 
-# 
-#: ultralcd.cpp:1836
+#  c=14
+#: ultralcd.cpp:1784
 msgid "Filam. runouts"
 msgstr "Filam. acabado"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
+#: messages.c:29
 msgid "Filament extruding & with correct color?"
 msgstr "Es nitido el color nuevo?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
+#: ultralcd.cpp:2705
 msgid "Filament not loaded"
 msgstr "Fil. no introducido"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
+#: messages.c:80
 msgid "Filament sensor"
 msgstr "Sensor de filamento"
 
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
 msgid "Filament used"
 msgstr "Filamento usado"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
+#: ultralcd.cpp:2870
 msgid "Print time"
 msgstr "Tiempo de imp.:"
 
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "FS accion"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 o +nueva"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
 msgid "File incomplete. Continue anyway?"
 msgstr "Archivo incompleto. ?Continuar de todos modos?"
 
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
 msgid "Finishing movements"
 msgstr "Term. movimientos"
 
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
 msgid "First layer cal."
 msgstr "Cal. primera cap."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:5046
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Primero, hare el Selftest para comprobar los problemas de montaje mas comunes."
 
 # 
-#: mmu.cpp:724
+#: mmu.cpp:727
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Corrige el problema y pulsa el boton en la unidad MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7038
+#: ultralcd.cpp:7125
 msgid "Flow"
 msgstr "Flujo"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
+#: ultralcd.cpp:2156
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
+#: messages.c:71
 msgid "Front print fan?"
 msgstr "Vent. frontal?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
+#: ultralcd.cpp:3266
 msgid "Front side[um]"
 msgstr "Frontal [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
+#: ultralcd.cpp:8333
 msgid "Front/left fans"
 msgstr "Ventiladores frontal/izquierdo"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
+#: ultralcd.cpp:8263
 msgid "Heater/Thermistor"
 msgstr "Calentador/Termistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
+#: Marlin_main.cpp:9440
 msgid "Heating disabled by safety timer."
 msgstr "Calentadores desactivados por el temporizador de seguridad."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:47
+#: messages.c:43
 msgid "Heating done."
-msgstr "Calentamiento acabado."
+msgstr "Calentando acabado."
 
 # MSG_HEATING
-#: messages.c:46
+#: messages.c:42
 msgid "Heating"
 msgstr "Calentando..."
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
+#: ultralcd.cpp:5025
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Hola, soy tu impresora Original Prusa i3. Quieres que te guie a traves de la configuracion?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
+#: ultralcd.cpp:2157
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:37
+#: messages.c:34
 msgid "Change filament"
 msgstr "Cambiar filamento"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
+#: ultralcd.cpp:2620
 msgid "Change success!"
 msgstr "Cambio correcto"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
+#: ultralcd.cpp:2697
 msgid "Changed correctly?"
 msgstr "Cambio correcto?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
+#: messages.c:77
 msgid "Checking bed     "
 msgstr "Control base cal."
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
+#: ultralcd.cpp:8668
 msgid "Checking endstops"
 msgstr "Control endstops"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
+#: ultralcd.cpp:8674
 msgid "Checking hotend  "
 msgstr "Control fusor"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
+#: messages.c:78
 msgid "Checking sensors "
-msgstr "Comprobando los sensores"
+msgstr "Comprobando sensores"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
+#: ultralcd.cpp:7482
 msgid "Checking X axis  "
 msgstr "Control sensor X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
+#: ultralcd.cpp:7491
 msgid "Checking Y axis  "
 msgstr "Control sensor Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
+#: ultralcd.cpp:8671
 msgid "Checking Z axis  "
 msgstr "Control sensor Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
+#: messages.c:45
 msgid "Choose extruder:"
 msgstr "Elegir extrusor:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
+#: messages.c:46
 msgid "Choose filament:"
 msgstr "Elije filamento:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:30
+#: messages.c:27
 msgid "Filament"
 msgstr "Filamento"
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
+#: ultralcd.cpp:5055
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Hare la calibracion XYZ. Tardara 12 min. aproximadamente."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
+#: ultralcd.cpp:5063
 msgid "I will run z calibration now."
 msgstr "Voy a hacer Calibracion Z ahora."
 
 # MSG_WATCH
-#: messages.c:99
+#: messages.c:97
 msgid "Info screen"
 msgstr "Monitorizar"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
+#: ultralcd.cpp:2605
 msgid "Insert filament"
 msgstr "Introducir filamento"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
+#: ultralcd.cpp:4835
 msgid "Is filament loaded?"
 msgstr "Esta el filamento cargado?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
+#: messages.c:90
 msgid "Is steel sheet on heatbed?"
-msgstr "?Esta colocada la lamina de acero sobre la base?"
+msgstr "?Esta colocada la lamina sobre la base"
 
 # 
-#: ultralcd.cpp:1779
+#: ultralcd.cpp:1727
 msgid "Last print failures"
 msgstr "Ultimas impresiones fallidas"
 
 # 
-#: ultralcd.cpp:1756
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Si tienes planchas de acero adicionales, calibra sus ajustes en Ajustes - Ajustes HW - Planchas acero."
+
+# 
+#: ultralcd.cpp:1704
 msgid "Last print"
 msgstr "Ultima impresion"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
+#: messages.c:72
 msgid "Left hotend fan?"
 msgstr "Vent. izquierdo?"
 
 # 
-#: ultralcd.cpp:3011
+#: ultralcd.cpp:2993
 msgid "Left"
 msgstr "Izquierda"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
+#: ultralcd.cpp:3264
 msgid "Left side [um]"
 msgstr "Izquierda [um]"
 
 # 
-#: ultralcd.cpp:5747
+#: ultralcd.cpp:5766
 msgid "Lin. correction"
 msgstr "Correccion de Linealidad"
 
 # MSG_BABYSTEP_Z
-#: messages.c:13
+#: messages.c:12
 msgid "Live adjust Z"
 msgstr "Micropaso Eje Z"
 
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Inserte el filamento (no lo cargue) en el extrusor y luego presione el dial."
+
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:51
+#: messages.c:47
 msgid "Load filament"
 msgstr "Introducir filam."
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2645
 msgid "Loading color"
 msgstr "Cambiando color"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:52
+#: messages.c:48
 msgid "Loading filament"
 msgstr "Introduciendo filam."
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
+#: ultralcd.cpp:8317
 msgid "Loose pulley"
 msgstr "Polea suelta"
 
 # 
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6944
 msgid "Load to nozzle"
 msgstr "Cargar a la boquilla"
 
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
 msgid "M117 First layer cal."
 msgstr "M117 Cal. primera cap."
 
 # MSG_MAIN
-#: messages.c:56
+#: messages.c:52
 msgid "Main"
 msgstr "Menu principal"
 
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Valor brill."
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr ""
+
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
+#: messages.c:55
 msgid "Measuring reference height of calibration point"
 msgstr "Midiendo altura del punto de calibracion"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
+#: ultralcd.cpp:5856
 msgid "Mesh Bed Leveling"
 msgstr "Nivelacion Mesh Level"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
+#: mmu.cpp:765
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Restaurando posicion..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
+#: mmu.cpp:758
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Restaurando temperatura..."
 
 # 
-#: ultralcd.cpp:3052
+#: ultralcd.cpp:3034
 msgid "Measured skew"
 msgstr "Desviacion med:"
 
 # 
-#: ultralcd.cpp:1780
+#: ultralcd.cpp:1728
 msgid "MMU fails"
 msgstr "Fallos MMU"
 
 # 
-#: mmu.cpp:1592
+#: mmu.cpp:1588
 msgid "MMU load failed     "
 msgstr "Carga MMU fallida"
 
 # 
-#: ultralcd.cpp:1781
+#: ultralcd.cpp:1729
 msgid "MMU load fails"
 msgstr "Carga MMU falla"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
+#: mmu.cpp:776
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Resumiendo..."
 
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Modo     [Normal]"
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Modo"
 
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Modo   [silencio]"
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Firmware MK3 detectado en impresora MK3S"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Silencio"
 
 # 
-#: mmu.cpp:719
+#: mmu.cpp:722
 msgid "MMU needs user attention."
 msgstr "MMU necesita atencion del usuario."
 
 # 
-#: ultralcd.cpp:1807
+#: ultralcd.cpp:1755
 msgid "MMU power fails"
 msgstr "Fallo de energia en MMU"
 
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Modo   [Silencio]"
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Silencio"
 
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Modo[fuerza auto]"
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Fuerza auto"
 
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Modo [rend.pleno]"
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Rend.pleno"
 
 # 
-#: ultralcd.cpp:2203
+#: ultralcd.cpp:2186
 msgid "MMU2 connected"
 msgstr "MMU2 conectado"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:83
+#: messages.c:79
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
+#: ultralcd.cpp:5741
 msgid "Move axis"
 msgstr "Mover ejes"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4375
+#: ultralcd.cpp:4361
 msgid "Move X"
 msgstr "Mover X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4376
+#: ultralcd.cpp:4362
 msgid "Move Y"
 msgstr "Mover Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4377
+#: ultralcd.cpp:4363
 msgid "Move Z"
 msgstr "Mover Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5293
+#: Marlin_main.cpp:5541
 msgid "No move."
 msgstr "Sin movimiento"
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6878
+#: ultralcd.cpp:6911
 msgid "No SD card"
 msgstr "No hay tarjeta SD"
 
-# 
-#: ultralcd.cpp:3017
+# MSG_NA
+#: messages.c:107
 msgid "N/A"
 msgstr "N/A"
 
 # MSG_NO
-#: messages.c:62
+#: messages.c:58
 msgid "No"
 msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
+#: ultralcd.cpp:8265
 msgid "Not connected"
 msgstr "No hay conexion "
 
@@ -826,527 +881,572 @@ msgid "New firmware version available:"
 msgstr "Nuevo firmware disponible:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
+#: messages.c:75
 msgid "Not spinning"
 msgstr "Ventilador no gira"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
+#: ultralcd.cpp:4946
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Voy a calibrar la distancia entre la punta de la boquilla y la superficie de la base."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
+#: ultralcd.cpp:5071
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Ahora precalentare la boquilla para PLA."
 
 # MSG_NOZZLE
-#: messages.c:63
+#: messages.c:59
 msgid "Nozzle"
 msgstr "Boquilla"
 
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Se han encontrado ajustes anteriores. Se ajustara el PID, los pasos del extrusor, etc"
 
 # 
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:5062
 msgid "Now remove the test print from steel sheet."
 msgstr "Ahora retira la prueba de la lamina de acero."
 
 # 
-#: ultralcd.cpp:1706
+#: ultralcd.cpp:1654
 msgid "Nozzle FAN"
 msgstr "Vent. capa"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
+#: ultralcd.cpp:6875
 msgid "Pause print"
 msgstr "Pausar impresion"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
+#: ultralcd.cpp:1539
 msgid "PID cal.           "
 msgstr "Cal. PID "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
+#: ultralcd.cpp:1545
 msgid "PID cal. finished"
 msgstr "Cal. PID terminada"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
+#: ultralcd.cpp:5862
 msgid "PID calibration"
 msgstr "Calibracion PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
+#: ultralcd.cpp:896
 msgid "PINDA Heating"
 msgstr "Calentando PINDA"
 
-# MSG_PAPER c=20 r=8
-#: messages.c:64
+# MSG_PAPER c=20 r=10
+#: messages.c:60
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Colocar una hoja de papel sobre la superficie de impresion durante la calibracion de los primeros 4 puntos. Si la boquilla mueve el papel, apagar impresora inmediatamente."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
+#: ultralcd.cpp:5128
 msgid "Please clean heatbed and then press the knob."
 msgstr "Limpia la superficie de la base, por favor, y haz clic"
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
+#: messages.c:21
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Limpia boquilla para calibracion. Click cuando acabes."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
+#: ultralcd.cpp:8257
 msgid "Please check :"
 msgstr "Controla :"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
+#: messages.c:98
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Lee el manual y resuelve el problema. Despues, reinicia la impresora y continua con el Wizard"
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
+#: Marlin_main.cpp:3138
 msgid "Please open idler and remove filament manually."
 msgstr "Por favor abate el rodillo de empuje (idler) y retira el filamento manualmente."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
+#: messages.c:61
 msgid "Please place steel sheet on heatbed."
 msgstr "Por favor coloca la chapa de acero en la base calefactable."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
+#: messages.c:64
 msgid "Please press the knob to unload filament"
 msgstr "Por favor, pulsa el dial para descargar el filamento"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
+#: messages.c:66
 msgid "Please pull out filament immediately"
 msgstr "Por favor retire el filamento de inmediato"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
+#: mmu.cpp:1422
 msgid "Please remove filament and then press the knob."
 msgstr "Por favor quite el filamento y luego presione el dial."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
+#: messages.c:70
 msgid "Please remove steel sheet from heatbed."
 msgstr "Por favor retire la chapa de acero de la base calefactable."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
+#: Marlin_main.cpp:4583
 msgid "Please run XYZ calibration first."
 msgstr "Por favor realiza la calibracion XYZ primero."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
+#: mmu.cpp:1341
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Por favor actualice el firmware en tu MMU2. Esperando el reseteo."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:66
+#: messages.c:62
 msgid "Please wait"
 msgstr "Por Favor Espere"
 
 # 
-#: ultralcd.cpp:5070
+#: ultralcd.cpp:5061
 msgid "Please remove shipping helpers first."
 msgstr "Por favor retira los soportes de envio primero."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
+#: messages.c:63
 msgid "Preheat the nozzle!"
-msgstr "Precalienta extrusor!"
+msgstr "Precalienta extrusor"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6825
+#: ultralcd.cpp:6853
 msgid "Preheat"
 msgstr "Precalentar"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
+#: messages.c:100
 msgid "Preheating nozzle. Please wait."
 msgstr "Precalentando nozzle. Espera por favor."
 
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
 # 
 #: util.cpp:297
 msgid "Please upgrade."
 msgstr "Actualize por favor"
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
+#: Marlin_main.cpp:11526
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Pulsa el dial para precalentar la boquilla y continue."
 
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr "Pausa"
+
 # 
-#: ultralcd.cpp:1835
+#: ultralcd.cpp:1783
 msgid "Power failures"
 msgstr "Cortes de energia"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:69
+#: messages.c:65
 msgid "Print aborted"
 msgstr "Impresion cancelada"
 
-# 
-#: ultralcd.cpp:2452
+#  c=20
+#: ultralcd.cpp:2442
 msgid "Preheating to load"
-msgstr "Precalentar para cargar"
+msgstr "Precalent. cargar"
 
-# 
-#: ultralcd.cpp:2456
+#  c=20
+#: ultralcd.cpp:2446
 msgid "Preheating to unload"
-msgstr "Precalentar para descargar"
+msgstr "Precalent. descargar"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
+#: ultralcd.cpp:8689
 msgid "Print fan:"
 msgstr "Vent.fusor:"
 
 # MSG_CARD_MENU
-#: messages.c:21
+#: messages.c:20
 msgid "Print from SD"
 msgstr "Menu tarjeta SD"
 
 # 
-#: ultralcd.cpp:2301
+#: ultralcd.cpp:2289
 msgid "Press the knob"
 msgstr "Pulsa el dial"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
+#: ultralcd.cpp:1118
 msgid "Print paused"
 msgstr "Impresion en pausa"
 
 # 
-#: mmu.cpp:723
+#: mmu.cpp:726
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Presiona el dial para continuar con la temperatura de la boquilla."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
+#: messages.c:38
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Impresora no esta calibrada todavia. Por favor usa el manual capitulo Primeros pasos Calibracion flujo."
 
 # 
-#: ultralcd.cpp:1707
+#: ultralcd.cpp:1655
 msgid "Print FAN"
 msgstr "Vent. extr"
 
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Por favor, coloca el filamento en el extrusor, luego presiona el dial para cargarlo."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Por favor, coloca el filamento en el primer tubo de la MMU, luego pulsa el dial para cargarlo."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Por favor, cargar primero el filamento. "
+
 # MSG_PRUSA3D
-#: ultralcd.cpp:2189
+#: ultralcd.cpp:2155
 msgid "prusa3d.com"
 msgstr "prusa3d.es"
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
+#: ultralcd.cpp:3267
 msgid "Rear side [um]"
 msgstr "Trasera [um]"
 
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Primero descargue el filamento, luego repita esta accion."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
 msgid "Recovering print    "
-msgstr "Recuperando impresion"
+msgstr "Recuper. impresion  "
 
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Retire el filamento viejo y presione el dial para comenzar a cargar el nuevo filamento."
 
-# 
+#  c=20
 #: 
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
+#: ultralcd.cpp:5867
 msgid "Reset XYZ calibr."
 msgstr ""
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3268
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
+#: ultralcd.cpp:6861
 msgid "Resume print"
 msgstr "Reanudar impres."
 
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
 msgid "Resuming print"
-msgstr "Continuando impresion"
+msgstr "Continuan. impresion"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
+#: ultralcd.cpp:3265
 msgid "Right side[um]"
 msgstr "Derecha [um]"
 
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "Puerto RPi  [act]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "Puerto RPi  [ina]"
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr "Puerto RPi"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
+#: ultralcd.cpp:4864
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Ejecutar el Wizard borrara los valores de calibracion actuales y comenzara de nuevo. Continuar?"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "Tarj. SD [normal]"
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "Tarj. SD"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "Tarj. SD[FlshAir]"
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
 
 # 
-#: ultralcd.cpp:3012
+#: ultralcd.cpp:2994
 msgid "Right"
 msgstr "Derecha"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
+#: messages.c:35
 msgid "Searching bed calibration point"
 msgstr "Buscando punto de calibracion base"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5779
 msgid "Select language"
 msgstr "Cambiar el idioma"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
+#: ultralcd.cpp:7812
 msgid "Self test OK"
 msgstr ""
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
+#: ultralcd.cpp:7582
 msgid "Self test start  "
 msgstr "Iniciar Selftest"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5820
+#: ultralcd.cpp:5843
 msgid "Selftest         "
-msgstr "Selftest"
+msgstr ""
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
+#: ultralcd.cpp:8255
 msgid "Selftest error !"
 msgstr "Error Selftest !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:77
+#: messages.c:73
 msgid "Selftest failed  "
 msgstr "Fallo Selftest"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1550
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Se realizara el auto-test para calibrar con precision la vuelta a la posicion inicial sin sensores."
 
 # 
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5102
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selecciona la temperatura para precalentar la boquilla que se ajuste a tu material. "
 
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Seleccionar filamento PLA:"
-
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
+#: ultralcd.cpp:3286
 msgid "Set temperature:"
 msgstr "Establecer temp.:"
 
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
 # MSG_SETTINGS
-#: messages.c:86
+#: messages.c:82
 msgid "Settings"
 msgstr "Configuracion"
 
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
 msgid "Show end stops"
 msgstr "Mostrar endstops"
 
 # 
-#: ultralcd.cpp:4022
+#: ultralcd.cpp:4008
 msgid "Sensor state"
 msgstr "Estado del sensor"
 
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Algunos archivos no se ordenaran. Maximo 100 archivos por carpeta para ordenar. "
 
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Ordenar [ninguno]"
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Ordenar"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Ordenar   [fecha]"
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Ninguno"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Fecha"
 
 # 
-#: ultralcd.cpp:3055
+#: ultralcd.cpp:3037
 msgid "Severe skew:"
 msgstr "Incl.severa:"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Ordenar [alfabet]"
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Alfabet"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
+#: cardreader.cpp:745
 msgid "Sorting files"
 msgstr "Ordenando archivos"
 
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Sonido     [alto]"
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Alto"
 
 # 
-#: ultralcd.cpp:3054
+#: ultralcd.cpp:3036
 msgid "Slight skew:"
 msgstr "Liger.incl.:"
 
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Sonido[silenciad]"
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Sonido"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
 
 # 
-#: Marlin_main.cpp:4875
+#: Marlin_main.cpp:5101
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Problema encontrado, nivelacion Z forzosa ..."
 
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Sonido  [una vez]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Sonido[silencios]"
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Una vez"
 
 # MSG_SPEED
-#: ultralcd.cpp:7032
+#: ultralcd.cpp:7119
 msgid "Speed"
 msgstr "Velocidad"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
+#: messages.c:76
 msgid "Spinning"
 msgstr "Ventilador girando"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
+#: Marlin_main.cpp:4596
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Se necesita una temperatura ambiente ente 21 y 26C y un soporte rigido."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6945
+#: ultralcd.cpp:6978
 msgid "Statistics  "
 msgstr "Estadisticas "
 
 # MSG_STOP_PRINT
-#: messages.c:93
+#: messages.c:91
 msgid "Stop print"
 msgstr "Detener impresion"
 
 # MSG_STOPPED
-#: messages.c:94
+#: messages.c:92
 msgid "STOPPED. "
 msgstr "PARADA"
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6954
+#: ultralcd.cpp:6987
 msgid "Support"
 msgstr "Soporte"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
+#: ultralcd.cpp:8335
 msgid "Swapped"
 msgstr "Intercambiado"
 
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Cal. temp. "
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Selecciona filamento:"
 
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Cal. temp.   [on]"
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Cal. temp."
 
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Cal. temp.  [off]"
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Selecciona la temperatura adecuada a tu material."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5873
 msgid "Temp. calibration"
 msgstr "Calibracion temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
+#: ultralcd.cpp:3933
 msgid "Temperature calibration failed"
 msgstr "Fallo de la calibracion de temperatura"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
+#: messages.c:94
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Calibracion temperatura terminada. Haz clic para continuar."
 
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensor verificado, retire el filamento ahora."
+
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5717
+#: ultralcd.cpp:5739
 msgid "Temperature"
 msgstr "Temperatura"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2218
 msgid "Temperatures"
 msgstr "Temperaturas"
 
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Todavia es necesario hacer una calibracion Z. Por favor siga el manual, capitulo Primeros pasos, seccion Calibracion del flujo."
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2891
 msgid "Total filament"
 msgstr "Filamento total"
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2892
 msgid "Total print time"
 msgstr "Tiempo total"
 
 # MSG_TUNE
-#: ultralcd.cpp:6822
+#: ultralcd.cpp:6850
 msgid "Tune"
 msgstr "Ajustar"
 
@@ -1356,62 +1456,62 @@ msgid "Unload"
 msgstr "Descargar"
 
 # 
-#: ultralcd.cpp:1804
+#: ultralcd.cpp:1752
 msgid "Total failures"
 msgstr "Fallos totales"
 
 # 
-#: ultralcd.cpp:2308
+#: ultralcd.cpp:2296
 msgid "to load filament"
 msgstr "para cargar el filamento"
 
 # 
-#: ultralcd.cpp:2312
+#: ultralcd.cpp:2300
 msgid "to unload filament"
 msgstr "para descargar el filamento"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
+#: messages.c:95
 msgid "Unload filament"
 msgstr "Soltar filamento"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
+#: messages.c:96
 msgid "Unloading filament"
 msgstr "Soltando filamento"
 
 # 
-#: ultralcd.cpp:1757
+#: ultralcd.cpp:1705
 msgid "Total"
 msgstr ""
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
+#: ultralcd.cpp:6001
 msgid "Used during print"
 msgstr "Usado en impresion"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
+#: ultralcd.cpp:2221
 msgid "Voltages"
 msgstr "Voltajes"
 
 # 
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2194
 msgid "unknown"
 msgstr "desconocido"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5264
+#: Marlin_main.cpp:5511
 msgid "Wait for user..."
 msgstr "Esperando ordenes"
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
+#: ultralcd.cpp:3434
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Esperando enfriamiento de la base y extrusor."
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
+#: ultralcd.cpp:3395
 msgid "Waiting for PINDA probe cooling"
 msgstr "Esperando a que se enfrie la sonda PINDA"
 
@@ -1421,259 +1521,224 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Usa unload para retirar el filamento 1 si sobresale por fuera de la parte trasera del tubo MMU. Usa Expulsar si esta escondido dentro del tubo"
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1510
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Aviso: tanto el tipo de impresora como el tipo de la placa han cambiado."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1502
 msgid "Warning: motherboard type changed."
 msgstr "Cuidado: el tipo de placa ha cambiado."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1506
 msgid "Warning: printer type changed."
 msgstr "Cuidado: Ha cambiado el tipo de impresora."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
+#: Marlin_main.cpp:3128
 msgid "Was filament unload successful?"
 msgstr "?Se cargocon exito el filamento?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
+#: messages.c:81
 msgid "Wiring error"
 msgstr "Error de conexion"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
+#: ultralcd.cpp:5834
 msgid "Wizard"
 msgstr ""
 
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
 msgid "XYZ cal. details"
-msgstr "Detalles de calibracion XYZ"
+msgstr "Detalles cal. XYZ"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
+#: messages.c:18
 msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Calibracion XYZ fallada. Consulta el manual por favor."
 
 # MSG_YES
-#: messages.c:104
+#: messages.c:102
 msgid "Yes"
 msgstr "Si"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
+#: messages.c:101
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Siempre puedes acceder al asistente desde Calibracion -> Wizard"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
+#: ultralcd.cpp:3904
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Calibracion XYZ correcta. La inclinacion se corregira automaticamente."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
+#: ultralcd.cpp:3901
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Calibracion XYZ correcta. Los ejes X / Y estan ligeramente inclinados. Buen trabajo!"
 
-# 
-#: ultralcd.cpp:5197
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr "Expirar"
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
 msgid "X-correct:"
 msgstr "Corregir-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
+#: ultralcd.cpp:3898
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Calibracion XYZ ok. Ejes X/Y perpendiculares. Enhorabuena!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
+#: ultralcd.cpp:3882
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Calibrazion XYZ comprometida. Puntos frontales no alcanzables."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
+#: ultralcd.cpp:3885
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazion XYZ comprometida. Punto frontal derecho no alcanzable."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
+#: ultralcd.cpp:6261
 msgid "Load all"
 msgstr "Intr. todos fil."
 
 # 
-#: ultralcd.cpp:3879
+#: ultralcd.cpp:3864
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Calibracion XYZ fallada. Puntos de calibracion en la base no encontrados."
 
 # 
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3870
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Calibracion XYZ fallada. Puntos frontales no alcanzables."
 
 # 
-#: ultralcd.cpp:3888
+#: ultralcd.cpp:3873
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Calibracion XYZ fallad. Punto frontal derecho no alcanzable."
 
 # 
-#: ultralcd.cpp:3009
+#: ultralcd.cpp:2991
 msgid "Y distance from min"
 msgstr "Distancia en Y desde el min"
 
 # 
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "La impresora comenzara a imprimir una linea en zig-zag. Gira el dial hasta que la linea alcance la altura optima. Mira las fotos del manual (Capitulo de calibracion)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "La verificacion fallo, retire el filamento e intente nuevamente."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
 msgid "Y-correct:"
 msgstr "Corregir-Y:"
 
 # MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr "[apag]"
+#: messages.c:105
+msgid "Off"
+msgstr "Ina"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "Act"
 
 # 
-#: messages.c:57
+#: messages.c:53
 msgid "Back"
 msgstr "atras"
 
 # 
-#: ultralcd.cpp:5706
+#: ultralcd.cpp:5724
 msgid "Checks"
 msgstr "Comprobaciones"
 
 # 
-#: ultralcd.cpp:8080
+#: ultralcd.cpp:8349
 msgid "False triggering"
 msgstr "Falsa activacion"
 
 # 
-#: ultralcd.cpp:4027
+#: ultralcd.cpp:4013
 msgid "FINDA:"
 msgstr "FINDA:"
 
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware[ninguno]"
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware[estrict]"
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Estrict"
 
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware  [aviso]"
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Aviso"
 
 # 
-#: messages.c:87
+#: messages.c:83
 msgid "HW Setup"
 msgstr "Configuracion HW"
 
 # 
-#: ultralcd.cpp:4031
+#: ultralcd.cpp:4017
 msgid "IR:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Comp. imanes [N/A]"
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Comp. imanes [Off]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Comp. imanes  [On]"
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Comp. imanes"
 
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Malla        [3x3]"
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Malla        [7x7]"
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr "Malla"
 
 # 
-#: ultralcd.cpp:5744
+#: ultralcd.cpp:5763
 msgid "Mesh bed leveling"
 msgstr "Nivelacion Malla Base"
 
 # 
-#: Marlin_main.cpp:852
+#: Marlin_main.cpp:872
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "Firmware MK3S detectado en impresora MK3"
 
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "Modo MMU [Normal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "Modo MMU[Silenci]"
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "Modo MMU"
 
 # 
-#: ultralcd.cpp:4508
+#: ultralcd.cpp:4494
 msgid "Mode change in progress ..."
 msgstr "Cambio de modo progresando ..."
 
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Modelo  [ninguno]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Modelo [estricto]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Modelo    [aviso]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Diam. nozzl[0.25]"
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr "Modelo"
 
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Diam. nozzl[0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Diam. nozzl[0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Nozzle  [ninguno]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Nozzle [estricto]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Nozzle    [aviso]"
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Diam. nozzl"
 
 # 
 #: util.cpp:514
@@ -1706,19 +1771,19 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "Codigo G laminado para nuevo firmware. Por favor actualiza el firmware. Impresion cancelada."
 
 # 
-#: ultralcd.cpp:4023
+#: ultralcd.cpp:4009
 msgid "PINDA:"
 msgstr "PINDA:"
 
-# 
-#: ultralcd.cpp:2462
+#  c=20
+#: ultralcd.cpp:2452
 msgid "Preheating to cut"
-msgstr "Precalentando para laminar"
+msgstr "Precalent. laminar"
 
-# 
-#: ultralcd.cpp:2459
+#  c=20
+#: ultralcd.cpp:2449
 msgid "Preheating to eject"
-msgstr "Precalentar para expulsar"
+msgstr "Precalent. expulsar"
 
 # 
 #: util.cpp:394
@@ -1730,53 +1795,48 @@ msgstr "Diametro nozzle impresora difiere de cod.G. ?Continuar?"
 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 msgstr "Diametro nozzle Impresora difiere de cod.G. Comprueba los valores en ajustes. Impresion cancelada."
 
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr ""
+
 # 
-#: ultralcd.cpp:6786
+#: ultralcd.cpp:6814
 msgid "Rename"
 msgstr "Renombrar"
 
 # 
-#: ultralcd.cpp:6779
+#: ultralcd.cpp:6807
 msgid "Select"
 msgstr "Seleccionar"
 
 # 
-#: ultralcd.cpp:2229
+#: ultralcd.cpp:2212
 msgid "Sensor info"
 msgstr "Info sensor"
 
-# 
-#: messages.c:58
+# MSG_SHEET c=10
+#: messages.c:54
 msgid "Sheet"
 msgstr "Lamina"
 
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Sonido [asistido]"
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr "Asistido"
 
-# 
-#: ultralcd.cpp:5704
+#  c=18
+#: ultralcd.cpp:5722
 msgid "Steel sheets"
 msgstr "Lamina de acero"
 
-# 
-#: ultralcd.cpp:5199
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
 msgid "Z-correct:"
 msgstr "Corregir-Z:"
 
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Z-sensor nr.   [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Z-sensor nr.   [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Z-sensor nr.   [5]"
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Z-sensor nr."
 

+ 641 - 581
lang/po/new/fr.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: fr\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:22:44 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:22:44 PM\n"
+"POT-Creation-Date: Wed May 13 17:42:13 CEST 2020\n"
+"PO-Revision-Date: Wed May 13 17:42:13 CEST 2020\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,18 +20,28 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Ajust. du Z\x0aValeur enreg, contin\x0aou depart a zero?\x0a%cContinuer%cReset"
 
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 ou +ancien"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 ou +recent"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
+#: messages.c:36
 msgid " of 4"
 msgstr " de 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
+#: messages.c:56
 msgid " of 9"
 msgstr " de 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
+#: ultralcd.cpp:3064
 msgid "[0;0] point offset"
 msgstr "Offset point [0;0]"
 
@@ -43,56 +53,51 @@ msgstr "La detection de\x0acrash peut etre\x0aactive seulement en\x0amode Normal
 # MSG_CRASH_DET_STEALTH_FORCE_OFF c=20 r=4
 #: 
 msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
-msgstr "ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode feutre"
+msgstr "ATTENTION:\x0aDetection de crash\x0adesactivee en\x0amode furtif"
 
 # 
-#: ultralcd.cpp:2470
+#: ultralcd.cpp:2460
 msgid ">Cancel"
 msgstr ">Annuler"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
+#: ultralcd.cpp:3184
 msgid "Adjusting Z:"
 msgstr "Ajuster Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
+#: ultralcd.cpp:8677
 msgid "All correct      "
 msgstr "Tout est correct"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
+#: messages.c:99
 msgid "All is done. Happy printing!"
 msgstr "Tout est pret. Bonne impression!"
 
 # 
-#: ultralcd.cpp:1993
+#: ultralcd.cpp:1956
 msgid "Ambient"
 msgstr "Ambiant"
 
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
 msgid "and press the knob"
-msgstr "et pressez le bouton"
+msgstr "et appuyez sur le bouton"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
+#: ultralcd.cpp:3506
 msgid "Are left and right Z~carriages all up?"
 msgstr "Z~carriages gauche + droite tout en haut?"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr ""
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
 msgstr ""
 
 # MSG_AUTO_HOME
@@ -100,723 +105,773 @@ msgstr ""
 msgid "Auto home"
 msgstr "Mise a 0 des axes"
 
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
 msgid "AutoLoad filament"
 msgstr "Autocharge du fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
+#: ultralcd.cpp:4445
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Chargement auto du filament uniquement si le capteur de filament est active."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
+#: ultralcd.cpp:2804
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Chargement auto. du fil. active, appuyez sur le bouton et inserez le fil."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
+#: ultralcd.cpp:8325
 msgid "Axis length"
 msgstr "Longueur de l'axe"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
+#: ultralcd.cpp:8327
 msgid "Axis"
 msgstr "Axe"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
+#: ultralcd.cpp:8269
 msgid "Bed / Heater"
 msgstr "Lit / Chauffage"
 
 # MSG_BED_DONE
-#: messages.c:16
+#: messages.c:15
 msgid "Bed done"
 msgstr "Plateau termine"
 
 # MSG_BED_HEATING
-#: messages.c:17
+#: messages.c:16
 msgid "Bed Heating"
 msgstr "Chauffe du lit"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
+#: ultralcd.cpp:5861
 msgid "Bed level correct"
 msgstr "Corr. niveau plateau"
 
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test de courroie "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Echec bed leveling. Capt. non declenche. Debris sur buse? En attente d'un reset."
+msgstr "Capt. non declenche pendant que je nivele le plateau. Debris sur buse? En attente d'un reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Brill."
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Luminosite"
 
 # MSG_BED
-#: messages.c:15
+#: messages.c:14
 msgid "Bed"
 msgstr "Lit"
 
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
 msgid "Belt status"
 msgstr "Statut courroie"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
+#: messages.c:67
 msgid "Blackout occurred. Recover print?"
 msgstr "Coupure detectee. Reprendre impression?"
 
 # 
-#: ultralcd.cpp:8404
+#: ultralcd.cpp:8679
 msgid "Calibrating home"
 msgstr "Calib. mise a 0"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
+#: ultralcd.cpp:5850
 msgid "Calibrate XYZ"
 msgstr "Calibrer XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:48
+#: messages.c:44
 msgid "Calibrate Z"
 msgstr "Calibrer Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
+#: ultralcd.cpp:4637
 msgid "Calibrate"
 msgstr "Calibrer"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibration de XYZ. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
+#: messages.c:19
 msgid "Calibrating Z"
 msgstr "Calibration Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibration de Z. Tournez le bouton pour faire monter l'extrudeur dans l'axe Z jusqu'aux butees. Cliquez une fois fait."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
+#: ultralcd.cpp:865
 msgid "Calibration done"
 msgstr "Calibration terminee"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:61
+#: messages.c:57
 msgid "Calibration"
 msgstr ""
 
 # 
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:4815
 msgid "Cancel"
 msgstr "Annuler"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:8812
+#: ultralcd.cpp:9090
 msgid "Card removed"
 msgstr "Carte retiree"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2719
+#: ultralcd.cpp:2709
 msgid "Color not correct"
 msgstr "Couleur incorrecte"
 
 # MSG_COOLDOWN
-#: messages.c:23
+#: messages.c:22
 msgid "Cooldown"
 msgstr "Refroidissement"
 
 # 
-#: ultralcd.cpp:4584
+#: ultralcd.cpp:4570
 msgid "Copy selected language?"
-msgstr "Copier la langue selectionne?"
+msgstr "Copier la langue choisie?"
 
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Detect.crash [on]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Detect.crash[N/A]"
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Detect.crash"
 
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Detect.crash[off]"
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Choisissez un filament pour la Calibration de la Premiere Couche et selectionnez-le depuis le menu a l'ecran."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
+#: messages.c:23
 msgid "Crash detected."
 msgstr "Crash detecte."
 
 # 
-#: Marlin_main.cpp:596
+#: Marlin_main.cpp:607
 msgid "Crash detected. Resume print?"
 msgstr "Crash detecte. Poursuivre l'impression?"
 
 # 
-#: ultralcd.cpp:1837
+#: ultralcd.cpp:1785
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
+#: ultralcd.cpp:6002
 msgid "Current"
 msgstr "Actuel"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
+#: ultralcd.cpp:2163
 msgid "Date:"
 msgstr "Date:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
+#: ultralcd.cpp:5743
 msgid "Disable steppers"
 msgstr "Desactiver moteurs"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
+#: messages.c:13
 msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 msgstr "La distance entre la pointe de la buse et la surface du plateau n'a pas encore ete reglee. Suivez le manuel, chapitre Premiers pas, section Calibration de la premiere couche."
 
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
+#: ultralcd.cpp:5125
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
-msgstr "Voulez-vous repeter la derniere etape pour reajuster la distance entre la buse et le plateau chauffant?"
+msgstr "Voulez-vous refaire l'etape pour reajuster la hauteur entre la buse et le plateau chauffant?"
 
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
 msgid "E-correct:"
 msgstr "Correct-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
+#: messages.c:49
 msgid "Eject filament"
 msgstr "Remonter le fil."
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
+#: mmu.cpp:1416
 msgid "Ejecting filament"
 msgstr "Le fil. remonte"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
 msgid "Endstop not hit"
 msgstr "Butee non atteinte"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
+#: ultralcd.cpp:8287
 msgid "Endstop"
 msgstr "Butee"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
+#: ultralcd.cpp:8275
 msgid "Endstops"
 msgstr "Butees"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
+#: ultralcd.cpp:6998
 msgid "Error - static memory has been overwritten"
 msgstr "Erreur - la memoire statique a ete ecrasee"
 
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Coupe filament"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Coupeur"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Je coupe filament"
+
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
+#: ultralcd.cpp:4458
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "ERREUR: Le capteur de filament ne repond pas, verifiez le branchement."
 
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr ""
+
 # MSG_ERROR
-#: messages.c:28
+#: messages.c:25
 msgid "ERROR:"
 msgstr "ERREUR:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
+#: ultralcd.cpp:8686
 msgid "Extruder fan:"
 msgstr "Ventilo extrudeur:"
 
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
 msgid "Extruder info"
 msgstr "Infos extrudeur"
 
 # MSG_MOVE_E
-#: messages.c:29
+#: messages.c:26
 msgid "Extruder"
 msgstr "Extrudeur"
 
 # 
-#: ultralcd.cpp:6952
+#: ultralcd.cpp:6985
 msgid "Fail stats MMU"
 msgstr "Stat. d'echec MMU"
 
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "Autochargeur [on]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "Autochargeur[N/A]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "Autochargeur[off]"
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "F. autocharg."
 
 # 
-#: ultralcd.cpp:6949
+#: ultralcd.cpp:6982
 msgid "Fail stats"
 msgstr "Stat. d'echec"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:31
+#: messages.c:28
 msgid "Fan speed"
 msgstr "Vitesse vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:78
+#: messages.c:74
 msgid "Fan test"
 msgstr "Test du ventilateur"
 
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Verif vent.  [on]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Verif vent. [off]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Capteur Fil. [on]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Capteur Fil.[N/A]"
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Verif vent."
 
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Capteur Fil.[off]"
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Capteur Fil."
 
-# 
-#: ultralcd.cpp:1836
+#  c=14
+#: ultralcd.cpp:1784
 msgid "Filam. runouts"
-msgstr "Fins de filament"
+msgstr "Fins filament"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
+#: messages.c:29
 msgid "Filament extruding & with correct color?"
 msgstr "Filament extrude et avec bonne couleur?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
+#: ultralcd.cpp:2705
 msgid "Filament not loaded"
 msgstr "Filament non charge"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
+#: messages.c:80
 msgid "Filament sensor"
 msgstr "Capteur de filament"
 
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
 msgid "Filament used"
 msgstr "Filament utilise"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
+#: ultralcd.cpp:2870
 msgid "Print time"
 msgstr "Temps d'impression"
 
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr ""
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 ou +recent"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
 msgid "File incomplete. Continue anyway?"
 msgstr "Fichier incomplet. Continuer qd meme?"
 
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
 msgid "Finishing movements"
 msgstr "Mouvement final"
 
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
 msgid "First layer cal."
 msgstr "Cal. 1ere couche"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:5046
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "D'abord, je vais lancer le Auto-test pour verifier les problemes d'assemblage les plus communs."
 
 # 
-#: mmu.cpp:724
+#: mmu.cpp:727
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Corrigez le probleme et appuyez sur le bouton sur la MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7038
+#: ultralcd.cpp:7125
 msgid "Flow"
 msgstr "Flux"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
+#: ultralcd.cpp:2156
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
+#: messages.c:71
 msgid "Front print fan?"
 msgstr "Ventilo impr avant?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
+#: ultralcd.cpp:3266
 msgid "Front side[um]"
 msgstr "Avant [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
+#: ultralcd.cpp:8333
 msgid "Front/left fans"
 msgstr "Ventilos avt/gauche"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
+#: ultralcd.cpp:8263
 msgid "Heater/Thermistor"
 msgstr "Chauffage/Thermistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
+#: Marlin_main.cpp:9440
 msgid "Heating disabled by safety timer."
 msgstr "Chauffage desactivee par le compteur de securite."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:47
+#: messages.c:43
 msgid "Heating done."
 msgstr "Chauffe terminee."
 
 # MSG_HEATING
-#: messages.c:46
+#: messages.c:42
 msgid "Heating"
 msgstr "Chauffe"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
+#: ultralcd.cpp:5025
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Bonjour, je suis votre imprimante Original Prusa i3. Voulez-vous que je vous guide a travers le processus d'installation?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
+#: ultralcd.cpp:2157
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:37
+#: messages.c:34
 msgid "Change filament"
 msgstr "Changer filament"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
+#: ultralcd.cpp:2620
 msgid "Change success!"
 msgstr "Changement reussi!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
+#: ultralcd.cpp:2697
 msgid "Changed correctly?"
 msgstr "Change correctement?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
+#: messages.c:77
 msgid "Checking bed     "
-msgstr "Verification du lit"
+msgstr "Verif. plateau chauf"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
+#: ultralcd.cpp:8668
 msgid "Checking endstops"
 msgstr "Verification butees"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
+#: ultralcd.cpp:8674
 msgid "Checking hotend  "
 msgstr "Verif. du hotend"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
+#: messages.c:78
 msgid "Checking sensors "
 msgstr "Verif. des capteurs"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
+#: ultralcd.cpp:7482
 msgid "Checking X axis  "
 msgstr "Verification axe X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
+#: ultralcd.cpp:7491
 msgid "Checking Y axis  "
 msgstr "Verification axe Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
+#: ultralcd.cpp:8671
 msgid "Checking Z axis  "
 msgstr "Verification axe Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
+#: messages.c:45
 msgid "Choose extruder:"
 msgstr "Choisir extrudeur:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
+#: messages.c:46
 msgid "Choose filament:"
 msgstr "Choix du filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:30
+#: messages.c:27
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
+#: ultralcd.cpp:5055
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Je vais maintenant lancer la calibration XYZ. Cela prendra 12 min environ."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
+#: ultralcd.cpp:5063
 msgid "I will run z calibration now."
 msgstr "Je vais maintenant lancer la calibration Z."
 
 # MSG_WATCH
-#: messages.c:99
+#: messages.c:97
 msgid "Info screen"
 msgstr "Ecran d'info"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
+#: ultralcd.cpp:2605
 msgid "Insert filament"
 msgstr "Inserez le filament"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
+#: ultralcd.cpp:4835
 msgid "Is filament loaded?"
 msgstr "Fil. est-il charge?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
+#: messages.c:90
 msgid "Is steel sheet on heatbed?"
-msgstr "Plaque d'impression sur le lit chauffant?"
+msgstr "Est la plaque sur le plat. chauffant?"
 
 # 
-#: ultralcd.cpp:1779
+#: ultralcd.cpp:1727
 msgid "Last print failures"
 msgstr "Echecs derniere imp."
 
 # 
-#: ultralcd.cpp:1756
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Si vous avez d'autres feuilles d'acier,  calibrez leurs pre-reglages dans Reglages - Config HW - Plaque en acier."
+
+# 
+#: ultralcd.cpp:1704
 msgid "Last print"
 msgstr "Derniere impres."
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
+#: messages.c:72
 msgid "Left hotend fan?"
-msgstr "Ventilo tete gauche?"
+msgstr "Ventilo gauche?"
 
 # 
-#: ultralcd.cpp:3011
+#: ultralcd.cpp:2993
 msgid "Left"
 msgstr "Gauche"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
+#: ultralcd.cpp:3264
 msgid "Left side [um]"
 msgstr "Gauche [um]"
 
 # 
-#: ultralcd.cpp:5747
+#: ultralcd.cpp:5766
 msgid "Lin. correction"
 msgstr "Correction lin."
 
 # MSG_BABYSTEP_Z
-#: messages.c:13
+#: messages.c:12
 msgid "Live adjust Z"
 msgstr "Ajuster Z en dir."
 
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Veuillez inserer le filament ( ne le chargez pas) dans l'extrudeur, puis appuyez sur le bouton."
+
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:51
+#: messages.c:47
 msgid "Load filament"
 msgstr "Charger filament"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2645
 msgid "Loading color"
 msgstr "Charg. de la couleur"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:52
+#: messages.c:48
 msgid "Loading filament"
 msgstr "Chargement du fil."
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
+#: ultralcd.cpp:8317
 msgid "Loose pulley"
 msgstr "Poulie lache"
 
 # 
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6944
 msgid "Load to nozzle"
 msgstr "Charger la buse"
 
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
 msgid "M117 First layer cal."
 msgstr "M117 Cal. 1ere couche"
 
 # MSG_MAIN
-#: messages.c:56
+#: messages.c:52
 msgid "Main"
 msgstr "Menu principal"
 
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Niveau brill"
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr ""
+
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
+#: messages.c:55
 msgid "Measuring reference height of calibration point"
-msgstr "Mesure de la hauteur de reference du point de calibration"
+msgstr "Je mesure la hauteur de reference du point de calibrage"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
+#: ultralcd.cpp:5856
 msgid "Mesh Bed Leveling"
 msgstr ""
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
+#: mmu.cpp:765
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Reprise de la position ..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
+#: mmu.cpp:758
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Rechauffage de la buse..."
 
 # 
-#: ultralcd.cpp:3052
+#: ultralcd.cpp:3034
 msgid "Measured skew"
 msgstr "Deviat.mesuree"
 
 # 
-#: ultralcd.cpp:1780
+#: ultralcd.cpp:1728
 msgid "MMU fails"
 msgstr "Echecs MMU"
 
 # 
-#: mmu.cpp:1592
+#: mmu.cpp:1588
 msgid "MMU load failed     "
 msgstr "Echec chargement MMU"
 
 # 
-#: ultralcd.cpp:1781
+#: ultralcd.cpp:1729
 msgid "MMU load fails"
 msgstr "Echecs charg. MMU"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
+#: mmu.cpp:776
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Reprise ..."
 
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
 msgstr ""
 
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Mode     [feutre]"
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Firmware MK3 detecte sur imprimante MK3S"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr ""
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Furtif"
 
 # 
-#: mmu.cpp:719
+#: mmu.cpp:722
 msgid "MMU needs user attention."
 msgstr "Le MMU necessite l'attention de l'utilisateur."
 
 # 
-#: ultralcd.cpp:1807
+#: ultralcd.cpp:1755
 msgid "MMU power fails"
 msgstr "Echecs alim. MMU"
 
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Mode     [furtif]"
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Furtif"
 
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Mode [puiss.auto]"
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Puiss.auto"
 
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Mode[haute puiss]"
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Haute puiss"
 
 # 
-#: ultralcd.cpp:2203
+#: ultralcd.cpp:2186
 msgid "MMU2 connected"
 msgstr "MMU2 connecte"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:83
+#: messages.c:79
 msgid "Motor"
 msgstr "Moteur"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
+#: ultralcd.cpp:5741
 msgid "Move axis"
 msgstr "Deplacer l'axe"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4375
+#: ultralcd.cpp:4361
 msgid "Move X"
 msgstr "Deplacer X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4376
+#: ultralcd.cpp:4362
 msgid "Move Y"
 msgstr "Deplacer Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4377
+#: ultralcd.cpp:4363
 msgid "Move Z"
 msgstr "Deplacer Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5293
+#: Marlin_main.cpp:5541
 msgid "No move."
 msgstr "Pas de mouvement."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6878
+#: ultralcd.cpp:6911
 msgid "No SD card"
 msgstr "Pas de carte SD"
 
-# 
-#: ultralcd.cpp:3017
+# MSG_NA
+#: messages.c:107
 msgid "N/A"
 msgstr ""
 
 # MSG_NO
-#: messages.c:62
+#: messages.c:58
 msgid "No"
 msgstr "Non"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
+#: ultralcd.cpp:8265
 msgid "Not connected"
 msgstr "Non connecte"
 
@@ -826,527 +881,572 @@ msgid "New firmware version available:"
 msgstr "Nouvelle version de firmware disponible:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
+#: messages.c:75
 msgid "Not spinning"
 msgstr "Ne tourne pas"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
+#: ultralcd.cpp:4946
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Maintenant je vais calibrer la distance entre la pointe de la buse et la surface du plateau chauffant."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
+#: ultralcd.cpp:5071
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Maintenant je vais prechauffer la buse pour du PLA."
 
 # MSG_NOZZLE
-#: messages.c:63
+#: messages.c:59
 msgid "Nozzle"
 msgstr "Buse"
 
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Anciens reglages trouves. Le PID, les Esteps etc. par defaut seront regles"
 
 # 
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:5062
 msgid "Now remove the test print from steel sheet."
 msgstr "Retirez maintenant l'impression de test de la plaque en acier."
 
 # 
-#: ultralcd.cpp:1706
+#: ultralcd.cpp:1654
 msgid "Nozzle FAN"
 msgstr "Vent. buse"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
+#: ultralcd.cpp:6875
 msgid "Pause print"
 msgstr "Pause de l'impr."
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
+#: ultralcd.cpp:1539
 msgid "PID cal.           "
 msgstr "Calib. PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
+#: ultralcd.cpp:1545
 msgid "PID cal. finished"
 msgstr "Calib. PID terminee"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
+#: ultralcd.cpp:5862
 msgid "PID calibration"
 msgstr "Calibration PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
+#: ultralcd.cpp:896
 msgid "PINDA Heating"
 msgstr "Chauffe de la PINDA"
 
-# MSG_PAPER c=20 r=8
-#: messages.c:64
+# MSG_PAPER c=20 r=10
+#: messages.c:60
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Placez une feuille de papier sous la buse pendant la calibration des 4 premiers points. Si la buse accroche le papier, eteignez vite l'imprimante."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
+#: ultralcd.cpp:5128
 msgid "Please clean heatbed and then press the knob."
-msgstr "Nettoyez la plaque en acier et appuyez sur le bouton."
+msgstr "Nettoyez plateau chauffant en acier et appuyez sur le bouton."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
+#: messages.c:21
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Nettoyez la buse pour la calibration. Cliquez une fois fait."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
+#: ultralcd.cpp:8257
 msgid "Please check :"
 msgstr "Verifiez:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
+#: messages.c:98
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Merci de consulter notre manuel et de corriger le probleme. Poursuivez alors l'assistant en redemarrant l'imprimante."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
+#: Marlin_main.cpp:3138
 msgid "Please open idler and remove filament manually."
 msgstr "Ouvrez l'idler et retirez le filament manuellement."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
+#: messages.c:61
 msgid "Please place steel sheet on heatbed."
 msgstr "Placez la plaque en acier sur le plateau chauffant."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
+#: messages.c:64
 msgid "Please press the knob to unload filament"
 msgstr "Appuyez sur le bouton pour decharger le filament"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
+#: messages.c:66
 msgid "Please pull out filament immediately"
 msgstr "Retirez immediatement le filament"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
+#: mmu.cpp:1422
 msgid "Please remove filament and then press the knob."
 msgstr "Veuillez retirer le filament puis appuyez sur le bouton."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
+#: messages.c:70
 msgid "Please remove steel sheet from heatbed."
 msgstr "Retirez la plaque en acier du plateau chauffant."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
+#: Marlin_main.cpp:4583
 msgid "Please run XYZ calibration first."
 msgstr "Veuillez d'abord lancer la calibration XYZ."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
+#: mmu.cpp:1341
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Veuillez mettre a jour le firmware de votre MMU2. En attente d'un reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:66
+#: messages.c:62
 msgid "Please wait"
 msgstr "Merci de patienter"
 
 # 
-#: ultralcd.cpp:5070
+#: ultralcd.cpp:5061
 msgid "Please remove shipping helpers first."
 msgstr "Retirez d'abord les protections de transport."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
+#: messages.c:63
 msgid "Preheat the nozzle!"
 msgstr "Prechauffez la buse!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6825
+#: ultralcd.cpp:6853
 msgid "Preheat"
 msgstr "Prechauffage"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
+#: messages.c:100
 msgid "Preheating nozzle. Please wait."
 msgstr "Prechauffage de la buse. Merci de patienter."
 
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
 # 
 #: util.cpp:297
 msgid "Please upgrade."
 msgstr "Mettez a jour le FW."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
+#: Marlin_main.cpp:11526
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Appuyez sur le bouton pour prechauffer la buse et continuer."
 
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr ""
+
 # 
-#: ultralcd.cpp:1835
+#: ultralcd.cpp:1783
 msgid "Power failures"
 msgstr "Coup.de courant"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:69
+#: messages.c:65
 msgid "Print aborted"
 msgstr "Impression annulee"
 
-#  c=20 r=1
-#: ultralcd.cpp:2452
+#  c=20
+#: ultralcd.cpp:2442
 msgid "Preheating to load"
 msgstr "Chauffe pour charger"
 
-#  c=20 r=1
-#: ultralcd.cpp:2456
+#  c=20
+#: ultralcd.cpp:2446
 msgid "Preheating to unload"
 msgstr "Chauf.pour decharger"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
+#: ultralcd.cpp:8689
 msgid "Print fan:"
 msgstr "Vent. impr:"
 
 # MSG_CARD_MENU
-#: messages.c:21
+#: messages.c:20
 msgid "Print from SD"
 msgstr "Impr. depuis la SD"
 
 # 
-#: ultralcd.cpp:2301
+#: ultralcd.cpp:2289
 msgid "Press the knob"
 msgstr "App. sur sur bouton"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
+#: ultralcd.cpp:1118
 msgid "Print paused"
 msgstr "Impression en pause"
 
 # 
-#: mmu.cpp:723
+#: mmu.cpp:726
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Appuyez sur le bouton pour rechauffer la buse."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
+#: messages.c:38
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "L'imprimante n'a pas encore ete calibree. Suivez le manuel, chapitre Premiers pas, section Processus de calibration."
 
 # 
-#: ultralcd.cpp:1707
+#: ultralcd.cpp:1655
 msgid "Print FAN"
 msgstr "Vent. impr"
 
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Veuillez inserer le filament dans l'extrudeur, puis appuyez sur le bouton pour le charger."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Veuillez inserer le filament dans le premier tube du MMU, puis appuyez sur le bouton pour le charger."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Veuillez d'abord charger un filament."
+
 # MSG_PRUSA3D
-#: ultralcd.cpp:2189
+#: ultralcd.cpp:2155
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
+#: ultralcd.cpp:3267
 msgid "Rear side [um]"
 msgstr "Arriere [um]"
 
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "SVP, dechargez le filament et reessayez."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
 msgid "Recovering print    "
-msgstr "Recup. impression"
+msgstr "Recup. impression   "
 
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Retirez l'ancien filament puis appuyez sur le bouton pour charger le nouveau."
 
-# 
+#  c=20
 #: 
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
+#: ultralcd.cpp:5867
 msgid "Reset XYZ calibr."
 msgstr "Reinit. calib. XYZ"
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3268
 msgid "Reset"
 msgstr "Reinitialiser"
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
+#: ultralcd.cpp:6861
 msgid "Resume print"
 msgstr "Reprendre impression"
 
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
 msgid "Resuming print"
 msgstr "Reprise de l'impr."
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
+#: ultralcd.cpp:3265
 msgid "Right side[um]"
 msgstr "Droite [um]"
 
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "Port RPi     [on]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "Port RPi    [off]"
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr "Port RPi"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
+#: ultralcd.cpp:4864
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Lancement de l'Assistant supprimera les resultats actuels de calibration et commencera du debut. Continuer?"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "Carte SD [normal]"
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "Carte SD"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "Carte SD[flshAir]"
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr "FlshAir"
 
 # 
-#: ultralcd.cpp:3012
+#: ultralcd.cpp:2994
 msgid "Right"
 msgstr "Droite"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
+#: messages.c:35
 msgid "Searching bed calibration point"
-msgstr "Recherche du point de calibration du lit"
+msgstr "Recherche du point de calibration du plateau chauffant"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5779
 msgid "Select language"
 msgstr "Choisir langue"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
+#: ultralcd.cpp:7812
 msgid "Self test OK"
 msgstr "Auto-test OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
+#: ultralcd.cpp:7582
 msgid "Self test start  "
 msgstr "Debut auto-test"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5820
+#: ultralcd.cpp:5843
 msgid "Selftest         "
 msgstr "Auto-test"
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
+#: ultralcd.cpp:8255
 msgid "Selftest error !"
 msgstr "Erreur auto-test!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:77
+#: messages.c:73
 msgid "Selftest failed  "
 msgstr "Echec de l'auto-test"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1550
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Le Selftest sera lance pour calibrer la remise a zero precise sans capteur"
 
 # 
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5102
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selectionnez la temperature de prechauffage de la buse qui correspond a votre materiau."
 
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Selectionnez le fil. PLA:"
-
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
+#: ultralcd.cpp:3286
 msgid "Set temperature:"
 msgstr "Regler temp.:"
 
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
 # MSG_SETTINGS
-#: messages.c:86
+#: messages.c:82
 msgid "Settings"
 msgstr "Reglages"
 
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
 msgid "Show end stops"
 msgstr "Afficher butees"
 
 # 
-#: ultralcd.cpp:4022
+#: ultralcd.cpp:4008
 msgid "Sensor state"
 msgstr "Etat capteur"
 
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Certains fichiers ne seront pas tries. Max 100 fichiers tries par dossier."
 
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Tri       [aucun]"
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Tri"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Tri       [heure]"
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Aucun"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Heure"
 
 # 
-#: ultralcd.cpp:3055
+#: ultralcd.cpp:3037
 msgid "Severe skew:"
 msgstr "Deviat.sev.:"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Tri    [alphabet]"
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr ""
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
+#: cardreader.cpp:745
 msgid "Sorting files"
 msgstr "Tri des fichiers"
 
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Son        [fort]"
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Fort"
 
 # 
-#: ultralcd.cpp:3054
+#: ultralcd.cpp:3036
 msgid "Slight skew:"
 msgstr "Deviat.leg.:"
 
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Son        [muet]"
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Son"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
 
 # 
-#: Marlin_main.cpp:4875
+#: Marlin_main.cpp:5101
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Probleme rencontre, cliquez sur le bouton pour niveller l'axe Z..."
 
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Son    [une fois]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Son      [feutre]"
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Une fois"
 
 # MSG_SPEED
-#: ultralcd.cpp:7032
+#: ultralcd.cpp:7119
 msgid "Speed"
 msgstr "Vitesse"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
+#: messages.c:76
 msgid "Spinning"
 msgstr "Tourne"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
+#: Marlin_main.cpp:4596
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Une temperature ambiante stable de 21-26C et un support stable sont requis."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6945
+#: ultralcd.cpp:6978
 msgid "Statistics  "
 msgstr "Statistiques"
 
 # MSG_STOP_PRINT
-#: messages.c:93
+#: messages.c:91
 msgid "Stop print"
 msgstr "Arreter impression"
 
 # MSG_STOPPED
-#: messages.c:94
+#: messages.c:92
 msgid "STOPPED. "
 msgstr "ARRETE."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6954
+#: ultralcd.cpp:6987
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
+#: ultralcd.cpp:8335
 msgid "Swapped"
 msgstr "Echange"
 
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Calib. Temp."
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Selectionnez le filament:"
 
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Calib. Temp. [on]"
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Calib. Temp."
 
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Calib. Temp.[off]"
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Selectionnez la temperature qui correspond a votre materiau."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5873
 msgid "Temp. calibration"
 msgstr "Calibration temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
+#: ultralcd.cpp:3933
 msgid "Temperature calibration failed"
 msgstr "Echec de la calibration en temperature"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
+#: messages.c:94
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "La calibration en temperature est terminee et activee. La calibration en temperature peut etre desactivee dans le menu Reglages-> Cal. Temp."
 
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Capteur verifie, retirez le filament maintenant."
+
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5717
+#: ultralcd.cpp:5739
 msgid "Temperature"
 msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2218
 msgid "Temperatures"
 msgstr ""
 
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Il faut toujours effectuer la Calibration Z. Veuillez suivre le manuel, chapitre Premiers pas, section Processus de calibration."
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2891
 msgid "Total filament"
 msgstr "Filament total"
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2892
 msgid "Total print time"
 msgstr "Temps total impr."
 
 # MSG_TUNE
-#: ultralcd.cpp:6822
+#: ultralcd.cpp:6850
 msgid "Tune"
 msgstr "Regler"
 
@@ -1356,62 +1456,62 @@ msgid "Unload"
 msgstr "Decharger"
 
 # 
-#: ultralcd.cpp:1804
+#: ultralcd.cpp:1752
 msgid "Total failures"
 msgstr "Total des echecs"
 
 # 
-#: ultralcd.cpp:2308
+#: ultralcd.cpp:2296
 msgid "to load filament"
 msgstr "pour charger le fil."
 
 # 
-#: ultralcd.cpp:2312
+#: ultralcd.cpp:2300
 msgid "to unload filament"
 msgstr "pour decharger fil."
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
+#: messages.c:95
 msgid "Unload filament"
 msgstr "Decharger fil."
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
+#: messages.c:96
 msgid "Unloading filament"
 msgstr "Dechargement fil."
 
 # 
-#: ultralcd.cpp:1757
+#: ultralcd.cpp:1705
 msgid "Total"
-msgstr ""
+msgstr "Totale"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
+#: ultralcd.cpp:6001
 msgid "Used during print"
 msgstr "Utilise pdt impr."
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
+#: ultralcd.cpp:2221
 msgid "Voltages"
 msgstr "Tensions"
 
 # 
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2194
 msgid "unknown"
 msgstr "inconnu"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5264
+#: Marlin_main.cpp:5511
 msgid "Wait for user..."
 msgstr "Attente utilisateur..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
+#: ultralcd.cpp:3434
 msgid "Waiting for nozzle and bed cooling"
-msgstr "Attente du refroidissement des buse et plateau"
+msgstr "Attente du refroidissement des buse et plateau chauffant"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
+#: ultralcd.cpp:3395
 msgid "Waiting for PINDA probe cooling"
 msgstr "Attente du refroidissement de la sonde PINDA"
 
@@ -1421,269 +1521,234 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Utilisez Remonter le fil. pour retirer le filament 1 s'il depasse du tube arriere du MMU. Utilisez ejecter s'il est cache dans le tube."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1510
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Attention: Types d'imprimante et de carte mere modifies"
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1502
 msgid "Warning: motherboard type changed."
 msgstr "Attention: Type de carte mere modifie."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1506
 msgid "Warning: printer type changed."
 msgstr "Attention: Type d'imprimante modifie"
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
+#: Marlin_main.cpp:3128
 msgid "Was filament unload successful?"
 msgstr "Dechargement du filament reussi?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
+#: messages.c:81
 msgid "Wiring error"
 msgstr "Erreur de cablage"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
+#: ultralcd.cpp:5834
 msgid "Wizard"
 msgstr "Assistant"
 
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
 msgid "XYZ cal. details"
 msgstr "Details calib. XYZ"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
+#: messages.c:18
 msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Echec calibration XYZ. Consultez le manuel."
 
 # MSG_YES
-#: messages.c:104
+#: messages.c:102
 msgid "Yes"
 msgstr "Oui"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
+#: messages.c:101
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Vous pouvez toujours relancer l'Assistant dans Calibration > Assistant."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
+#: ultralcd.cpp:3904
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Calibration XYZ OK. L'ecart sera corrige automatiquement."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
+#: ultralcd.cpp:3901
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Calibration XYZ OK. Les axes X/Y sont legerement non perpendiculaires. Bon boulot!"
 
-# 
-#: ultralcd.cpp:5197
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
 msgid "X-correct:"
 msgstr "Correct-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
+#: ultralcd.cpp:3898
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Calibration XYZ OK. Les axes X/Y sont perpendiculaires. Felicitations!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
+#: ultralcd.cpp:3882
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Calibration XYZ compromise. Les points de calibration en avant ne sont pas atteignables."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
+#: ultralcd.cpp:3885
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibration XYZ compromise. Le point de calibration avant droit n'est pas atteignable."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
+#: ultralcd.cpp:6261
 msgid "Load all"
 msgstr "Charger un par un"
 
 # 
-#: ultralcd.cpp:3879
+#: ultralcd.cpp:3864
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Echec calibration XYZ. Le point de calibration du plateau n'a pas ete trouve."
 
 # 
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3870
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Echec calibration XYZ. Les points de calibration en avant ne sont pas atteignables."
 
 # 
-#: ultralcd.cpp:3888
+#: ultralcd.cpp:3873
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Echec calibration XYZ. Le point de calibration avant droit n'est pas atteignable."
 
 # 
-#: ultralcd.cpp:3009
+#: ultralcd.cpp:2991
 msgid "Y distance from min"
 msgstr "Distance Y du min"
 
 # 
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "L'imprimante commencera a  imprimer une ligne en zig-zag. Tournez le bouton jusqu'a atteindre la hauteur optimale. Consultez les photos dans le manuel (chapitre Calibration)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Verification en echec, retirez le filament et reessayez."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
 msgid "Y-correct:"
 msgstr "Correct-Y:"
 
 # MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [off]"
+#: messages.c:105
+msgid "Off"
+msgstr ""
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr ""
 
 # 
-#: messages.c:57
+#: messages.c:53
 msgid "Back"
 msgstr "Retour"
 
 # 
-#: ultralcd.cpp:5706
+#: ultralcd.cpp:5724
 msgid "Checks"
 msgstr "Verifications"
 
 # 
-#: ultralcd.cpp:8080
+#: ultralcd.cpp:8349
 msgid "False triggering"
 msgstr "Faux declenchement"
 
 # 
-#: ultralcd.cpp:4027
+#: ultralcd.cpp:4013
 msgid "FINDA:"
 msgstr "FINDA:"
 
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware [aucune]"
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware[stricte]"
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Stricte"
 
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware  [avert]"
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Avert"
 
 # 
-#: messages.c:87
+#: messages.c:83
 msgid "HW Setup"
 msgstr "Config HW"
 
 # 
-#: ultralcd.cpp:4031
+#: ultralcd.cpp:4017
 msgid "IR:"
 msgstr "IR:"
 
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Compens. aim.[N/A]"
-
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Compens. aim.[off]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Compens. aim. [on]"
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Compens. aim."
 
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
 msgstr ""
 
 # 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5744
+#: ultralcd.cpp:5763
 msgid "Mesh bed leveling"
 msgstr ""
 
 # 
-#: Marlin_main.cpp:852
+#: Marlin_main.cpp:872
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "Firmware MK3S detecte sur imprimante MK3"
 
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "Mode MMU [normal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "Mode MMU [feutre]"
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "Mode MMU"
 
 # 
-#: ultralcd.cpp:4508
+#: ultralcd.cpp:4494
 msgid "Mode change in progress ..."
 msgstr "Changement de mode en cours..."
 
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Modele   [aucune]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Modele  [stricte]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Modele    [avert]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Diam. buse [0.25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Diam. buse [0.40]"
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr "Modele"
 
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Diam. buse [0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Buse     [aucune]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Buse    [stricte]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Buse      [avert]"
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Diam. buse"
 
 # 
 #: util.cpp:514
 msgid "G-code sliced for a different level. Continue?"
-msgstr ""
+msgstr "Le G-code a ete prepare pour un niveau different. Continuer?"
 
 # 
 #: util.cpp:520
 msgid "G-code sliced for a different level. Please re-slice the model again. Print cancelled."
-msgstr ""
+msgstr "Le G-code a ete prepare pour un niveau different. Veuillez decouper le modele a nouveau. L'impression a ete annulee."
 
 # 
 #: util.cpp:431
@@ -1706,17 +1771,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "Le G-code a ete prepare pour une version plus recente du firmware. Veuillez mettre a jour le firmware. L'impression annulee."
 
 # 
-#: ultralcd.cpp:4023
+#: ultralcd.cpp:4009
 msgid "PINDA:"
 msgstr "PINDA:"
 
-#  c=20 r=1
-#: ultralcd.cpp:2462
+#  c=20
+#: ultralcd.cpp:2452
 msgid "Preheating to cut"
 msgstr "Chauffe pour couper"
 
-#  c=20 r=1
-#: ultralcd.cpp:2459
+#  c=20
+#: ultralcd.cpp:2449
 msgid "Preheating to eject"
 msgstr "Chauf. pour remonter"
 
@@ -1730,53 +1795,48 @@ msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le
 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 msgstr "Diametre de la buse dans les reglages ne correspond pas a celui dans le G-Code. Merci de verifier le parametre dans les reglages. Impression annulee."
 
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr ""
+
 # 
-#: ultralcd.cpp:6786
+#: ultralcd.cpp:6814
 msgid "Rename"
 msgstr "Renommer"
 
 # 
-#: ultralcd.cpp:6779
+#: ultralcd.cpp:6807
 msgid "Select"
 msgstr "Selectionner"
 
 # 
-#: ultralcd.cpp:2229
+#: ultralcd.cpp:2212
 msgid "Sensor info"
 msgstr "Info capteur"
 
-# 
-#: messages.c:58
+# MSG_SHEET c=10
+#: messages.c:54
 msgid "Sheet"
 msgstr "Plaque"
 
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Son      [assist]"
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5704
+#  c=18
+#: ultralcd.cpp:5722
 msgid "Steel sheets"
 msgstr "Plaques en acier"
 
-# 
-#: ultralcd.cpp:5199
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
 msgid "Z-correct:"
 msgstr "Correct-Z:"
 
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Mesurer x-fois [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Mesurer x-fois [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Mesurer x-fois [5]"
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Mesurer x-fois"
 

+ 658 - 598
lang/po/new/it.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: it\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:25:08 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:25:08 PM\n"
+"POT-Creation-Date: Fri May 15 18:16:31 CEST 2020\n"
+"PO-Revision-Date: Fri May 15 18:16:31 CEST 2020\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,18 +20,28 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Set valori\x0aComp. Z, continuare\x0ao iniziare da zero?\x0a%cContinua%cReset"
 
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 o inferiore"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 o superiore"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
+#: messages.c:36
 msgid " of 4"
 msgstr " su 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
+#: messages.c:56
 msgid " of 9"
 msgstr " su 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
+#: ultralcd.cpp:3064
 msgid "[0;0] point offset"
 msgstr "[0;0] punto offset"
 
@@ -46,53 +56,48 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "ATTENZIONE:\x0aRilev. impatto\x0adisattivato in\x0aModalita silenziosa"
 
 # 
-#: ultralcd.cpp:2470
+#: ultralcd.cpp:2460
 msgid ">Cancel"
 msgstr ">Annulla"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
+#: ultralcd.cpp:3184
 msgid "Adjusting Z:"
 msgstr "Compensaz. Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
+#: ultralcd.cpp:8677
 msgid "All correct      "
 msgstr "Nessun errore"
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
+#: messages.c:99
 msgid "All is done. Happy printing!"
 msgstr "Tutto fatto. Buona stampa!"
 
 # 
-#: ultralcd.cpp:1993
+#: ultralcd.cpp:1956
 msgid "Ambient"
 msgstr "Ambiente"
 
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
 msgid "and press the knob"
 msgstr "e cliccare manopola"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
+#: ultralcd.cpp:3506
 msgid "Are left and right Z~carriages all up?"
 msgstr "I carrelli Z sin/des sono altezza max?"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr ""
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
 msgstr ""
 
 # MSG_AUTO_HOME
@@ -100,723 +105,773 @@ msgstr ""
 msgid "Auto home"
 msgstr "Trova origine"
 
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
 msgid "AutoLoad filament"
 msgstr "Autocaric. filam."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
+#: ultralcd.cpp:4445
 msgid "Autoloading filament available only when filament sensor is turned on..."
 msgstr "Caricamento auto. filam. disp. solo con il sensore attivo..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
+#: ultralcd.cpp:2804
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Caricamento automatico attivo, premi la manopola e inserisci il filamento."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
+#: ultralcd.cpp:8325
 msgid "Axis length"
 msgstr "Lunghezza dell'asse"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
+#: ultralcd.cpp:8327
 msgid "Axis"
 msgstr "Assi"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
+#: ultralcd.cpp:8269
 msgid "Bed / Heater"
-msgstr "Letto/Riscald."
+msgstr "Piano/Riscald."
 
 # MSG_BED_DONE
-#: messages.c:16
+#: messages.c:15
 msgid "Bed done"
 msgstr "Piano fatto."
 
 # MSG_BED_HEATING
-#: messages.c:17
+#: messages.c:16
 msgid "Bed Heating"
-msgstr "Riscald. letto"
+msgstr "Riscald. piano"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
+#: ultralcd.cpp:5861
 msgid "Bed level correct"
-msgstr "Correz. liv.letto"
+msgstr "Correz. liv.piano"
 
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test cinghie     "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
-msgstr "Livellamento letto fallito.NoRispSensore.Residui su ugello? In attesa di reset."
+msgstr "Livellamento piano fallito. Sensore KO? Residui su ugello? In attesa di reset."
+
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Chiaro"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Luminosita'"
 
 # MSG_BED
-#: messages.c:15
+#: messages.c:14
 msgid "Bed"
-msgstr "Letto"
+msgstr "Piano"
 
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
 msgid "Belt status"
 msgstr "Stato cinghie"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
+#: messages.c:67
 msgid "Blackout occurred. Recover print?"
-msgstr "C'e stato un Blackout. Recuperare la stampa?"
+msgstr "Blackout rilevato. Recuperare la stampa?"
 
 # 
-#: ultralcd.cpp:8404
+#: ultralcd.cpp:8679
 msgid "Calibrating home"
 msgstr "Calibrazione Home"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
+#: ultralcd.cpp:5850
 msgid "Calibrate XYZ"
 msgstr "Calibra XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:48
+#: messages.c:44
 msgid "Calibrate Z"
 msgstr "Calibra Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
+#: ultralcd.cpp:4637
 msgid "Calibrate"
 msgstr "Calibra"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibrazione XYZ. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
+#: messages.c:19
 msgid "Calibrating Z"
 msgstr "Calibrando Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Calibrazione Z. Ruotare la manopola per alzare il carrello Z fino all'altezza massima. Click per terminare."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
+#: ultralcd.cpp:865
 msgid "Calibration done"
 msgstr "Calibrazione completa"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:61
+#: messages.c:57
 msgid "Calibration"
 msgstr "Calibrazione"
 
 # 
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:4815
 msgid "Cancel"
 msgstr "Annulla"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:8812
+#: ultralcd.cpp:9090
 msgid "Card removed"
 msgstr "SD rimossa"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2719
+#: ultralcd.cpp:2709
 msgid "Color not correct"
 msgstr "Colore non puro"
 
 # MSG_COOLDOWN
-#: messages.c:23
+#: messages.c:22
 msgid "Cooldown"
 msgstr "Raffredda"
 
 # 
-#: ultralcd.cpp:4584
+#: ultralcd.cpp:4570
 msgid "Copy selected language?"
 msgstr "Copiare la lingua selezionata?"
 
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Rileva.crash [on]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Rileva.crash[N/A]"
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Rileva.crash"
 
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Rileva.crash[off]"
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Scegli un filamento per la calibrazione del primo strato e selezionalo nel menu sullo schermo."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
+#: messages.c:23
 msgid "Crash detected."
 msgstr "Rilevato impatto."
 
 # 
-#: Marlin_main.cpp:596
+#: Marlin_main.cpp:607
 msgid "Crash detected. Resume print?"
 msgstr "Scontro rilevato. Riprendere la stampa?"
 
 # 
-#: ultralcd.cpp:1837
+#: ultralcd.cpp:1785
 msgid "Crash"
 msgstr "Impatto"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
+#: ultralcd.cpp:6002
 msgid "Current"
 msgstr "Attuale"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
+#: ultralcd.cpp:2163
 msgid "Date:"
 msgstr "Data:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
+#: ultralcd.cpp:5743
 msgid "Disable steppers"
 msgstr "Disabilita motori"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
+#: messages.c:13
 msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
-msgstr "Distanza tra la punta dell'ugello e la superficie del letto non ancora imposta. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo layer."
+msgstr "Distanza tra la punta dell'ugello e la superficie del piano non ancora impostata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Calibrazione primo strato."
+
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
 
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
+#: ultralcd.cpp:5125
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Desideri ripetere l'ultimo passaggio per migliorare la distanza fra ugello e piatto?"
 
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
 msgid "E-correct:"
 msgstr "Correzione-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
+#: messages.c:49
 msgid "Eject filament"
-msgstr "Espelli filamento "
+msgstr "Espelli filamento"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
+#: mmu.cpp:1416
 msgid "Ejecting filament"
-msgstr "Espellendo filamento "
+msgstr "Espellendo filamento"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
 msgid "Endstop not hit"
-msgstr "Finecorsa fuori portata"
+msgstr "Finec. fuori portata"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
+#: ultralcd.cpp:8287
 msgid "Endstop"
 msgstr "Finecorsa"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
+#: ultralcd.cpp:8275
 msgid "Endstops"
 msgstr "Finecorsa"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
+#: ultralcd.cpp:6998
 msgid "Error - static memory has been overwritten"
-msgstr "Errore - la memoria statica e stata sovrascritta"
+msgstr "Errore - la memoria statica e' stata sovrascritta"
+
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Taglia filamento"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Tagliatr."
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Tagliando filam."
 
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
+#: ultralcd.cpp:4458
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "ERRORE: il sensore filam. non risponde,Controllare conness."
 
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr "Scuro"
+
 # MSG_ERROR
-#: messages.c:28
+#: messages.c:25
 msgid "ERROR:"
 msgstr "ERRORE:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
+#: ultralcd.cpp:8686
 msgid "Extruder fan:"
 msgstr "Ventola estr:"
 
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
 msgid "Extruder info"
 msgstr "Info estrusore"
 
 # MSG_MOVE_E
-#: messages.c:29
+#: messages.c:26
 msgid "Extruder"
 msgstr "Estrusore"
 
 # 
-#: ultralcd.cpp:6952
+#: ultralcd.cpp:6985
 msgid "Fail stats MMU"
 msgstr "Stat.fall. MMU"
 
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "Autocar.fil. [on]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "Autocar.fil.[N/A]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "Autocar.fil.[off]"
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "Autocar.fil."
 
 # 
-#: ultralcd.cpp:6949
+#: ultralcd.cpp:6982
 msgid "Fail stats"
 msgstr "Stat. fallimenti"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:31
+#: messages.c:28
 msgid "Fan speed"
 msgstr "Velocita vent."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:78
+#: messages.c:74
 msgid "Fan test"
 msgstr "Test ventola"
 
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Control.vent [on]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Control.vent[off]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Sensore fil. [on]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Sensore fil.[N/A]"
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Control.vent"
 
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Sensore fil.[off]"
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Sensore fil."
 
-# 
-#: ultralcd.cpp:1836
+#  c=14
+#: ultralcd.cpp:1784
 msgid "Filam. runouts"
-msgstr "Filam. esauriti"
+msgstr "Fil. esauriti"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
+#: messages.c:29
 msgid "Filament extruding & with correct color?"
-msgstr "Filamento estruso & con il giusto colore?"
+msgstr "Filamento estruso e con colore corretto?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
+#: ultralcd.cpp:2705
 msgid "Filament not loaded"
 msgstr "Fil. non caricato"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
+#: messages.c:80
 msgid "Filament sensor"
 msgstr "Sensore filam."
 
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
 msgid "Filament used"
-msgstr "Filamento utilizzato"
+msgstr "Fil. utilizzato"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
+#: ultralcd.cpp:2870
 msgid "Print time"
 msgstr "Tempo di stampa"
 
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "Azione FS"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS 0.4 o superiore"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
 msgid "File incomplete. Continue anyway?"
 msgstr "File incompleto. Continuare comunque?"
 
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
 msgid "Finishing movements"
-msgstr "Finalizzando gli spostamenti"
+msgstr "Finaliz. spostamenti"
 
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
 msgid "First layer cal."
 msgstr "Cal. primo strato"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:5046
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Per primo avviero l'autotest per controllare gli errori di assemblaggio piu comuni."
 
 # 
-#: mmu.cpp:724
+#: mmu.cpp:727
 msgid "Fix the issue and then press button on MMU unit."
-msgstr "Risolvi il problema e quindi premi il bottone sull'unita MMU. "
+msgstr "Risolvere il problema e premere il bottone sull'unita MMU. "
 
 # MSG_FLOW
-#: ultralcd.cpp:7038
+#: ultralcd.cpp:7125
 msgid "Flow"
 msgstr "Flusso"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
+#: ultralcd.cpp:2156
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
+#: messages.c:71
 msgid "Front print fan?"
 msgstr "Ventola frontale?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
+#: ultralcd.cpp:3266
 msgid "Front side[um]"
 msgstr "Fronte [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
+#: ultralcd.cpp:8333
 msgid "Front/left fans"
 msgstr "Ventola frontale/sinistra"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
+#: ultralcd.cpp:8263
 msgid "Heater/Thermistor"
 msgstr "Riscald./Termist."
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
+#: Marlin_main.cpp:9440
 msgid "Heating disabled by safety timer."
 msgstr "Riscaldamento fermato dal timer di sicurezza."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:47
+#: messages.c:43
 msgid "Heating done."
 msgstr "Riscald. completo"
 
 # MSG_HEATING
-#: messages.c:46
+#: messages.c:42
 msgid "Heating"
 msgstr "Riscaldamento..."
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
+#: ultralcd.cpp:5025
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Ciao, sono la tua stampante Original Prusa i3. Gradiresti un aiuto nel processo di configurazione?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
+#: ultralcd.cpp:2157
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:37
+#: messages.c:34
 msgid "Change filament"
 msgstr "Cambia filamento"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
+#: ultralcd.cpp:2620
 msgid "Change success!"
 msgstr "Cambio riuscito!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
+#: ultralcd.cpp:2697
 msgid "Changed correctly?"
-msgstr "Cambiato correttamente?"
+msgstr "Cambio corretto?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
+#: messages.c:77
 msgid "Checking bed     "
 msgstr "Verifica piano"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
+#: ultralcd.cpp:8668
 msgid "Checking endstops"
 msgstr "Verifica finecorsa"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
+#: ultralcd.cpp:8674
 msgid "Checking hotend  "
 msgstr "Verifica ugello"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
+#: messages.c:78
 msgid "Checking sensors "
 msgstr "Controllo sensori"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
+#: ultralcd.cpp:7482
 msgid "Checking X axis  "
 msgstr "Verifica asse X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
+#: ultralcd.cpp:7491
 msgid "Checking Y axis  "
 msgstr "Verifica asse Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
+#: ultralcd.cpp:8671
 msgid "Checking Z axis  "
 msgstr "Verifica asse Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
+#: messages.c:45
 msgid "Choose extruder:"
 msgstr "Seleziona estrusore:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
+#: messages.c:46
 msgid "Choose filament:"
 msgstr "Scegliere filamento:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:30
+#: messages.c:27
 msgid "Filament"
 msgstr "Filamento"
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
+#: ultralcd.cpp:5055
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Adesso avviero una Calibrazione XYZ. Puo durare circa 12 min."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
+#: ultralcd.cpp:5063
 msgid "I will run z calibration now."
 msgstr "Adesso avviero la Calibrazione Z."
 
 # MSG_WATCH
-#: messages.c:99
+#: messages.c:97
 msgid "Info screen"
 msgstr "Schermata info"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
+#: ultralcd.cpp:2605
 msgid "Insert filament"
 msgstr "Inserire filamento"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
+#: ultralcd.cpp:4835
 msgid "Is filament loaded?"
-msgstr "Il filamento e stato caricato?"
+msgstr "Il filamento e' stato caricato?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
+#: messages.c:90
 msgid "Is steel sheet on heatbed?"
-msgstr "La piastra d'acciaio e sul piano riscaldato?"
+msgstr "Piastra d'acciaio su piano riscaldato?"
 
 # 
-#: ultralcd.cpp:1779
+#: ultralcd.cpp:1727
 msgid "Last print failures"
 msgstr "Fallimenti ultima stampa"
 
 # 
-#: ultralcd.cpp:1756
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Se hai piastre d'acciaio aggiuntive, calibra i preset in Impostazioni - Setup HW - Piastre in Acciaio."
+
+# 
+#: ultralcd.cpp:1704
 msgid "Last print"
 msgstr "Ultima stampa"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
+#: messages.c:72
 msgid "Left hotend fan?"
 msgstr "Vent SX hotend?"
 
 # 
-#: ultralcd.cpp:3011
+#: ultralcd.cpp:2993
 msgid "Left"
 msgstr "Sinistra"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
+#: ultralcd.cpp:3264
 msgid "Left side [um]"
 msgstr "Sinistra [um]"
 
 # 
-#: ultralcd.cpp:5747
+#: ultralcd.cpp:5766
 msgid "Lin. correction"
 msgstr "Correzione lineare"
 
 # MSG_BABYSTEP_Z
-#: messages.c:13
+#: messages.c:12
 msgid "Live adjust Z"
 msgstr "Compensazione Z"
 
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Inserire filamento (senza caricarlo) nell'estrusore e premere la manopola."
+
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:51
+#: messages.c:47
 msgid "Load filament"
 msgstr "Carica filamento"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2645
 msgid "Loading color"
 msgstr "Caricando colore"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:52
+#: messages.c:48
 msgid "Loading filament"
 msgstr "Caricando filamento"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
+#: ultralcd.cpp:8317
 msgid "Loose pulley"
 msgstr "Puleggia lenta"
 
 # 
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6944
 msgid "Load to nozzle"
 msgstr "Carica ugello"
 
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
 msgid "M117 First layer cal."
-msgstr "M117 Calibrazione primo layer."
+msgstr "M117 Calibr. primo strato"
 
 # MSG_MAIN
-#: messages.c:56
+#: messages.c:52
 msgid "Main"
 msgstr "Menu principale"
 
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Liv. Chiaro"
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr "Liv. Scuro"
+
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
+#: messages.c:55
 msgid "Measuring reference height of calibration point"
 msgstr "Misura altezza di rif. del punto di calib."
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
+#: ultralcd.cpp:5856
 msgid "Mesh Bed Leveling"
-msgstr "Livel. piatto"
+msgstr "Liv. grilia piano"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
+#: mmu.cpp:765
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. riprendendo la posizione... "
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
+#: mmu.cpp:758
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Ripristino temperatura... "
 
 # 
-#: ultralcd.cpp:3052
+#: ultralcd.cpp:3034
 msgid "Measured skew"
 msgstr "Deviazione mis"
 
 # 
-#: ultralcd.cpp:1780
+#: ultralcd.cpp:1728
 msgid "MMU fails"
 msgstr "Fallimenti MMU"
 
 # 
-#: mmu.cpp:1592
+#: mmu.cpp:1588
 msgid "MMU load failed     "
 msgstr "Caricamento MMU fallito"
 
 # 
-#: ultralcd.cpp:1781
+#: ultralcd.cpp:1729
 msgid "MMU load fails"
 msgstr "Caricamenti MMU falliti"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
+#: mmu.cpp:776
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Riprendendo... "
 
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Mod.    [normale]"
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Mod."
 
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Mod. [silenziosa]"
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Firmware MK3 rilevato su stampante MK3S"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr "Normale"
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Silenzioso"
 
 # 
-#: mmu.cpp:719
+#: mmu.cpp:722
 msgid "MMU needs user attention."
 msgstr "Il MMU richiede attenzione dall'utente."
 
 # 
-#: ultralcd.cpp:1807
+#: ultralcd.cpp:1755
 msgid "MMU power fails"
 msgstr "Manc. corr. MMU"
 
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Mod. [silenziosa]"
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Silenziosa"
 
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Mod.       [auto]"
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Auto"
 
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Mod.      [forte]"
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Forte"
 
 # 
-#: ultralcd.cpp:2203
+#: ultralcd.cpp:2186
 msgid "MMU2 connected"
 msgstr "MMU2 connessa"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:83
+#: messages.c:79
 msgid "Motor"
 msgstr "Motore"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
+#: ultralcd.cpp:5741
 msgid "Move axis"
 msgstr "Muovi asse"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4375
+#: ultralcd.cpp:4361
 msgid "Move X"
 msgstr "Sposta X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4376
+#: ultralcd.cpp:4362
 msgid "Move Y"
 msgstr "Sposta Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4377
+#: ultralcd.cpp:4363
 msgid "Move Z"
 msgstr "Sposta Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5293
+#: Marlin_main.cpp:5541
 msgid "No move."
 msgstr "Nessun movimento."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6878
+#: ultralcd.cpp:6911
 msgid "No SD card"
 msgstr "Nessuna SD"
 
-# 
-#: ultralcd.cpp:3017
+# MSG_NA
+#: messages.c:107
 msgid "N/A"
-msgstr ""
+msgstr "N/D"
 
 # MSG_NO
-#: messages.c:62
+#: messages.c:58
 msgid "No"
 msgstr ""
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
+#: ultralcd.cpp:8265
 msgid "Not connected"
 msgstr "Non connesso"
 
@@ -826,527 +881,572 @@ msgid "New firmware version available:"
 msgstr "Nuova versione firmware disponibile:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
+#: messages.c:75
 msgid "Not spinning"
 msgstr "Non gira"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
+#: ultralcd.cpp:4946
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Adesso calibro la distanza fra ugello e superfice del piatto."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
+#: ultralcd.cpp:5071
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Adesso preriscaldero l'ugello per PLA."
 
 # MSG_NOZZLE
-#: messages.c:63
+#: messages.c:59
 msgid "Nozzle"
 msgstr "Ugello"
 
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Sono state trovate impostazioni vecchie. Verranno impostati i valori predefiniti di PID, Esteps etc."
 
 # 
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:5062
 msgid "Now remove the test print from steel sheet."
 msgstr "Ora rimuovete la stampa di prova dalla piastra in acciaio."
 
 # 
-#: ultralcd.cpp:1706
+#: ultralcd.cpp:1654
 msgid "Nozzle FAN"
 msgstr "Ventola estrusore"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
+#: ultralcd.cpp:6875
 msgid "Pause print"
 msgstr "Metti in pausa"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
+#: ultralcd.cpp:1539
 msgid "PID cal.           "
 msgstr "Calibrazione PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
+#: ultralcd.cpp:1545
 msgid "PID cal. finished"
 msgstr "Calib. PID completa"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
+#: ultralcd.cpp:5862
 msgid "PID calibration"
 msgstr "Calibrazione PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
+#: ultralcd.cpp:896
 msgid "PINDA Heating"
 msgstr "Riscaldamento PINDA"
 
-# MSG_PAPER c=20 r=8
-#: messages.c:64
+# MSG_PAPER c=20 r=10
+#: messages.c:60
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Posizionare un foglio sotto l'ugello durante la calibrazione dei primi 4 punti. In caso l'ugello muova il foglio spegnere subito la stampante."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
+#: ultralcd.cpp:5128
 msgid "Please clean heatbed and then press the knob."
 msgstr "Per favore pulisci il piatto, poi premi la manopola."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
+#: messages.c:21
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Pulire l'ugello per la calibrazione, poi fare click."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
+#: ultralcd.cpp:8257
 msgid "Please check :"
 msgstr "Verifica:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
+#: messages.c:98
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Per favore consulta il nostro manuale per risolvere il problema. Poi riprendi il Wizard dopo aver riavviato la stampante."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
+#: Marlin_main.cpp:3138
 msgid "Please open idler and remove filament manually."
 msgstr "Aprire la guida filam. e rimuovere il filam. a mano"
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
+#: messages.c:61
 msgid "Please place steel sheet on heatbed."
 msgstr "Per favore posizionate la piastra d'acciaio sul piano riscaldato."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
+#: messages.c:64
 msgid "Please press the knob to unload filament"
 msgstr "Premete la manopola per scaricare il filamento "
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
+#: messages.c:66
 msgid "Please pull out filament immediately"
 msgstr "Estrarre il filamento immediatamente"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
+#: mmu.cpp:1422
 msgid "Please remove filament and then press the knob."
 msgstr "Rimuovi il filamento e quindi premi la manopola. "
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
+#: messages.c:70
 msgid "Please remove steel sheet from heatbed."
 msgstr "Rimuovete la piastra di acciaio dal piano riscaldato"
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
+#: Marlin_main.cpp:4583
 msgid "Please run XYZ calibration first."
 msgstr "Esegui la calibrazione XYZ prima. "
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
+#: mmu.cpp:1341
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Aggiorna il firmware sul tuo MMU2. In attesa di reset. "
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:66
+#: messages.c:62
 msgid "Please wait"
 msgstr "Attendere"
 
 # 
-#: ultralcd.cpp:5070
+#: ultralcd.cpp:5061
 msgid "Please remove shipping helpers first."
 msgstr "Per favore rimuovete i materiali da spedizione"
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
+#: messages.c:63
 msgid "Preheat the nozzle!"
 msgstr "Prerisc. ugello!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6825
+#: ultralcd.cpp:6853
 msgid "Preheat"
 msgstr "Preriscalda"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
+#: messages.c:100
 msgid "Preheating nozzle. Please wait."
 msgstr "Preriscaldando l'ugello. Attendere prego."
 
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
 # 
 #: util.cpp:297
 msgid "Please upgrade."
 msgstr "Prego aggiornare."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
+#: Marlin_main.cpp:11526
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Premete la manopola per preriscaldare l'ugello e continuare."
 
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr "Pausa"
+
 # 
-#: ultralcd.cpp:1835
+#: ultralcd.cpp:1783
 msgid "Power failures"
 msgstr "Mancanza corrente"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:69
+#: messages.c:65
 msgid "Print aborted"
 msgstr "Stampa interrotta"
 
-# 
-#: ultralcd.cpp:2452
+#  c=20
+#: ultralcd.cpp:2442
 msgid "Preheating to load"
-msgstr "Preriscaldamento per caricare"
+msgstr "Preriscald. carico"
 
-# 
-#: ultralcd.cpp:2456
+#  c=20
+#: ultralcd.cpp:2446
 msgid "Preheating to unload"
-msgstr "Preriscaldamento per scaricare"
+msgstr "Preriscald. scarico"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
+#: ultralcd.cpp:8689
 msgid "Print fan:"
 msgstr "Vent.stam:"
 
 # MSG_CARD_MENU
-#: messages.c:21
+#: messages.c:20
 msgid "Print from SD"
 msgstr "Stampa da SD"
 
 # 
-#: ultralcd.cpp:2301
+#: ultralcd.cpp:2289
 msgid "Press the knob"
 msgstr "Premere la manopola"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
+#: ultralcd.cpp:1118
 msgid "Print paused"
 msgstr "Stampa in pausa"
 
 # 
-#: mmu.cpp:723
+#: mmu.cpp:726
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Premete la manopola per recuperare la temperatura dell'ugello."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
+#: messages.c:38
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Stampante non ancora calibrata. Si prega di seguire il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione."
 
 # 
-#: ultralcd.cpp:1707
+#: ultralcd.cpp:1655
 msgid "Print FAN"
 msgstr "Ventola di stampa"
 
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Inserisci il filamento nell'estrusore, poi premi la manopola per caricarlo."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Per favore inserisci il filamento nel primo tubo del MMU, poi premi la manopola per caricarlo."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Per favore prima carica il filamento."
+
 # MSG_PRUSA3D
-#: ultralcd.cpp:2189
+#: ultralcd.cpp:2155
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
+#: ultralcd.cpp:3267
 msgid "Rear side [um]"
 msgstr "Retro [um]"
 
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Scaricare prima il filamento, poi ripetere l'operazione."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
 msgid "Recovering print    "
-msgstr "Recupero stampa"
+msgstr "Recupero stampa     "
 
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
 msgid "Remove old filament and press the knob to start loading new filament."
-msgstr "Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento. "
+msgstr "Rimuovi il filamento precedente e premi la manopola per caricare il nuovo filamento."
 
-# 
+#  c=20
 #: 
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
+#: ultralcd.cpp:5867
 msgid "Reset XYZ calibr."
 msgstr "Reset calibrazione XYZ."
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3268
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
+#: ultralcd.cpp:6861
 msgid "Resume print"
 msgstr "Riprendi stampa"
 
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
 msgid "Resuming print"
 msgstr "Riprendi stampa"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
+#: ultralcd.cpp:3265
 msgid "Right side[um]"
 msgstr "Destra [um]"
 
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "Porta RPi    [on]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "Porta RPi   [off]"
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr "Porta RPi"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
+#: ultralcd.cpp:4864
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Se avvi il Wizard perderai la calibrazione preesistente e dovrai ricominciare dall'inizio. Continuare?"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "Mem. SD [normale]"
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "Mem. SD"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "Mem. SD [flshAir]"
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
 
 # 
-#: ultralcd.cpp:3012
+#: ultralcd.cpp:2994
 msgid "Right"
 msgstr "Destra"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
+#: messages.c:35
 msgid "Searching bed calibration point"
 msgstr "Ricerca dei punti di calibrazione del piano"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5779
 msgid "Select language"
 msgstr "Seleziona lingua"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
+#: ultralcd.cpp:7812
 msgid "Self test OK"
 msgstr "Autotest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
+#: ultralcd.cpp:7582
 msgid "Self test start  "
 msgstr "Avvia autotest"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5820
+#: ultralcd.cpp:5843
 msgid "Selftest         "
-msgstr "Autotest"
+msgstr "Autotest         "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
+#: ultralcd.cpp:8255
 msgid "Selftest error !"
 msgstr "Errore Autotest !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:77
+#: messages.c:73
 msgid "Selftest failed  "
 msgstr "Autotest fallito"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1550
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Verra effettuato un self test per calibrare l'homing senza sensori"
 
 # 
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5102
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selezionate la temperatura per il preriscaldamento dell'ugello adatta al vostro materiale."
 
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Selezionate filamento PLA:"
-
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
+#: ultralcd.cpp:3286
 msgid "Set temperature:"
-msgstr "Imposta temperatura:"
+msgstr "Imposta temperatura"
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
 
 # MSG_SETTINGS
-#: messages.c:86
+#: messages.c:82
 msgid "Settings"
 msgstr "Impostazioni"
 
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
 msgid "Show end stops"
 msgstr "Stato finecorsa"
 
 # 
-#: ultralcd.cpp:4022
+#: ultralcd.cpp:4008
 msgid "Sensor state"
 msgstr "Stato sensore"
 
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Alcuni file non saranno ordinati. Il numero massimo di file in una cartella e 100 perche siano ordinati."
 
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Ordina  [nessuno]"
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Ordina"
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Nessuno"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Ordina    [cron.]"
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Cron."
 
 # 
-#: ultralcd.cpp:3055
+#: ultralcd.cpp:3037
 msgid "Severe skew:"
 msgstr "Devia.grave:"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Ordine [alfabeti]"
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Alfabeti"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
+#: cardreader.cpp:745
 msgid "Sorting files"
 msgstr "Ordinando i file"
 
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Suono     [forte]"
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Forte"
 
 # 
-#: ultralcd.cpp:3054
+#: ultralcd.cpp:3036
 msgid "Slight skew:"
 msgstr "Devia.lieve:"
 
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Suono      [mute]"
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Suono"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr "Esaurim"
 
 # 
-#: Marlin_main.cpp:4875
+#: Marlin_main.cpp:5101
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Sono stati rilevati problemi, avviato livellamento Z ..."
 
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Suono   [singolo]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Suono[silenzioso]"
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Singolo"
 
 # MSG_SPEED
-#: ultralcd.cpp:7032
+#: ultralcd.cpp:7119
 msgid "Speed"
 msgstr "Velocita"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
+#: messages.c:76
 msgid "Spinning"
 msgstr "Gira"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
+#: Marlin_main.cpp:4596
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Sono necessari una temperatura ambiente di 21-26C e una superficie rigida "
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6945
+#: ultralcd.cpp:6978
 msgid "Statistics  "
 msgstr "Statistiche"
 
 # MSG_STOP_PRINT
-#: messages.c:93
+#: messages.c:91
 msgid "Stop print"
 msgstr "Arresta stampa"
 
 # MSG_STOPPED
-#: messages.c:94
+#: messages.c:92
 msgid "STOPPED. "
 msgstr "ARRESTATO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6954
+#: ultralcd.cpp:6987
 msgid "Support"
 msgstr "Supporto"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
+#: ultralcd.cpp:8335
 msgid "Swapped"
 msgstr "Scambiato"
 
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Calib. temp. "
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Seleziona il filamento:"
 
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Calib. temp. [on]"
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Calib. temp."
 
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Calib. temp.[off]"
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Seleziona la temperatura appropriata per il tuo materiale."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5873
 msgid "Temp. calibration"
 msgstr "Calib. Temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
+#: ultralcd.cpp:3933
 msgid "Temperature calibration failed"
 msgstr "Calibrazione temperatura fallita"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
+#: messages.c:94
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Calibrazione temperatura completata e attiva. Puo essere disattivata dal menu Impostazioni ->Cal. Temp."
 
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensore verificato, rimuovere il filamento."
+
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5717
+#: ultralcd.cpp:5739
 msgid "Temperature"
 msgstr ""
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2218
 msgid "Temperatures"
 msgstr "Temperature"
 
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "E ancora necessario effettuare la calibrazione Z. Segui il manuale, capitolo Primi Passi, sezione Sequenza di Calibrazione. "
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2891
 msgid "Total filament"
 msgstr "Filamento totale"
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2892
 msgid "Total print time"
 msgstr "Tempo stampa totale"
 
 # MSG_TUNE
-#: ultralcd.cpp:6822
+#: ultralcd.cpp:6850
 msgid "Tune"
 msgstr "Regola"
 
@@ -1356,62 +1456,62 @@ msgid "Unload"
 msgstr "Scarica"
 
 # 
-#: ultralcd.cpp:1804
+#: ultralcd.cpp:1752
 msgid "Total failures"
 msgstr "Totale fallimenti"
 
 # 
-#: ultralcd.cpp:2308
+#: ultralcd.cpp:2296
 msgid "to load filament"
 msgstr "per caricare il filamento"
 
 # 
-#: ultralcd.cpp:2312
+#: ultralcd.cpp:2300
 msgid "to unload filament"
 msgstr "per scaricare il filamento"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
+#: messages.c:95
 msgid "Unload filament"
 msgstr "Scarica filamento"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
+#: messages.c:96
 msgid "Unloading filament"
 msgstr "Scaricando filamento"
 
 # 
-#: ultralcd.cpp:1757
+#: ultralcd.cpp:1705
 msgid "Total"
 msgstr "Totale"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
+#: ultralcd.cpp:6001
 msgid "Used during print"
 msgstr "Usati nella stampa"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
+#: ultralcd.cpp:2221
 msgid "Voltages"
 msgstr "Voltaggi"
 
 # 
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2194
 msgid "unknown"
 msgstr "sconosciuto"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5264
+#: Marlin_main.cpp:5511
 msgid "Wait for user..."
 msgstr "Attendendo utente..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
+#: ultralcd.cpp:3434
 msgid "Waiting for nozzle and bed cooling"
 msgstr "In attesa del raffreddamento dell'ugello e del piano"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
+#: ultralcd.cpp:3395
 msgid "Waiting for PINDA probe cooling"
 msgstr "In attesa del raffreddamento della sonda PINDA"
 
@@ -1421,259 +1521,224 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Usate lo scaricamento per rimuovere il filamento 1 se protrude dal retro del tubo posteriore del MMu. Utilizzate l'espulsione se e nascosto nel tubo."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1510
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Attenzione: tipo di stampante e di scheda madre cambiati."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1502
 msgid "Warning: motherboard type changed."
 msgstr "Avviso: tipo di scheda madre cambiato"
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1506
 msgid "Warning: printer type changed."
 msgstr "Avviso: tipo di stampante cambiato."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
+#: Marlin_main.cpp:3128
 msgid "Was filament unload successful?"
 msgstr "Filamento scaricato con successo?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
+#: messages.c:81
 msgid "Wiring error"
 msgstr "Errore cablaggio"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
+#: ultralcd.cpp:5834
 msgid "Wizard"
 msgstr ""
 
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
 msgid "XYZ cal. details"
 msgstr "XYZ Cal. dettagli"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
+#: messages.c:18
 msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Calibrazione XYZ fallita. Si prega di consultare il manuale."
 
 # MSG_YES
-#: messages.c:104
+#: messages.c:102
 msgid "Yes"
 msgstr "Si"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
+#: messages.c:101
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "E possibile riprendere il Wizard in qualsiasi momento attraverso Calibrazione -> Wizard."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
+#: ultralcd.cpp:3904
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Calibrazione XYZ corretta. La distorsione verra compensata automaticamente."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
+#: ultralcd.cpp:3901
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Calibrazion XYZ corretta. Assi X/Y leggermente storti. Ben fatto!"
 
-# 
-#: ultralcd.cpp:5197
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr ""
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
 msgid "X-correct:"
 msgstr "Correzione-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
+#: ultralcd.cpp:3898
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Calibrazione XYZ OK. Gli assi X/Y sono perpendicolari. Complimenti!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
+#: ultralcd.cpp:3882
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Calibrazione XYZ compromessa. Punti anteriori non raggiungibili."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
+#: ultralcd.cpp:3885
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Calibrazione XYZ compromessa. Punto anteriore destro non raggiungibile."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
+#: ultralcd.cpp:6261
 msgid "Load all"
 msgstr "Caricare tutti"
 
 # 
-#: ultralcd.cpp:3879
+#: ultralcd.cpp:3864
 msgid "XYZ calibration failed. Bed calibration point was not found."
-msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul letto non e' stato trovato."
+msgstr "Calibrazione XYZ fallita. Il punto di calibrazione sul piano non e' stato trovato."
 
 # 
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3870
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Calibrazione XYZ fallita. Punti anteriori non raggiungibili."
 
 # 
-#: ultralcd.cpp:3888
+#: ultralcd.cpp:3873
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Calibrazione XYZ fallita. Punto anteriore destro non raggiungibile."
 
 # 
-#: ultralcd.cpp:3009
+#: ultralcd.cpp:2991
 msgid "Y distance from min"
 msgstr "Distanza Y dal min"
 
 # 
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "La stampante iniziera a stampare una linea a zig-zag. Gira la manopola fino a che non hai raggiungo l'altezza ottimale. Verifica con le immagini nel manuale (capitolo sulla calibrazione):"
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Verifica fallita, rimuovere il filamento e riprovare."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
 msgid "Y-correct:"
 msgstr "Correzione-Y:"
 
 # MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
+#: messages.c:105
+msgid "Off"
+msgstr ""
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
 msgstr ""
 
 # 
-#: messages.c:57
+#: messages.c:53
 msgid "Back"
 msgstr "Indietro"
 
 # 
-#: ultralcd.cpp:5706
+#: ultralcd.cpp:5724
 msgid "Checks"
 msgstr "Controlli"
 
 # 
-#: ultralcd.cpp:8080
+#: ultralcd.cpp:8349
 msgid "False triggering"
 msgstr "Falso innesco"
 
 # 
-#: ultralcd.cpp:4027
+#: ultralcd.cpp:4013
 msgid "FINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware[nessuno]"
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [esatto]"
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Esatto"
 
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware [avviso]"
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Avviso"
 
 # 
-#: messages.c:87
+#: messages.c:83
 msgid "HW Setup"
-msgstr "Installazione HW"
+msgstr "Impostazioni HW"
 
 # 
-#: ultralcd.cpp:4031
+#: ultralcd.cpp:4017
 msgid "IR:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Comp. Magneti[N/A]"
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Comp. Magneti"
 
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Comp. Magneti[off]"
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr "Griglia"
 
 # 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Comp. Magneti [on]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Griglia      [3x3]"
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Griglia      [7x7]"
-
-# 
-#: ultralcd.cpp:5744
+#: ultralcd.cpp:5763
 msgid "Mesh bed leveling"
-msgstr "Mesh livel. letto"
+msgstr "Liv. griglia piano"
 
 # 
-#: Marlin_main.cpp:852
+#: Marlin_main.cpp:872
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "Firmware MK3S rilevato su stampante MK3"
 
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "Modalita MMU [Normale]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "Modalita MMU [Silenziosa]"
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "Mod. MMU"
 
 # 
-#: ultralcd.cpp:4508
+#: ultralcd.cpp:4494
 msgid "Mode change in progress ..."
 msgstr "Cambio modalita in corso ..."
 
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Modello [nessuno]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Modello  [esatto]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Modello  [avviso]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Diam.Ugello[0.25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Diam.Ugello[0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Diam.Ugello[0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Ugello  [nessuno]"
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr "Modello"
 
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Ugello   [esatto]"
-
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Ugello   [avviso]"
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Diam.Ugello"
 
 # 
 #: util.cpp:514
@@ -1706,19 +1771,19 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-code processato per un firmware piu recente. Per favore aggiorna il firmware. Stampa annullata."
 
 # 
-#: ultralcd.cpp:4023
+#: ultralcd.cpp:4009
 msgid "PINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2462
+#  c=20
+#: ultralcd.cpp:2452
 msgid "Preheating to cut"
-msgstr "Preriscaldamento per taglio"
+msgstr "Preriscalda. taglio"
 
-# 
-#: ultralcd.cpp:2459
+#  c=20
+#: ultralcd.cpp:2449
 msgid "Preheating to eject"
-msgstr "Preriscaldamento per espulsione"
+msgstr "Preriscalda. espuls."
 
 # 
 #: util.cpp:394
@@ -1730,53 +1795,48 @@ msgstr "Diametro ugello diverso da G-Code. Continuare?"
 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 msgstr "Diametro ugello diverso dal G-Code. Controlla il valore nelle impostazioni. Stampa annullata."
 
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr "atteso livello %s"
+
 # 
-#: ultralcd.cpp:6786
+#: ultralcd.cpp:6814
 msgid "Rename"
 msgstr "Rinomina"
 
 # 
-#: ultralcd.cpp:6779
+#: ultralcd.cpp:6807
 msgid "Select"
 msgstr "Seleziona"
 
 # 
-#: ultralcd.cpp:2229
+#: ultralcd.cpp:2212
 msgid "Sensor info"
 msgstr "Info Sensore"
 
-# 
-#: messages.c:58
+# MSG_SHEET c=10
+#: messages.c:54
 msgid "Sheet"
 msgstr "Piano"
 
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Suono   [assist.]"
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr "Assist."
 
-# 
-#: ultralcd.cpp:5704
+#  c=18
+#: ultralcd.cpp:5722
 msgid "Steel sheets"
 msgstr "Piani d'acciaio"
 
-# 
-#: ultralcd.cpp:5199
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
 msgid "Z-correct:"
 msgstr "Correzione-Z:"
 
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Z-probe nr.    [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Z-probe nr.    [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Z-probe nr.    [5]"
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Nr. Z-test"
 

+ 631 - 576
lang/po/new/nl.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: nl\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:24:02 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:24:02 PM\n"
+"POT-Creation-Date: Wed Sep 9 11:32:59 CEST 2020\n"
+"PO-Revision-Date: Wed Sep 9 11:32:59 CEST 2020\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,18 +20,28 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Z instell.\x0awaarde ingesteld,\x0averder of bij 0\x0abeginen?\x0a%cVerder%cReset"
 
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 of ouder"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 of nieuwer"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
+#: messages.c:36
 msgid " of 4"
 msgstr " van 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
+#: messages.c:56
 msgid " of 9"
 msgstr " van 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
+#: ultralcd.cpp:3062
 msgid "[0;0] point offset"
 msgstr "[0;0] punt offset"
 
@@ -46,777 +56,822 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "WARNING:\x0aCrashdetectie\x0auitgeschakeld in\x0aStealth stand"
 
 # 
-#: ultralcd.cpp:2470
+#: ultralcd.cpp:2451
 msgid ">Cancel"
 msgstr ">Annuleren"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
+#: ultralcd.cpp:3182
 msgid "Adjusting Z:"
 msgstr "Z is ingesteld:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
+#: ultralcd.cpp:8703
 msgid "All correct      "
 msgstr "Allemaal goed    "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
+#: messages.c:99
 msgid "All is done. Happy printing!"
 msgstr "Klaar. Happy printing!"
 
 # 
-#: ultralcd.cpp:1993
+#: ultralcd.cpp:1956
 msgid "Ambient"
-msgstr "EINSY  "
+msgstr "Kamertemp."
 
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2607
 msgid "and press the knob"
 msgstr "en druk op knop"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
+#: ultralcd.cpp:3504
 msgid "Are left and right Z~carriages all up?"
 msgstr "Zijn beide Z wagen heelemaal boven?"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin   [aan]"
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/V]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [uit]"
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
 msgid "Auto home"
 msgstr "Startpositie"
 
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6992
 msgid "AutoLoad filament"
-msgstr "Auto-Laden Filament"
+msgstr "Autoladen Filament"
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
+#: ultralcd.cpp:4441
 msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Autoloading filament alleen beschikbaar wanneer filamentsensor is ingeschakeld ..."
+msgstr "Auto. laden van fil. is enkel beschikbaar wanneer fil.sensor is ingeschakeld ..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
+#: ultralcd.cpp:2802
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Automatisch laden van flament is actief, druk de knop en laad filament..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
+#: ultralcd.cpp:8370
 msgid "Axis length"
 msgstr "Aslengte"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
+#: ultralcd.cpp:8372
 msgid "Axis"
 msgstr "As"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
+#: ultralcd.cpp:8314
 msgid "Bed / Heater"
 msgstr "Bed / Verwarming"
 
 # MSG_BED_DONE
-#: messages.c:16
+#: messages.c:15
 msgid "Bed done"
 msgstr "Bed klaar"
 
 # MSG_BED_HEATING
-#: messages.c:17
+#: messages.c:16
 msgid "Bed Heating"
 msgstr "Bed opwarmen"
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
+#: ultralcd.cpp:5888
 msgid "Bed level correct"
 msgstr "Bed niveau correct"
 
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5868
+msgid "Belt test        "
+msgstr "Riemtest       "
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr "Bed leveling mislukt. Sensor heeft niet geactiveerd. Puin op tuit? Wacht op reset."
 
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Helder"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Helderheid"
+
 # MSG_BED
-#: messages.c:15
+#: messages.c:14
 msgid "Bed"
 msgstr "Bed"
 
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
 msgid "Belt status"
 msgstr "Riem status"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
+#: messages.c:67
 msgid "Blackout occurred. Recover print?"
 msgstr "Stroomstoring. Print herstellen?"
 
 # 
-#: ultralcd.cpp:8404
+#: ultralcd.cpp:8705
 msgid "Calibrating home"
 msgstr "Kalibreren start"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
+#: ultralcd.cpp:5877
 msgid "Calibrate XYZ"
 msgstr "Kalibratie XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:48
+#: messages.c:44
 msgid "Calibrate Z"
 msgstr "Kalibratie Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
+#: ultralcd.cpp:4633
 msgid "Calibrate"
 msgstr "Kalibreren"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3467
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibreren van XYZ. Draai de knop om de Z-wagen omhoog te gaan tot het einde stoppers. Druk knop als klaar."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
+#: messages.c:19
 msgid "Calibrating Z"
 msgstr "Kalibrere Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3467
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibreren van Z. Draai de knop om de Z-wagen omhoog te gaan tot het einde stoppers. Druk knop als klaar."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
+#: ultralcd.cpp:865
 msgid "Calibration done"
 msgstr "Kalibratie klaar"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:61
+#: messages.c:57
 msgid "Calibration"
 msgstr "Kalibratie"
 
 # 
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:4811
 msgid "Cancel"
 msgstr "Annuleren"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:8812
+#: ultralcd.cpp:9141
 msgid "Card removed"
 msgstr "SD verwijderd"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2719
+#: ultralcd.cpp:2707
 msgid "Color not correct"
 msgstr "Kleur niet juist"
 
 # MSG_COOLDOWN
-#: messages.c:23
+#: messages.c:22
 msgid "Cooldown"
 msgstr "Afkoelen"
 
 # 
-#: ultralcd.cpp:4584
+#: ultralcd.cpp:4566
 msgid "Copy selected language?"
 msgstr "Geselecteerde taal kopieren?"
 
-# MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Crashdet.   [aan]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Crashdet.   [N/V]"
+# MSG_CRASHDETECT c=13
+#: messages.c:24
+msgid "Crash det."
+msgstr "Crashdet."
 
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Crashdet.   [uit]"
+# 
+#: ultralcd.cpp:4946
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Kies een filament voor de kalibratie van de eerste laag en selecteer deze in het schermmenu."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
+#: messages.c:23
 msgid "Crash detected."
 msgstr "Crash gedetecteerd."
 
 # 
-#: Marlin_main.cpp:596
+#: Marlin_main.cpp:605
 msgid "Crash detected. Resume print?"
 msgstr "Crash gedetecteerd. Print voorzetten?"
 
 # 
-#: ultralcd.cpp:1837
+#: ultralcd.cpp:1785
 msgid "Crash"
 msgstr ""
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
+#: ultralcd.cpp:6032
 msgid "Current"
 msgstr "Actueel"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
+#: ultralcd.cpp:2164
 msgid "Date:"
 msgstr "Datum:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
+#: ultralcd.cpp:5768
 msgid "Disable steppers"
 msgstr "Motoren uit"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
+#: messages.c:13
 msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 msgstr "Afstand tussen tip van de tuit en het print oppervlak is nog niet vastgesteld. Volg de handleiding, First steps, sectie First layer calibration."
 
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr ""
+
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
+#: ultralcd.cpp:5121
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Wilt u de laatste stap herhalen om de afstand tussen de tuit en de bed opnieuw in te stellen?"
 
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5190
 msgid "E-correct:"
 msgstr "E-correctie:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
+#: messages.c:49
 msgid "Eject filament"
 msgstr "Fil. uitwerpen"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
+#: mmu.cpp:1416
 msgid "Ejecting filament"
 msgstr "Werp filament uit"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8338
 msgid "Endstop not hit"
 msgstr "Endstop niet geraakt"
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
+#: ultralcd.cpp:8332
 msgid "Endstop"
 msgstr "Eindstop"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
+#: ultralcd.cpp:8320
 msgid "Endstops"
 msgstr "Eindstops"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
+#: ultralcd.cpp:7029
 msgid "Error - static memory has been overwritten"
 msgstr "Fout - het statische geheugen is overschreven"
 
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Fil. knippen"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Mes"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Knippe filament"
+
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
+#: ultralcd.cpp:4454
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "FOUT: Filamentsensor reageert niet, controleer de verbinding."
 
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr ""
+
 # MSG_ERROR
-#: messages.c:28
+#: messages.c:25
 msgid "ERROR:"
 msgstr "FOUT:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
+#: ultralcd.cpp:8712
 msgid "Extruder fan:"
 msgstr "Extruder fan:"
 
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2201
 msgid "Extruder info"
-msgstr "Extruder Info"
+msgstr ""
 
 # MSG_MOVE_E
-#: messages.c:29
+#: messages.c:26
 msgid "Extruder"
 msgstr "Extruder"
 
 # 
-#: ultralcd.cpp:6952
+#: ultralcd.cpp:7016
 msgid "Fail stats MMU"
 msgstr "MMU-Fouten"
 
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "F.autoladen [aan]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "F.autoladen [N/V]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "F.autoladen [uit]"
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "F. autoladen"
 
 # 
-#: ultralcd.cpp:6949
+#: ultralcd.cpp:7013
 msgid "Fail stats"
 msgstr "Foutstatistieken"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:31
+#: messages.c:28
 msgid "Fan speed"
 msgstr "Fan snelh."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:78
+#: messages.c:74
 msgid "Fan test"
 msgstr "Fan test"
 
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Fans check  [aan]"
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5776
+msgid "Fans check"
+msgstr "Fans check"
 
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Fans check  [uit]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Fil. sensor [aan]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Fil. sensor [N/V]"
-
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Fil. sensor [uit]"
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr ""
 
-# 
-#: ultralcd.cpp:1836
+#  c=14
+#: ultralcd.cpp:1784
 msgid "Filam. runouts"
 msgstr "Fil. fouten"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
+#: messages.c:29
 msgid "Filament extruding & with correct color?"
 msgstr "Filament extrudeert met de juiste kleur?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
+#: ultralcd.cpp:2703
 msgid "Filament not loaded"
 msgstr "Fil. niet geladen"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
+#: messages.c:80
 msgid "Filament sensor"
 msgstr "Filamentsensor"
 
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2867
 msgid "Filament used"
 msgstr "Gebruikte filament"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
+#: ultralcd.cpp:2868
 msgid "Print time"
 msgstr "Print tijd"
 
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "FS actie"
+
+#  c=18
+#: Marlin_main.cpp:9469
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 of nieuwer"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8840
 msgid "File incomplete. Continue anyway?"
 msgstr "Bestand onvolledig. Toch doorgaan?"
 
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
 msgid "Finishing movements"
 msgstr "Voortgang afwerken"
 
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
 msgid "First layer cal."
 msgstr "Eerste laag kal."
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:5042
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Ten eerste zullen we de zelftest uitvoeren om de meest voorkomende montageproblemen te controleren."
 
 # 
-#: mmu.cpp:724
+#: mmu.cpp:727
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Los het probleem op en druk vervolgens op de knop op de MMU-eenheid."
 
 # MSG_FLOW
-#: ultralcd.cpp:7038
+#: ultralcd.cpp:7156
 msgid "Flow"
 msgstr "Stromen"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
+#: ultralcd.cpp:2157
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
+#: messages.c:71
 msgid "Front print fan?"
 msgstr "Voorzijde fan?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
+#: ultralcd.cpp:3264
 msgid "Front side[um]"
 msgstr "Voorkant  [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
+#: ultralcd.cpp:8378
 msgid "Front/left fans"
 msgstr "Fans voor/links"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
+#: ultralcd.cpp:8308
 msgid "Heater/Thermistor"
 msgstr "Verwarmer/Therm."
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
+#: Marlin_main.cpp:9460
 msgid "Heating disabled by safety timer."
 msgstr "Verwarming uitgeschakeld door veiligheidstimer."
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:47
+#: messages.c:43
 msgid "Heating done."
 msgstr "Opwarmen klaar."
 
 # MSG_HEATING
-#: messages.c:46
+#: messages.c:42
 msgid "Heating"
 msgstr "Opwarmen"
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
+#: ultralcd.cpp:5021
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Hallo, ik ben uw Original Prusa i3 printer. Zullen we beginnen met het installatieproces?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
+#: ultralcd.cpp:2158
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:37
+#: messages.c:34
 msgid "Change filament"
 msgstr "Wissel filament"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
+#: ultralcd.cpp:2618
 msgid "Change success!"
 msgstr "Wissel geslaagd!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
+#: ultralcd.cpp:2695
 msgid "Changed correctly?"
 msgstr "Wissel ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
+#: messages.c:77
 msgid "Checking bed     "
 msgstr "Controleer bed   "
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
+#: ultralcd.cpp:8694
 msgid "Checking endstops"
 msgstr "Controleer endstops"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
+#: ultralcd.cpp:8700
 msgid "Checking hotend  "
 msgstr "Controleer hotend"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
+#: messages.c:78
 msgid "Checking sensors "
 msgstr "Controleer sensors"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
+#: ultralcd.cpp:7513
 msgid "Checking X axis  "
 msgstr "Controleer X as  "
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
+#: ultralcd.cpp:7522
 msgid "Checking Y axis  "
 msgstr "Controleer Y as  "
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
+#: ultralcd.cpp:8697
 msgid "Checking Z axis  "
 msgstr "Controleer Z as  "
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
+#: messages.c:45
 msgid "Choose extruder:"
 msgstr "Kies extruder:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
+#: messages.c:46
 msgid "Choose filament:"
 msgstr "Kies filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:30
+#: messages.c:27
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
+#: ultralcd.cpp:5051
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Begin nu met xyz-kalibratie. Het duurt ongeveer 12 min."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
+#: ultralcd.cpp:5059
 msgid "I will run z calibration now."
 msgstr "Begin nu met z-kalibratie."
 
 # MSG_WATCH
-#: messages.c:99
+#: messages.c:97
 msgid "Info screen"
 msgstr "Info scherm"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
+#: ultralcd.cpp:2603
 msgid "Insert filament"
 msgstr "Voer filament in"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
+#: ultralcd.cpp:4831
 msgid "Is filament loaded?"
 msgstr "Is filament geladen?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
+#: messages.c:90
 msgid "Is steel sheet on heatbed?"
 msgstr "Ligt de staalplaat op het bed?"
 
 # 
-#: ultralcd.cpp:1779
+#: ultralcd.cpp:1727
 msgid "Last print failures"
 msgstr "Laatste printfouten"
 
 # 
-#: ultralcd.cpp:1756
+#: ultralcd.cpp:5129
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Als u extra staalplaten hebt, kalibreert u hun voorinstellingen in Instellingen - HW Setup - Staalplaten."
+
+# 
+#: ultralcd.cpp:1704
 msgid "Last print"
 msgstr "Laatste print"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
+#: messages.c:72
 msgid "Left hotend fan?"
 msgstr "Linker hotend fan?"
 
 # 
-#: ultralcd.cpp:3011
+#: ultralcd.cpp:2991
 msgid "Left"
 msgstr "Links"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
+#: ultralcd.cpp:3262
 msgid "Left side [um]"
 msgstr "Linkerkant[um]"
 
 # 
-#: ultralcd.cpp:5747
+#: ultralcd.cpp:5791
 msgid "Lin. correction"
 msgstr "Lineaire correctie"
 
 # MSG_BABYSTEP_Z
-#: messages.c:13
+#: messages.c:12
 msgid "Live adjust Z"
 msgstr "Live Z aanpassen"
 
+#  c=20 r=6
+#: ultralcd.cpp:7558
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Steek a.u.b. filament (maar niet laden) in de extruder en druk op knop."
+
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:51
+#: messages.c:47
 msgid "Load filament"
 msgstr "Filament laden"
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2643
 msgid "Loading color"
 msgstr "Laden kleur"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:52
+#: messages.c:48
 msgid "Loading filament"
 msgstr "Laden filament"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
+#: ultralcd.cpp:8362
 msgid "Loose pulley"
 msgstr "Losse riemschijf"
 
 # 
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6975
 msgid "Load to nozzle"
 msgstr "Tot tuit laden"
 
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
 msgid "M117 First layer cal."
-msgstr "M117 eerste laag kal."
+msgstr "M117 Eerste laag kal."
 
 # MSG_MAIN
-#: messages.c:56
+#: messages.c:52
 msgid "Main"
 msgstr "Hoofdmenu"
 
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Helder waard"
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr "Dim waarde"
+
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
+#: messages.c:55
 msgid "Measuring reference height of calibration point"
 msgstr "Referentie hoogte van het kalibratiepunt meten"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
+#: ultralcd.cpp:5883
 msgid "Mesh Bed Leveling"
 msgstr "Mesh bed Leveling"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
+#: mmu.cpp:765
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Positie hervatten..."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
+#: mmu.cpp:758
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Temperatuur hervatten..."
 
 # 
-#: ultralcd.cpp:3052
+#: ultralcd.cpp:3032
 msgid "Measured skew"
 msgstr "Scheefheid"
 
 # 
-#: ultralcd.cpp:1780
+#: ultralcd.cpp:1728
 msgid "MMU fails"
 msgstr "MMU fout"
 
 # 
-#: mmu.cpp:1592
+#: mmu.cpp:1588
 msgid "MMU load failed     "
 msgstr "MMU laden mislukt   "
 
 # 
-#: ultralcd.cpp:1781
+#: ultralcd.cpp:1729
 msgid "MMU load fails"
 msgstr "MMU laadfout"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
+#: mmu.cpp:776
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Hervatten..."
 
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Stand   [Normaal]"
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Stand"
 
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Stand      [stil]"
+#  c=20 r=3
+#: Marlin_main.cpp:884
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "MK3-firmware bij MK3S-printer gedetecteerd"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr "Normaal"
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Stil"
 
 # 
-#: mmu.cpp:719
+#: mmu.cpp:722
 msgid "MMU needs user attention."
 msgstr "MMU heeft gebruikersaandacht nodig."
 
 # 
-#: ultralcd.cpp:1807
+#: ultralcd.cpp:1755
 msgid "MMU power fails"
 msgstr "MMU stroomstor."
 
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Stand   [Stealth]"
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr ""
 
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Mode[automatisch]"
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr ""
 
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Stand      [hoog]"
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Hoog verm."
 
 # 
-#: ultralcd.cpp:2203
+#: ultralcd.cpp:2176
 msgid "MMU2 connected"
 msgstr "MMU2 verbonden"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:83
+#: messages.c:79
 msgid "Motor"
 msgstr ""
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
+#: ultralcd.cpp:5766
 msgid "Move axis"
 msgstr "As verplaatsen"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4375
+#: ultralcd.cpp:4357
 msgid "Move X"
 msgstr "Verplaats X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4376
+#: ultralcd.cpp:4358
 msgid "Move Y"
 msgstr "Verplaats Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4377
+#: ultralcd.cpp:4359
 msgid "Move Z"
 msgstr "Verplaats Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5293
+#: Marlin_main.cpp:5550
 msgid "No move."
 msgstr "Geen beweging."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6878
+#: ultralcd.cpp:6942
 msgid "No SD card"
 msgstr "Geen SD kaart"
 
-# 
-#: ultralcd.cpp:3017
+# MSG_NA
+#: messages.c:107
 msgid "N/A"
 msgstr "N/V"
 
 # MSG_NO
-#: messages.c:62
+#: messages.c:58
 msgid "No"
 msgstr "Nee"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
+#: ultralcd.cpp:8310
 msgid "Not connected"
 msgstr "Niet verbonden"
 
@@ -826,527 +881,572 @@ msgid "New firmware version available:"
 msgstr "Nieuwe firmware versie beschikbaar:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
+#: messages.c:75
 msgid "Not spinning"
 msgstr "Beweegt niet"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
+#: ultralcd.cpp:4942
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Begin met kalibratie tussen de tuit en het bed."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
+#: ultralcd.cpp:5067
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Opwarmen van de tuit voor PLA voor."
 
 # MSG_NOZZLE
-#: messages.c:63
+#: messages.c:59
 msgid "Nozzle"
 msgstr "Tuit"
 
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1533
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Oude instellingen gevonden. Standaard PID, E-steps etc. instellingen worden geladen."
 
 # 
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:5058
 msgid "Now remove the test print from steel sheet."
 msgstr "Verwijder nu de testprint van staalplaat."
 
 # 
-#: ultralcd.cpp:1706
+#: ultralcd.cpp:1654
 msgid "Nozzle FAN"
 msgstr "Tuit fan"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
+#: ultralcd.cpp:6906
 msgid "Pause print"
 msgstr "Print pauzeren"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
+#: ultralcd.cpp:1539
 msgid "PID cal.           "
 msgstr "PID kal.           "
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
+#: ultralcd.cpp:1545
 msgid "PID cal. finished"
 msgstr "PID kalibratie klaar"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
+#: ultralcd.cpp:5889
 msgid "PID calibration"
 msgstr "PID kalibratie"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
+#: ultralcd.cpp:896
 msgid "PINDA Heating"
 msgstr "PINDA opwarmen"
 
-# MSG_PAPER c=20 r=8
-#: messages.c:64
+# MSG_PAPER c=20 r=10
+#: messages.c:60
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Leg een vel papier onder de tuit tijdens de kalibratie van de eerste 4 punten. Als de tuit het papier beweegt, de printer onmiddellijk uitschakelen."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
+#: ultralcd.cpp:5124
 msgid "Please clean heatbed and then press the knob."
 msgstr "Maak het bed schoon en druk op de knop."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
+#: messages.c:21
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Reinig de tuit voor de kalibratie. Druk op de knop wanneer gereed."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
+#: ultralcd.cpp:8302
 msgid "Please check :"
 msgstr "Controleer aub:"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
+#: messages.c:98
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Controleer aub ons handboek en los het probleem op. Hervat vervolgens de wizard door de printer opnieuw te starten."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
+#: Marlin_main.cpp:3152
 msgid "Please open idler and remove filament manually."
 msgstr "Open rondsel en verwijder filament handmatig."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
+#: messages.c:61
 msgid "Please place steel sheet on heatbed."
 msgstr "Leg staalplaat op bed."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
+#: messages.c:64
 msgid "Please press the knob to unload filament"
 msgstr "Druk op de knop om filament te verwijderen"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
+#: messages.c:66
 msgid "Please pull out filament immediately"
 msgstr "Trek onmiddellijk de filament eruit"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
+#: mmu.cpp:1422
 msgid "Please remove filament and then press the knob."
 msgstr "Trek onmiddellijk filament eruit en druk vervolgens op de knop."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
+#: messages.c:70
 msgid "Please remove steel sheet from heatbed."
 msgstr "Verwijder staalplaat van het bed."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
+#: Marlin_main.cpp:4596
 msgid "Please run XYZ calibration first."
 msgstr "Voer eerst de XYZ-kalibratie uit."
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
+#: mmu.cpp:1341
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Gelieve de firmware te vernieuwen in uw MMU2. Wacht op reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:66
+#: messages.c:62
 msgid "Please wait"
 msgstr "Even geduld aub"
 
 # 
-#: ultralcd.cpp:5070
+#: ultralcd.cpp:5057
 msgid "Please remove shipping helpers first."
 msgstr "Verwijder eerst de transport beschermers."
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
+#: messages.c:63
 msgid "Preheat the nozzle!"
 msgstr "Tuit voorverwarmen!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6825
+#: ultralcd.cpp:6884
 msgid "Preheat"
 msgstr "Voorverwarmen"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
+#: messages.c:100
 msgid "Preheating nozzle. Please wait."
 msgstr "Opwarmen van de tuit. Wacht aub."
 
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
 # 
 #: util.cpp:297
 msgid "Please upgrade."
 msgstr "Voer een upgrade uit."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
+#: Marlin_main.cpp:11563
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Druk op de knop om de tuit voor te verwarmen en door te gaan."
 
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:730
+msgid "Pause"
+msgstr "Pauze"
+
 # 
-#: ultralcd.cpp:1835
+#: ultralcd.cpp:1783
 msgid "Power failures"
 msgstr "Stroomstoringen"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:69
+#: messages.c:65
 msgid "Print aborted"
 msgstr "Print afgebroken"
 
-# 
-#: ultralcd.cpp:2452
+#  c=20
+#: ultralcd.cpp:2433
 msgid "Preheating to load"
 msgstr "Opwarmen invoeren"
 
-# 
-#: ultralcd.cpp:2456
+#  c=20
+#: ultralcd.cpp:2437
 msgid "Preheating to unload"
 msgstr "Opwarmen uitwerpen"
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
+#: ultralcd.cpp:8715
 msgid "Print fan:"
 msgstr "Print fan:"
 
 # MSG_CARD_MENU
-#: messages.c:21
+#: messages.c:20
 msgid "Print from SD"
 msgstr "Print van SD"
 
 # 
-#: ultralcd.cpp:2301
+#: ultralcd.cpp:2280
 msgid "Press the knob"
 msgstr "Druk op knop"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
+#: ultralcd.cpp:1118
 msgid "Print paused"
 msgstr "Print pauzeren"
 
 # 
-#: mmu.cpp:723
+#: mmu.cpp:726
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Druk op de knop om de temperatuur van de tuit te hervatten."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
+#: messages.c:38
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Printer is nog niet gekalibreerd. Volg de handleiding, hoofdstuk First steps, sectie Calibration flow."
 
 # 
-#: ultralcd.cpp:1707
+#: ultralcd.cpp:1655
 msgid "Print FAN"
 msgstr "Print fan"
 
+# 
+#: ultralcd.cpp:4922
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Steek a.u.b. filament in de extruder en druk op de knop om het te laden."
+
+# 
+#: ultralcd.cpp:4917
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Steek a.u.b. filament in de eerste buis van de MMU en druk op de knop om het te laden."
+
+# 
+#: ultralcd.cpp:4839
+msgid "Please load filament first."
+msgstr "Laad a.u.b. eerst filament."
+
 # MSG_PRUSA3D
-#: ultralcd.cpp:2189
+#: ultralcd.cpp:2156
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
+#: ultralcd.cpp:3265
 msgid "Rear side [um]"
 msgstr "Achterkant[um]"
 
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
+#  c=20 r=4
+#: ultralcd.cpp:7582
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Verwijder eerst het filament en probeer het opnieuw."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10920
 msgid "Recovering print    "
 msgstr "Print herstellen    "
 
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Verwijder de oude filament en druk op de knop om nieuwe filament te laden."
 
-# 
+#  c=20
 #: 
 msgid "Prusa i3 MK3S OK."
 msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
+#: ultralcd.cpp:5894
 msgid "Reset XYZ calibr."
 msgstr "Reset XYZ kalibr."
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3266
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
+#: ultralcd.cpp:6892
 msgid "Resume print"
 msgstr "Print hervatten"
 
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
 msgid "Resuming print"
 msgstr "Hervatten print"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
+#: ultralcd.cpp:3263
 msgid "Right side[um]"
 msgstr "Recht.kant[um]"
 
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "RPi port    [aan]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "RPi port    [uit]"
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr ""
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
+#: ultralcd.cpp:4860
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Starten van de Wizard verwijdert de huidige kalibreringsresultaten en begint vanaf het begin. Doorgaan?"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "SD card [normaal]"
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "SD kaart"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "SD Karte[flshAir]"
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
 
 # 
-#: ultralcd.cpp:3012
+#: ultralcd.cpp:2992
 msgid "Right"
 msgstr "Rechts"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
+#: messages.c:35
 msgid "Searching bed calibration point"
 msgstr "Zoeken bed kalibratiepunt"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5806
 msgid "Select language"
 msgstr "Kies taal"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
+#: ultralcd.cpp:7857
 msgid "Self test OK"
 msgstr "Zelftest  OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
+#: ultralcd.cpp:7625
 msgid "Self test start  "
 msgstr "Zelftest start   "
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5820
+#: ultralcd.cpp:5870
 msgid "Selftest         "
 msgstr "Zelftest         "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
+#: ultralcd.cpp:8300
 msgid "Selftest error !"
 msgstr "Zelftest fout  !"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:77
+#: messages.c:73
 msgid "Selftest failed  "
 msgstr "Zelftest mislukt "
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1565
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Zelftest zal worden uitgevoerd om nauwkeurige sensorloze auto positie te kalibreren."
 
 # 
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5098
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Selecteer de voorverwarmingstemperatuur van de tuit die overeenkomt met uw materiaal."
 
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Selecteer PLA-filament:"
-
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
+#: ultralcd.cpp:3284
 msgid "Set temperature:"
 msgstr "Temp. instellen:"
 
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
 # MSG_SETTINGS
-#: messages.c:86
+#: messages.c:82
 msgid "Settings"
 msgstr "Instellingen"
 
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5891
 msgid "Show end stops"
 msgstr "Toon endstops"
 
 # 
-#: ultralcd.cpp:4022
+#: ultralcd.cpp:4004
 msgid "Sensor state"
 msgstr "Sensorstatus"
 
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:736
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Sommige bestanden worden niet gesorteerd omdat het maximum aantal bestanden per map 100 is."
 
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Sortering  [geen]"
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Sort."
+
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Geen"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Sortering  [tijd]"
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Tijd"
 
 # 
-#: ultralcd.cpp:3055
+#: ultralcd.cpp:3035
 msgid "Severe skew:"
 msgstr "Erg scheef:"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Sort    [alfabet]"
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Alfabet"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
+#: cardreader.cpp:743
 msgid "Sorting files"
 msgstr "Bestanden sorteren"
 
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Geluid     [hard]"
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Hard"
 
 # 
-#: ultralcd.cpp:3054
+#: ultralcd.cpp:3034
 msgid "Slight skew:"
 msgstr "Iets scheef:"
 
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Geluid      [uit]"
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Geluid"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr ""
 
 # 
-#: Marlin_main.cpp:4875
+#: Marlin_main.cpp:5110
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Er is een probleem opgetreden, Z-kalibratie afgedwongen ..."
 
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Geluid  [eenmaal]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Geluid     [stil]"
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "Eenmaal"
 
 # MSG_SPEED
-#: ultralcd.cpp:7032
+#: ultralcd.cpp:7150
 msgid "Speed"
 msgstr "Snelheid"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
+#: messages.c:76
 msgid "Spinning"
 msgstr "Draait"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
+#: Marlin_main.cpp:4609
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Stabiele omgevingstemperatuur van 21-26C is nodig, een stevige stand is vereist."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6945
+#: ultralcd.cpp:7009
 msgid "Statistics  "
 msgstr "Statistieken"
 
 # MSG_STOP_PRINT
-#: messages.c:93
+#: messages.c:91
 msgid "Stop print"
 msgstr "Print stoppen"
 
 # MSG_STOPPED
-#: messages.c:94
+#: messages.c:92
 msgid "STOPPED. "
 msgstr "GESTOPT. "
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6954
+#: ultralcd.cpp:7018
 msgid "Support"
 msgstr ""
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
+#: ultralcd.cpp:8380
 msgid "Swapped"
 msgstr "Gewisseld"
 
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Tempkalibratie      "
+# 
+#: ultralcd.cpp:4810
+msgid "Select filament:"
+msgstr "Kies filament:"
 
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Tempkal.    [aan]"
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Tempkalib."
 
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Tempkal.    [uit]"
+# 
+#: ultralcd.cpp:4951
+msgid "Select temperature which matches your material."
+msgstr "Selecteer de temperatuur die overeenkomt met uw materiaal."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5902
 msgid "Temp. calibration"
 msgstr "Tempkalibratie"
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
+#: ultralcd.cpp:3930
 msgid "Temperature calibration failed"
 msgstr "Temperatuurkalibratie mislukt"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
+#: messages.c:94
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Temperatuurkalibratie kan worden uitgeschakeld in het menu Instellingen-> Tempkalibratie."
 
+#  c=20 r=3
+#: ultralcd.cpp:7589
+msgid "Sensor verified, remove the filament now."
+msgstr "Sensor geverifieerd, verwijder nu het filament."
+
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5717
+#: ultralcd.cpp:5764
 msgid "Temperature"
 msgstr "Temperatuur"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2208
 msgid "Temperatures"
 msgstr "Temperaturen"
 
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Er is nog steeds een noodzaak om de Z-kalibratie uit te voeren. Volg de handleiding, hoofdstuk First steps, section Calibration flow."
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2889
 msgid "Total filament"
 msgstr "Totaal fil.   "
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2890
 msgid "Total print time"
 msgstr "Totaal printtijd"
 
 # MSG_TUNE
-#: ultralcd.cpp:6822
+#: ultralcd.cpp:6881
 msgid "Tune"
 msgstr "Fijnafstemming"
 
@@ -1356,62 +1456,62 @@ msgid "Unload"
 msgstr "Verwijderen"
 
 # 
-#: ultralcd.cpp:1804
+#: ultralcd.cpp:1752
 msgid "Total failures"
 msgstr "Totaal fouten"
 
 # 
-#: ultralcd.cpp:2308
+#: ultralcd.cpp:2287
 msgid "to load filament"
 msgstr "om filament te laden"
 
 # 
-#: ultralcd.cpp:2312
+#: ultralcd.cpp:2291
 msgid "to unload filament"
 msgstr "om filament te laden"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
+#: messages.c:95
 msgid "Unload filament"
 msgstr "Filament uitwerpen"
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
+#: messages.c:96
 msgid "Unloading filament"
 msgstr "Uitwerpen filament"
 
 # 
-#: ultralcd.cpp:1757
+#: ultralcd.cpp:1705
 msgid "Total"
 msgstr "Totaal"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
+#: ultralcd.cpp:6031
 msgid "Used during print"
 msgstr "Gebruikt bij print"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
+#: ultralcd.cpp:2211
 msgid "Voltages"
 msgstr "Spanning"
 
 # 
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2184
 msgid "unknown"
 msgstr "onbekend"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5264
+#: Marlin_main.cpp:5520
 msgid "Wait for user..."
 msgstr "Wacht op gebruiker ..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
+#: ultralcd.cpp:3432
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Wachten op afkoelen van tuit en bed"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
+#: ultralcd.cpp:3393
 msgid "Waiting for PINDA probe cooling"
 msgstr "Wachten op afkoelen van PINDA"
 
@@ -1421,264 +1521,224 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Gebruik ontladen om filament 1 te verwijderen als het uitsteekt buiten de achterste MMU-buis. Gebruik uitwerpen als deze in de tube is verborgen."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1525
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Waarschuwing: zowel het printertype als het moederbordtype is gewijzigd."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1517
 msgid "Warning: motherboard type changed."
 msgstr "Waarschuwing: type moederbord gewijzigd."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1521
 msgid "Warning: printer type changed."
 msgstr "Waarschuwing: printertype gewijzigd."
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
+#: Marlin_main.cpp:3142
 msgid "Was filament unload successful?"
 msgstr "Is filament succesvol verwijderd?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
+#: messages.c:81
 msgid "Wiring error"
 msgstr "Aansluitingsfout"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
+#: ultralcd.cpp:5861
 msgid "Wizard"
 msgstr "Wizard"
 
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2200
 msgid "XYZ cal. details"
 msgstr "XZY kal. details"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
+#: messages.c:18
 msgid "XYZ calibration failed. Please consult the manual."
 msgstr "XYZ-kalibratie mislukt. Raadpleeg de handleiding aub."
 
 # MSG_YES
-#: messages.c:104
+#: messages.c:102
 msgid "Yes"
 msgstr "Ja"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
+#: messages.c:101
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "U kunt de wizard altijd hervatten via Kalibratie -> Wizard."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
+#: ultralcd.cpp:3902
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "XYZ-kalibratie in orde. Scheefheid zal automatisch worden gecorrigeerd."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
+#: ultralcd.cpp:3899
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "XYZ-kalibratie in orde. X / Y-assen zijn licht scheef. Goed gedaan!"
 
-# 
-#: ultralcd.cpp:5197
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr "Time-out"
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5186
 msgid "X-correct:"
 msgstr "X-correctie:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
+#: ultralcd.cpp:3896
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "XYZ-kalibratie ok. X / Y-assen staan loodrecht. Gefeliciteerd!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
+#: ultralcd.cpp:3880
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "XYZ-kalibratie niet gelukt. Voorste kalibratiepunten niet bereikbaar."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
+#: ultralcd.cpp:3883
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "XYZ-kalibratie niet gelukt. Rechter voor kalibratiepunt niet bereikbaar."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
+#: ultralcd.cpp:6291
 msgid "Load all"
 msgstr "Laad alle"
 
 # 
-#: ultralcd.cpp:3879
+#: ultralcd.cpp:3862
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "XYZ-kalibratie mislukt. Bed ijkpunt niet gevonden."
 
 # 
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3868
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "XYZ-kalibratie mislukt. Voorste kalibratiepunten niet bereikbaar."
 
 # 
-#: ultralcd.cpp:3888
+#: ultralcd.cpp:3871
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "XYZ-kalibratie mislukt. Rechter voor kalibratiepunt niet bereikbaar."
 
 # 
-#: ultralcd.cpp:3009
+#: ultralcd.cpp:2989
 msgid "Y distance from min"
 msgstr "Y afstand van min"
 
 # 
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:4954
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr ""
+
+#  c=20 r=5
+#: ultralcd.cpp:7593
+msgid "Verification failed, remove the filament and try again."
+msgstr "Verificatie mislukt, verwijder het filament en probeer het opnieuw."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5187
 msgid "Y-correct:"
 msgstr "Y-correctie:"
 
 # MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [uit]"
+#: messages.c:105
+msgid "Off"
+msgstr "Uit"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "Aan"
 
 # 
-#: messages.c:57
+#: messages.c:53
 msgid "Back"
 msgstr "terug"
 
 # 
-#: ultralcd.cpp:5706
+#: ultralcd.cpp:5741
 msgid "Checks"
 msgstr ""
 
 # 
-#: ultralcd.cpp:8080
+#: ultralcd.cpp:8394
 msgid "False triggering"
 msgstr "Valse triggering"
 
 # 
-#: ultralcd.cpp:4027
+#: ultralcd.cpp:4009
 msgid "FINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware   [geen]"
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [strikt]"
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Strikt"
 
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
 msgstr ""
 
 # 
-#: messages.c:87
+#: messages.c:83
 msgid "HW Setup"
 msgstr "HW Configuratie"
 
 # 
-#: ultralcd.cpp:4031
+#: ultralcd.cpp:4013
 msgid "IR:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Magnet. comp.[N/V]"
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Magnet. comp."
 
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Magnet. comp.[Uit]"
-
-# 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Magnet. comp.[Aan]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr ""
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
 msgstr ""
 
 # 
-#: ultralcd.cpp:5744
+#: ultralcd.cpp:5788
 msgid "Mesh bed leveling"
 msgstr "Mesh bed leveling"
 
 # 
-#: Marlin_main.cpp:852
+#: Marlin_main.cpp:877
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "MK3S-firmware op MK3-printer ontdekt"
 
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "MMU Mod.[Normaal]"
-
-# 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "MMU Mod.[Stealth]"
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "MMU Mod"
 
 # 
-#: ultralcd.cpp:4508
+#: ultralcd.cpp:4490
 msgid "Mode change in progress ..."
 msgstr "Moduswijziging bezig..."
 
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Model      [geen]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Model    [strikt]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Model    [alarm.]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Tuit d.    [0.25]"
-
-"Nozzle d.  [0.25]"
-#: 
-msgid "Tuit d.    [0.25]"
-msgstr 
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Tuit d.    [0.40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Tuit d.    [0.60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Tuit       [geen]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Tuit     [strikt]"
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Tuit     [alarm.]"
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Tuit d."
 
 # 
 #: util.cpp:514
@@ -1711,17 +1771,17 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-Code is voor een nieuwere firmware geslict. Update de firmware alsjeblieft. Druk geannuleerd."
 
 # 
-#: ultralcd.cpp:4023
+#: ultralcd.cpp:4005
 msgid "PINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2462
+#  c=20
+#: ultralcd.cpp:2443
 msgid "Preheating to cut"
 msgstr "Opwarm. te snijden"
 
-# 
-#: ultralcd.cpp:2459
+#  c=20
+#: ultralcd.cpp:2440
 msgid "Preheating to eject"
 msgstr "Opwarm.te uitwerpen"
 
@@ -1735,53 +1795,48 @@ msgstr "De diameter van de tuit van de printer verschilt van de G-code. Doorgaan
 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 msgstr "De diameter van de tuit van de printer verschilt van de G-code. Controleer de waarde in de instellingen. Afdrukken geannuleerd."
 
+#  c=20
+#: ultralcd.cpp:8400
+msgid "%s level expected"
+msgstr ""
+
 # 
-#: ultralcd.cpp:6786
+#: ultralcd.cpp:6845
 msgid "Rename"
 msgstr "Hernoem"
 
 # 
-#: ultralcd.cpp:6779
+#: ultralcd.cpp:6838
 msgid "Select"
 msgstr "Selecteer"
 
 # 
-#: ultralcd.cpp:2229
+#: ultralcd.cpp:2202
 msgid "Sensor info"
 msgstr "Sensor info"
 
-# 
-#: messages.c:58
+# MSG_SHEET c=10
+#: messages.c:54
 msgid "Sheet"
-msgstr "Plaat"
+msgstr "Staalplaat"
 
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Geluid   [assist]"
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5704
+#  c=18
+#: ultralcd.cpp:5739
 msgid "Steel sheets"
 msgstr "Staalplaten"
 
-# 
-#: ultralcd.cpp:5199
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5188
 msgid "Z-correct:"
 msgstr "Z-correctie:"
 
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Z-probe nr.    [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Z-probe nr.    [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Z-probe nr.    [5]"
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr ""
 

+ 636 - 580
lang/po/new/pl.po

@@ -7,8 +7,8 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Language: pl\n"
 "Project-Id-Version: Prusa-Firmware\n"
-"POT-Creation-Date: Thu, Oct 3, 2019 7:26:23 PM\n"
-"PO-Revision-Date: Thu, Oct 3, 2019 7:26:23 PM\n"
+"POT-Creation-Date: Fri May 15 18:16:57 CEST 2020\n"
+"PO-Revision-Date: Fri May 15 18:16:57 CEST 2020\n"
 "Language-Team: \n"
 "X-Generator: Poedit 2.0.7\n"
 "X-Poedit-SourceCharset: UTF-8\n"
@@ -20,18 +20,28 @@ msgstr ""
 msgid "[%.7s]Live adj. Z\x0avalue set, continue\x0aor start from zero?\x0a%cContinue%cReset"
 msgstr "[%.7s]Live Adj. Z\x0austaw., kontynuowac\x0aczy zaczac od 0?\x0a%cKontynuuj%cReset"
 
+# MSG_03_OR_OLDER c=18
+#: messages.c:144
+msgid " 0.3 or older"
+msgstr " 0.3 lub starszy"
+
+# MSG_04_OR_NEWER c=18
+#: messages.c:143
+msgid " 0.4 or newer"
+msgstr " 0.4 lub nowszy"
+
 # MSG_IMPROVE_BED_OFFSET_AND_SKEW_LINE2 c=14
-#: messages.c:39
+#: messages.c:36
 msgid " of 4"
 msgstr " z 4"
 
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE2 c=14
-#: messages.c:60
+#: messages.c:56
 msgid " of 9"
 msgstr " z 9"
 
 # MSG_MEASURED_OFFSET
-#: ultralcd.cpp:3082
+#: ultralcd.cpp:3064
 msgid "[0;0] point offset"
 msgstr "[0;0] przesun.punktu"
 
@@ -46,777 +56,822 @@ msgid "WARNING:\x0aCrash detection\x0adisabled in\x0aStealth mode"
 msgstr "UWAGA:\x0aWykrywanie zderzen\x0awylaczone w\x0atrybie Stealth"
 
 # 
-#: ultralcd.cpp:2470
+#: ultralcd.cpp:2460
 msgid ">Cancel"
 msgstr ">Anuluj"
 
 # MSG_BABYSTEPPING_Z c=15
-#: ultralcd.cpp:3202
+#: ultralcd.cpp:3184
 msgid "Adjusting Z:"
 msgstr "Ustawianie Z:"
 
 # MSG_SELFTEST_CHECK_ALLCORRECT c=20
-#: ultralcd.cpp:8402
+#: ultralcd.cpp:8677
 msgid "All correct      "
 msgstr "Wszystko OK "
 
 # MSG_WIZARD_DONE c=20 r=8
-#: messages.c:101
+#: messages.c:99
 msgid "All is done. Happy printing!"
 msgstr "Gotowe. Udanego drukowania!"
 
 # 
-#: ultralcd.cpp:1993
+#: ultralcd.cpp:1956
 msgid "Ambient"
 msgstr "Otoczenie"
 
-# MSG_PRESS c=20
-#: ultralcd.cpp:2619
+# MSG_AUTO c=6
+#: messages.c:140
+msgid "Auto"
+msgstr ""
+
+# MSG_PRESS c=20 r=2
+#: ultralcd.cpp:2609
 msgid "and press the knob"
 msgstr "i nacisnij pokretlo"
 
 # MSG_CONFIRM_CARRIAGE_AT_THE_TOP c=20 r=2
-#: ultralcd.cpp:3521
+#: ultralcd.cpp:3506
 msgid "Are left and right Z~carriages all up?"
 msgstr "Obydwa konce osi sa na szczycie?"
 
-# MSG_AUTO_DEPLETE_ON c=17 r=1
-#: ultralcd.cpp:5267
-msgid "SpoolJoin    [on]"
-msgstr "SpoolJoin    [wl]"
-
-# 
-#: ultralcd.cpp:5263
-msgid "SpoolJoin   [N/A]"
-msgstr "SpoolJoin   [N/D]"
-
-# MSG_AUTO_DEPLETE_OFF c=17 r=1
-#: ultralcd.cpp:5271
-msgid "SpoolJoin   [off]"
-msgstr "SpoolJoin   [wyl]"
+# MSG_AUTO_DEPLETE c=17 r=1
+#: messages.c:108
+msgid "SpoolJoin"
+msgstr ""
 
 # MSG_AUTO_HOME
 #: messages.c:11
 msgid "Auto home"
 msgstr "Auto zerowanie"
 
-# MSG_AUTOLOAD_FILAMENT c=17
-#: ultralcd.cpp:6928
+# MSG_AUTOLOAD_FILAMENT c=18
+#: ultralcd.cpp:6961
 msgid "AutoLoad filament"
 msgstr "Autoladowanie fil."
 
 # MSG_AUTOLOADING_ONLY_IF_FSENS_ON c=20 r=4
-#: ultralcd.cpp:4459
+#: ultralcd.cpp:4445
 msgid "Autoloading filament available only when filament sensor is turned on..."
-msgstr "Autoladowanie filamentu dostepne tylko gdy czujnik filamentu jest wlaczony..."
+msgstr "Autoladowanie fil. dostepne tylko gdy czujnik filamentu jest wlaczony..."
 
 # MSG_AUTOLOADING_ENABLED c=20 r=4
-#: ultralcd.cpp:2814
+#: ultralcd.cpp:2804
 msgid "Autoloading filament is active, just press the knob and insert filament..."
 msgstr "Autoladowanie filamentu wlaczone, nacisnij pokretlo i wsun filament..."
 
 # MSG_SELFTEST_AXIS_LENGTH
-#: ultralcd.cpp:8056
+#: ultralcd.cpp:8325
 msgid "Axis length"
 msgstr "Dlugosc osi"
 
 # MSG_SELFTEST_AXIS
-#: ultralcd.cpp:8058
+#: ultralcd.cpp:8327
 msgid "Axis"
 msgstr "Os"
 
 # MSG_SELFTEST_BEDHEATER
-#: ultralcd.cpp:8000
+#: ultralcd.cpp:8269
 msgid "Bed / Heater"
 msgstr "Stol / Grzanie"
 
 # MSG_BED_DONE
-#: messages.c:16
+#: messages.c:15
 msgid "Bed done"
 msgstr "Stol OK"
 
 # MSG_BED_HEATING
-#: messages.c:17
+#: messages.c:16
 msgid "Bed Heating"
 msgstr "Grzanie stolu.."
 
 # MSG_BED_CORRECTION_MENU
-#: ultralcd.cpp:5838
+#: ultralcd.cpp:5861
 msgid "Bed level correct"
 msgstr "Korekta stolu"
 
-# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=4
-#: messages.c:18
+# MSG_BELTTEST c=17
+#: ultralcd.cpp:5841
+msgid "Belt test        "
+msgstr "Test paskow"
+
+# MSG_BED_LEVELING_FAILED_POINT_LOW c=20 r=5
+#: messages.c:17
 msgid "Bed leveling failed. Sensor didnt trigger. Debris on nozzle? Waiting for reset."
 msgstr "Kalibracja nieudana. Sensor nie aktywowal sie. Zanieczysz. dysza? Czekam na reset."
 
+# MSG_BRIGHT c=6
+#: messages.c:138
+msgid "Bright"
+msgstr "Jasny"
+
+# MSG_BRIGHTNESS c=18
+#: messages.c:134
+msgid "Brightness"
+msgstr "Jasnosc"
+
 # MSG_BED
-#: messages.c:15
+#: messages.c:14
 msgid "Bed"
 msgstr "Stol"
 
-# MSG_MENU_BELT_STATUS c=15 r=1
-#: ultralcd.cpp:2043
+# MSG_MENU_BELT_STATUS c=18
+#: ultralcd.cpp:2009
 msgid "Belt status"
 msgstr "Stan paskow"
 
 # MSG_RECOVER_PRINT c=20 r=2
-#: messages.c:71
+#: messages.c:67
 msgid "Blackout occurred. Recover print?"
 msgstr "Wykryto zanik napiecia. Kontynowac?"
 
 # 
-#: ultralcd.cpp:8404
+#: ultralcd.cpp:8679
 msgid "Calibrating home"
 msgstr "Zerowanie osi"
 
 # MSG_CALIBRATE_BED
-#: ultralcd.cpp:5827
+#: ultralcd.cpp:5850
 msgid "Calibrate XYZ"
 msgstr "Kalibracja XYZ"
 
 # MSG_HOMEYZ
-#: messages.c:48
+#: messages.c:44
 msgid "Calibrate Z"
 msgstr "Kalibruj Z"
 
 # MSG_CALIBRATE_PINDA c=17 r=1
-#: ultralcd.cpp:4651
+#: ultralcd.cpp:4637
 msgid "Calibrate"
 msgstr "Kalibruj"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating XYZ. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
 
 # MSG_CALIBRATE_Z_AUTO c=20 r=2
-#: messages.c:20
+#: messages.c:19
 msgid "Calibrating Z"
 msgstr "Kalibruje Z"
 
 # MSG_MOVE_CARRIAGE_TO_THE_TOP_Z c=20 r=8
-#: ultralcd.cpp:3484
+#: ultralcd.cpp:3469
 msgid "Calibrating Z. Rotate the knob to move the Z carriage up to the end stoppers. Click when done."
 msgstr "Kalibracja XYZ. Przekrec pokretlo, aby przesunac os Z do gornych ogranicznikow. Nacisnij, by potwierdzic."
 
 # MSG_HOMEYZ_DONE
-#: ultralcd.cpp:821
+#: ultralcd.cpp:865
 msgid "Calibration done"
 msgstr "Kalibracja OK"
 
 # MSG_MENU_CALIBRATION
-#: messages.c:61
+#: messages.c:57
 msgid "Calibration"
 msgstr "Kalibracja"
 
 # 
-#: ultralcd.cpp:4828
+#: ultralcd.cpp:4815
 msgid "Cancel"
 msgstr "Anuluj"
 
 # MSG_SD_REMOVED
-#: ultralcd.cpp:8812
+#: ultralcd.cpp:9090
 msgid "Card removed"
 msgstr "Karta wyjeta"
 
 # MSG_NOT_COLOR
-#: ultralcd.cpp:2719
+#: ultralcd.cpp:2709
 msgid "Color not correct"
 msgstr "Kolor zanieczysz."
 
 # MSG_COOLDOWN
-#: messages.c:23
+#: messages.c:22
 msgid "Cooldown"
 msgstr "Chlodzenie"
 
 # 
-#: ultralcd.cpp:4584
+#: ultralcd.cpp:4570
 msgid "Copy selected language?"
 msgstr "Skopiowac wybrany jezyk?"
 
 # MSG_CRASHDETECT_ON
-#: messages.c:27
-msgid "Crash det.   [on]"
-msgstr "Wykr.zderzen [wl]"
-
-# MSG_CRASHDETECT_NA
-#: messages.c:25
-msgid "Crash det.  [N/A]"
-msgstr "Wykr.zderzen[N/D]"
+#: messages.c:24
+msgid "Crash det."
+msgstr "Wykr.zderzen"
 
-# MSG_CRASHDETECT_OFF
-#: messages.c:26
-msgid "Crash det.  [off]"
-msgstr "Wykr.zderzen[wyl]"
+# 
+#: ultralcd.cpp:4950
+msgid "Choose a filament for the First Layer Calibration and select it in the on-screen menu."
+msgstr "Wybierz filament do Kalibracji Pierwszej Warstwy i potwierdz w menu ekranowym."
 
 # MSG_CRASH_DETECTED c=20 r=1
-#: messages.c:24
+#: messages.c:23
 msgid "Crash detected."
 msgstr "Zderzenie wykryte"
 
 # 
-#: Marlin_main.cpp:596
+#: Marlin_main.cpp:607
 msgid "Crash detected. Resume print?"
 msgstr "Wykryto zderzenie. Wznowic druk?"
 
 # 
-#: ultralcd.cpp:1837
+#: ultralcd.cpp:1785
 msgid "Crash"
 msgstr "Zderzenie"
 
 # MSG_CURRENT c=19 r=1
-#: ultralcd.cpp:5979
+#: ultralcd.cpp:6002
 msgid "Current"
 msgstr "Aktualne"
 
 # MSG_DATE c=17 r=1
-#: ultralcd.cpp:2197
+#: ultralcd.cpp:2163
 msgid "Date:"
 msgstr "Data:"
 
 # MSG_DISABLE_STEPPERS
-#: ultralcd.cpp:5721
+#: ultralcd.cpp:5743
 msgid "Disable steppers"
 msgstr "Wylacz silniki"
 
 # MSG_BABYSTEP_Z_NOT_SET c=20 r=12
-#: messages.c:14
+#: messages.c:13
 msgid "Distance between tip of the nozzle and the bed surface has not been set yet. Please follow the manual, chapter First steps, section First layer calibration."
 msgstr "Odleglosc dyszy od powierzchni druku nie jest skalibrowana. Postepuj zgodnie z instrukcja: rozdzial Wprowadzenie - Kalibracja pierwszej warstwy."
 
+# MSG_FS_CONTINUE c=5
+#: messages.c:132
+msgid "Cont."
+msgstr "Kont."
+
 # MSG_WIZARD_REPEAT_V2_CAL c=20 r=7
-#: ultralcd.cpp:5134
+#: ultralcd.cpp:5125
 msgid "Do you want to repeat last step to readjust distance between nozzle and heatbed?"
 msgstr "Chcesz powtorzyc ostatni krok i ponownie ustawic odleglosc miedzy dysza a stolikiem?"
 
-# MSG_EXTRUDER_CORRECTION c=10
-#: ultralcd.cpp:5201
+# MSG_EXTRUDER_CORRECTION c=13
+#: ultralcd.cpp:5194
 msgid "E-correct:"
 msgstr "Korekcja-E:"
 
 # MSG_EJECT_FILAMENT c=17 r=1
-#: messages.c:53
+#: messages.c:49
 msgid "Eject filament"
 msgstr "Wysun filament"
 
 # MSG_EJECTING_FILAMENT c=20 r=1
-#: mmu.cpp:1413
+#: mmu.cpp:1416
 msgid "Ejecting filament"
 msgstr "Wysuwanie filamentu"
 
-# MSG_SELFTEST_ENDSTOP_NOTHIT c=20 r=1
-#: ultralcd.cpp:8024
+# MSG_SELFTEST_ENDSTOP_NOTHIT c=20
+#: ultralcd.cpp:8293
 msgid "Endstop not hit"
 msgstr "Krancowka nie aktyw."
 
 # MSG_SELFTEST_ENDSTOP
-#: ultralcd.cpp:8018
+#: ultralcd.cpp:8287
 msgid "Endstop"
 msgstr "Krancowka"
 
 # MSG_SELFTEST_ENDSTOPS
-#: ultralcd.cpp:8006
+#: ultralcd.cpp:8275
 msgid "Endstops"
 msgstr "Krancowki"
 
 # MSG_STACK_ERROR c=20 r=4
-#: ultralcd.cpp:6965
+#: ultralcd.cpp:6998
 msgid "Error - static memory has been overwritten"
 msgstr "Blad - pamiec statyczna zostala nadpisana"
 
+# MSG_CUT_FILAMENT c=16
+#: messages.c:50
+msgid "Cut filament"
+msgstr "Ciecie filamentu"
+
+# MSG_CUTTER c=9
+#: messages.c:109
+msgid "Cutter"
+msgstr "Nozyk"
+
+#  c=18
+#: mmu.cpp:1388
+msgid "Cutting filament"
+msgstr "Obcinanie fil."
+
 # MSG_FSENS_NOT_RESPONDING c=20 r=4
-#: ultralcd.cpp:4472
+#: ultralcd.cpp:4458
 msgid "ERROR: Filament sensor is not responding, please check connection."
 msgstr "BLAD: Czujnik filamentu nie odpowiada, sprawdz polaczenie."
 
+# MSG_DIM c=6
+#: messages.c:139
+msgid "Dim"
+msgstr "Sciemn"
+
 # MSG_ERROR
-#: messages.c:28
+#: messages.c:25
 msgid "ERROR:"
 msgstr "BLAD:"
 
 # MSG_SELFTEST_EXTRUDER_FAN_SPEED c=18
-#: ultralcd.cpp:8411
+#: ultralcd.cpp:8686
 msgid "Extruder fan:"
 msgstr "WentHotend:"
 
-# MSG_INFO_EXTRUDER c=15 r=1
-#: ultralcd.cpp:2228
+# MSG_INFO_EXTRUDER c=18
+#: ultralcd.cpp:2211
 msgid "Extruder info"
 msgstr "Ekstruder - info"
 
 # MSG_MOVE_E
-#: messages.c:29
+#: messages.c:26
 msgid "Extruder"
 msgstr "Ekstruder"
 
 # 
-#: ultralcd.cpp:6952
+#: ultralcd.cpp:6985
 msgid "Fail stats MMU"
 msgstr "Bledy MMU"
 
-# MSG_FSENS_AUTOLOAD_ON c=17 r=1
-#: ultralcd.cpp:5235
-msgid "F. autoload  [on]"
-msgstr "Autolad.fil. [wl]"
-
-# MSG_FSENS_AUTOLOAD_NA c=17 r=1
-#: messages.c:43
-msgid "F. autoload [N/A]"
-msgstr "Autolad.fil.[N/D]"
-
-# MSG_FSENS_AUTOLOAD_OFF c=17 r=1
-#: ultralcd.cpp:5237
-msgid "F. autoload [off]"
-msgstr "Autolad.fil.[wyl]"
+# MSG_FSENSOR_AUTOLOAD c=13
+#: messages.c:40
+msgid "F. autoload"
+msgstr "Autolad. fil."
 
 # 
-#: ultralcd.cpp:6949
+#: ultralcd.cpp:6982
 msgid "Fail stats"
 msgstr "Statystyki bledow"
 
 # MSG_FAN_SPEED c=14
-#: messages.c:31
+#: messages.c:28
 msgid "Fan speed"
 msgstr "Predkosc went."
 
 # MSG_SELFTEST_FAN c=20
-#: messages.c:78
+#: messages.c:74
 msgid "Fan test"
 msgstr "Test wentylatora"
 
-# MSG_FANS_CHECK_ON c=17 r=1
-#: ultralcd.cpp:5730
-msgid "Fans check   [on]"
-msgstr "Sprawd.went. [wl]"
-
-# MSG_FANS_CHECK_OFF c=17 r=1
-#: ultralcd.cpp:5732
-msgid "Fans check  [off]"
-msgstr "Sprawd.went.[wyl]"
-
-# MSG_FSENSOR_ON
-#: messages.c:45
-msgid "Fil. sensor  [on]"
-msgstr "Czuj. filam. [wl]"
-
-# MSG_FSENSOR_NA
-#: ultralcd.cpp:5215
-msgid "Fil. sensor [N/A]"
-msgstr "Czuj. filam.[N/D]"
+# MSG_FANS_CHECK
+#: ultralcd.cpp:5751
+msgid "Fans check"
+msgstr "Sprawd.went."
 
-# MSG_FSENSOR_OFF
-#: messages.c:44
-msgid "Fil. sensor [off]"
-msgstr "Czuj. filam.[wyl]"
+# MSG_FSENSOR
+#: messages.c:41
+msgid "Fil. sensor"
+msgstr "Czuj. filam."
 
-# 
-#: ultralcd.cpp:1836
+#  c=14
+#: ultralcd.cpp:1784
 msgid "Filam. runouts"
-msgstr "Konc. filamentu"
+msgstr "Konc.filamentu"
 
 # MSG_FILAMENT_CLEAN c=20 r=2
-#: messages.c:32
+#: messages.c:29
 msgid "Filament extruding & with correct color?"
-msgstr "Filament wychodzi z dyszy, kolor jest ok?"
+msgstr "Filament wychodzi z dyszy,kolor jest ok?"
 
 # MSG_NOT_LOADED c=19
-#: ultralcd.cpp:2715
+#: ultralcd.cpp:2705
 msgid "Filament not loaded"
 msgstr "Fil. nie zaladowany"
 
 # MSG_FILAMENT_SENSOR c=20
-#: messages.c:84
+#: messages.c:80
 msgid "Filament sensor"
 msgstr "Czujnik filamentu"
 
-# MSG_FILAMENT_USED c=19 r=1
-#: ultralcd.cpp:2878
+# MSG_FILAMENT_USED c=19
+#: ultralcd.cpp:2869
 msgid "Filament used"
 msgstr "Uzyty filament"
 
 # MSG_PRINT_TIME c=19 r=1
-#: ultralcd.cpp:2879
+#: ultralcd.cpp:2870
 msgid "Print time"
 msgstr "Czas druku"
 
-# MSG_FILE_INCOMPLETE c=20 r=2
-#: ultralcd.cpp:8539
+# MSG_FS_ACTION c=10
+#: messages.c:131
+msgid "FS Action"
+msgstr "Akcja FS"
+
+#  c=18
+#: Marlin_main.cpp:9512
+msgid "FS v0.4 or newer"
+msgstr "FS v0.4 lub nowszy"
+
+# MSG_FILE_INCOMPLETE c=20 r=3
+#: ultralcd.cpp:8814
 msgid "File incomplete. Continue anyway?"
 msgstr "Plik niekompletny. Kontynowac?"
 
-# MSG_FINISHING_MOVEMENTS c=20 r=1
-#: messages.c:40
+# MSG_FINISHING_MOVEMENTS c=20
+#: messages.c:37
 msgid "Finishing movements"
 msgstr "Konczenie druku"
 
-# MSG_V2_CALIBRATION c=17 r=1
-#: messages.c:105
+# MSG_V2_CALIBRATION c=18
+#: messages.c:103
 msgid "First layer cal."
 msgstr "Kal. 1. warstwy"
 
 # MSG_WIZARD_SELFTEST c=20 r=8
-#: ultralcd.cpp:5055
+#: ultralcd.cpp:5046
 msgid "First, I will run the selftest to check most common assembly problems."
 msgstr "Najpierw wlacze selftest w celu sprawdzenia najczestszych problemow podczas montazu."
 
 # 
-#: mmu.cpp:724
+#: mmu.cpp:727
 msgid "Fix the issue and then press button on MMU unit."
 msgstr "Rozwiaz problem i wcisnij przycisk na MMU."
 
 # MSG_FLOW
-#: ultralcd.cpp:7038
+#: ultralcd.cpp:7125
 msgid "Flow"
 msgstr "Przeplyw"
 
 # MSG_PRUSA3D_FORUM
-#: ultralcd.cpp:2190
+#: ultralcd.cpp:2156
 msgid "forum.prusa3d.com"
 msgstr ""
 
 # MSG_SELFTEST_COOLING_FAN c=20
-#: messages.c:75
+#: messages.c:71
 msgid "Front print fan?"
 msgstr "Przedni went. druku?"
 
 # MSG_BED_CORRECTION_FRONT c=14 r=1
-#: ultralcd.cpp:3284
+#: ultralcd.cpp:3266
 msgid "Front side[um]"
 msgstr "Przod [um]"
 
 # MSG_SELFTEST_FANS
-#: ultralcd.cpp:8064
+#: ultralcd.cpp:8333
 msgid "Front/left fans"
 msgstr "Przedni/lewy wentylator"
 
 # MSG_SELFTEST_HEATERTHERMISTOR
-#: ultralcd.cpp:7994
+#: ultralcd.cpp:8263
 msgid "Heater/Thermistor"
 msgstr "Grzalka/Termistor"
 
 # MSG_BED_HEATING_SAFETY_DISABLED
-#: Marlin_main.cpp:8481
+#: Marlin_main.cpp:9440
 msgid "Heating disabled by safety timer."
 msgstr "Grzanie wylaczone przez wyl. czasowy"
 
 # MSG_HEATING_COMPLETE c=20
-#: messages.c:47
+#: messages.c:43
 msgid "Heating done."
 msgstr "Grzanie zakonczone"
 
 # MSG_HEATING
-#: messages.c:46
+#: messages.c:42
 msgid "Heating"
 msgstr "Grzanie..."
 
 # MSG_WIZARD_WELCOME c=20 r=7
-#: ultralcd.cpp:5034
+#: ultralcd.cpp:5025
 msgid "Hi, I am your Original Prusa i3 printer. Would you like me to guide you through the setup process?"
 msgstr "Czesc, jestem Twoja drukarka Original Prusa i3. Czy potrzebujesz pomocy z ustawieniem?"
 
 # MSG_PRUSA3D_HOWTO
-#: ultralcd.cpp:2191
+#: ultralcd.cpp:2157
 msgid "howto.prusa3d.com"
 msgstr ""
 
 # MSG_FILAMENTCHANGE
-#: messages.c:37
+#: messages.c:34
 msgid "Change filament"
 msgstr "Wymiana filamentu"
 
 # MSG_CHANGE_SUCCESS
-#: ultralcd.cpp:2630
+#: ultralcd.cpp:2620
 msgid "Change success!"
 msgstr "Wymiana ok!"
 
 # MSG_CORRECTLY c=20
-#: ultralcd.cpp:2707
+#: ultralcd.cpp:2697
 msgid "Changed correctly?"
 msgstr "Wymiana ok?"
 
 # MSG_SELFTEST_CHECK_BED c=20
-#: messages.c:81
+#: messages.c:77
 msgid "Checking bed     "
 msgstr "Kontrola stolu"
 
 # MSG_SELFTEST_CHECK_ENDSTOPS c=20
-#: ultralcd.cpp:8393
+#: ultralcd.cpp:8668
 msgid "Checking endstops"
 msgstr "Kontrola krancowek"
 
 # MSG_SELFTEST_CHECK_HOTEND c=20
-#: ultralcd.cpp:8399
+#: ultralcd.cpp:8674
 msgid "Checking hotend  "
 msgstr "Kontrola hotendu"
 
 # MSG_SELFTEST_CHECK_FSENSOR c=20
-#: messages.c:82
+#: messages.c:78
 msgid "Checking sensors "
-msgstr "Sprawdzanie czujnikow"
+msgstr "Kontrola czujnikow"
 
 # MSG_SELFTEST_CHECK_X c=20
-#: ultralcd.cpp:8394
+#: ultralcd.cpp:7482
 msgid "Checking X axis  "
 msgstr "Kontrola osi X"
 
 # MSG_SELFTEST_CHECK_Y c=20
-#: ultralcd.cpp:8395
+#: ultralcd.cpp:7491
 msgid "Checking Y axis  "
 msgstr "Kontrola osi Y"
 
 # MSG_SELFTEST_CHECK_Z c=20
-#: ultralcd.cpp:8396
+#: ultralcd.cpp:8671
 msgid "Checking Z axis  "
 msgstr "Kontrola osi Z"
 
 # MSG_CHOOSE_EXTRUDER c=20 r=1
-#: messages.c:49
+#: messages.c:45
 msgid "Choose extruder:"
 msgstr "Wybierz ekstruder:"
 
 # MSG_CHOOSE_FILAMENT c=20 r=1
-#: messages.c:50
+#: messages.c:46
 msgid "Choose filament:"
 msgstr "Wybierz filament:"
 
 # MSG_FILAMENT c=17 r=1
-#: messages.c:30
+#: messages.c:27
 msgid "Filament"
 msgstr ""
 
 # MSG_WIZARD_XYZ_CAL c=20 r=8
-#: ultralcd.cpp:5064
+#: ultralcd.cpp:5055
 msgid "I will run xyz calibration now. It will take approx. 12 mins."
 msgstr "Przeprowadze teraz kalibracje XYZ. Zajmie ok. 12 min."
 
 # MSG_WIZARD_Z_CAL c=20 r=8
-#: ultralcd.cpp:5072
+#: ultralcd.cpp:5063
 msgid "I will run z calibration now."
 msgstr "Przeprowadze kalibracje Z."
 
 # MSG_WATCH
-#: messages.c:99
+#: messages.c:97
 msgid "Info screen"
 msgstr "Ekran informacyjny"
 
 # MSG_INSERT_FILAMENT c=20
-#: ultralcd.cpp:2615
+#: ultralcd.cpp:2605
 msgid "Insert filament"
 msgstr "Wprowadz filament"
 
 # MSG_WIZARD_FILAMENT_LOADED c=20 r=2
-#: ultralcd.cpp:4848
+#: ultralcd.cpp:4835
 msgid "Is filament loaded?"
 msgstr "Filament jest zaladowany?"
 
 # MSG_STEEL_SHEET_CHECK c=20 r=2
-#: messages.c:92
+#: messages.c:90
 msgid "Is steel sheet on heatbed?"
 msgstr "Czy plyta stal. jest na podgrzew. stole?"
 
 # 
-#: ultralcd.cpp:1779
+#: ultralcd.cpp:1727
 msgid "Last print failures"
 msgstr "Ostatnie bledy druku"
 
 # 
-#: ultralcd.cpp:1756
+#: ultralcd.cpp:5133
+msgid "If you have additional steel sheets, calibrate their presets in Settings - HW Setup - Steel sheets."
+msgstr "Jesli masz dodatkowe plyty stalowe, to skalibruj ich ustawienia w menu Ustawienia - Ustawienia HW - Plyty stalowe."
+
+# 
+#: ultralcd.cpp:1704
 msgid "Last print"
 msgstr "Ost. wydruk"
 
 # MSG_SELFTEST_EXTRUDER_FAN c=20
-#: messages.c:76
+#: messages.c:72
 msgid "Left hotend fan?"
 msgstr "Lewy went hotendu?"
 
 # 
-#: ultralcd.cpp:3011
+#: ultralcd.cpp:2993
 msgid "Left"
 msgstr "Lewa"
 
 # MSG_BED_CORRECTION_LEFT c=14 r=1
-#: ultralcd.cpp:3282
+#: ultralcd.cpp:3264
 msgid "Left side [um]"
 msgstr "Lewo [um]"
 
 # 
-#: ultralcd.cpp:5747
+#: ultralcd.cpp:5766
 msgid "Lin. correction"
 msgstr "Korekcja liniowa"
 
 # MSG_BABYSTEP_Z
-#: messages.c:13
+#: messages.c:12
 msgid "Live adjust Z"
 msgstr "Ustaw. Live Z"
 
+#  c=20 r=6
+#: ultralcd.cpp:7527
+msgid "Insert the filament (do not load it) into the extruder and then press the knob."
+msgstr "Wsun filament (nie uzywaj funkcji ladowania) do ekstrudera i nacisnij pokretlo."
+
 # MSG_LOAD_FILAMENT c=17
-#: messages.c:51
+#: messages.c:47
 msgid "Load filament"
 msgstr "Ladowanie fil."
 
 # MSG_LOADING_COLOR
-#: ultralcd.cpp:2655
+#: ultralcd.cpp:2645
 msgid "Loading color"
 msgstr "Czyszcz. koloru"
 
 # MSG_LOADING_FILAMENT c=20
-#: messages.c:52
+#: messages.c:48
 msgid "Loading filament"
 msgstr "Laduje filament"
 
 # MSG_LOOSE_PULLEY c=20 r=1
-#: ultralcd.cpp:8048
+#: ultralcd.cpp:8317
 msgid "Loose pulley"
 msgstr "Luzne kolo pasowe"
 
 # 
-#: ultralcd.cpp:6911
+#: ultralcd.cpp:6944
 msgid "Load to nozzle"
 msgstr "Zaladuj do dyszy"
 
-# MSG_M117_V2_CALIBRATION c=25 r=1
-#: messages.c:55
+# MSG_M117_V2_CALIBRATION c=25
+#: messages.c:51
 msgid "M117 First layer cal."
 msgstr "M117 Kal. 1. warstwy"
 
 # MSG_MAIN
-#: messages.c:56
+#: messages.c:52
 msgid "Main"
 msgstr "Menu glowne"
 
+# MSG_BL_HIGH c=12
+#: messages.c:135
+msgid "Level Bright"
+msgstr "Poziom jasn."
+
+# MSG_BL_LOW c=12
+#: messages.c:136
+msgid "Level Dimmed"
+msgstr "Poziom ciem."
+
 # MSG_MEASURE_BED_REFERENCE_HEIGHT_LINE1 c=60
-#: messages.c:59
+#: messages.c:55
 msgid "Measuring reference height of calibration point"
 msgstr "Okreslam wysokosc odniesienia punktu kalibracyjnego"
 
 # MSG_MESH_BED_LEVELING
-#: ultralcd.cpp:5833
+#: ultralcd.cpp:5856
 msgid "Mesh Bed Leveling"
 msgstr "Poziomowanie stolu wg siatki"
 
 # MSG_MMU_OK_RESUMING_POSITION c=20 r=4
-#: mmu.cpp:762
+#: mmu.cpp:765
 msgid "MMU OK. Resuming position..."
 msgstr "MMU OK. Wznawianie pozycji."
 
 # MSG_MMU_OK_RESUMING_TEMPERATURE c=20 r=4
-#: mmu.cpp:755
+#: mmu.cpp:758
 msgid "MMU OK. Resuming temperature..."
 msgstr "MMU OK. Wznawiam nagrzewanie..."
 
 # 
-#: ultralcd.cpp:3052
+#: ultralcd.cpp:3034
 msgid "Measured skew"
 msgstr "Zmierzony skos"
 
 # 
-#: ultralcd.cpp:1780
+#: ultralcd.cpp:1728
 msgid "MMU fails"
 msgstr "Bledy MMU"
 
 # 
-#: mmu.cpp:1592
+#: mmu.cpp:1588
 msgid "MMU load failed     "
 msgstr "Blad ladowania MMU"
 
 # 
-#: ultralcd.cpp:1781
+#: ultralcd.cpp:1729
 msgid "MMU load fails"
 msgstr "Bledy ladow. MMU"
 
 # MSG_MMU_OK_RESUMING c=20 r=4
-#: mmu.cpp:773
+#: mmu.cpp:776
 msgid "MMU OK. Resuming..."
 msgstr "MMU OK. Wznawianie..."
 
-# MSG_STEALTH_MODE_OFF
-#: messages.c:90
-msgid "Mode     [Normal]"
-msgstr "Tryb   [normalny]"
+# MSG_MODE
+#: messages.c:84
+msgid "Mode"
+msgstr "Tryb"
 
-# MSG_SILENT_MODE_ON
-#: messages.c:89
-msgid "Mode     [silent]"
-msgstr "Tryb      [cichy]"
+#  c=20 r=3
+#: Marlin_main.cpp:879
+msgid "MK3 firmware detected on MK3S printer"
+msgstr "Wykryto firmware MK3 w drukarce MK3S"
+
+# MSG_NORMAL
+#: messages.c:88
+msgid "Normal"
+msgstr "Normalni"
+
+# MSG_SILENT
+#: messages.c:87
+msgid "Silent"
+msgstr "Cichy"
 
 # 
-#: mmu.cpp:719
+#: mmu.cpp:722
 msgid "MMU needs user attention."
 msgstr "MMU wymaga uwagi uzytkownika."
 
 # 
-#: ultralcd.cpp:1807
+#: ultralcd.cpp:1755
 msgid "MMU power fails"
 msgstr "Zaniki zasil. MMU"
 
-# MSG_STEALTH_MODE_ON
-#: messages.c:91
-msgid "Mode    [Stealth]"
-msgstr "Tryb      [cichy]"
+# MSG_STEALTH
+#: messages.c:89
+msgid "Stealth"
+msgstr "Cichy"
 
-# MSG_AUTO_MODE_ON
-#: messages.c:12
-msgid "Mode [auto power]"
-msgstr "Tryb [automatycz]"
+# MSG_AUTO_POWER
+#: messages.c:86
+msgid "Auto power"
+msgstr "Automatycz"
 
-# MSG_SILENT_MODE_OFF
-#: messages.c:88
-msgid "Mode [high power]"
-msgstr "Tryb[wysoka wyd.]"
+# MSG_HIGH_POWER
+#: messages.c:85
+msgid "High power"
+msgstr "Wysoka wyd."
 
 # 
-#: ultralcd.cpp:2203
+#: ultralcd.cpp:2186
 msgid "MMU2 connected"
 msgstr "MMU podlaczone"
 
 # MSG_SELFTEST_MOTOR
-#: messages.c:83
+#: messages.c:79
 msgid "Motor"
 msgstr "Silnik"
 
 # MSG_MOVE_AXIS
-#: ultralcd.cpp:5719
+#: ultralcd.cpp:5741
 msgid "Move axis"
 msgstr "Ruch osi"
 
 # MSG_MOVE_X
-#: ultralcd.cpp:4375
+#: ultralcd.cpp:4361
 msgid "Move X"
 msgstr "Ruch osi X"
 
 # MSG_MOVE_Y
-#: ultralcd.cpp:4376
+#: ultralcd.cpp:4362
 msgid "Move Y"
 msgstr "Ruch osi Y"
 
 # MSG_MOVE_Z
-#: ultralcd.cpp:4377
+#: ultralcd.cpp:4363
 msgid "Move Z"
 msgstr "Ruch osi Z"
 
 # MSG_NO_MOVE
-#: Marlin_main.cpp:5293
+#: Marlin_main.cpp:5541
 msgid "No move."
 msgstr "Brak ruchu."
 
 # MSG_NO_CARD
-#: ultralcd.cpp:6878
+#: ultralcd.cpp:6911
 msgid "No SD card"
 msgstr "Brak karty SD"
 
-# 
-#: ultralcd.cpp:3017
+# MSG_NA
+#: messages.c:107
 msgid "N/A"
 msgstr "N/D"
 
 # MSG_NO
-#: messages.c:62
+#: messages.c:58
 msgid "No"
 msgstr "Nie"
 
 # MSG_SELFTEST_NOTCONNECTED
-#: ultralcd.cpp:7996
+#: ultralcd.cpp:8265
 msgid "Not connected"
 msgstr "Nie podlaczono "
 
@@ -826,527 +881,572 @@ msgid "New firmware version available:"
 msgstr "Dostepna nowa wersja firmware:"
 
 # MSG_SELFTEST_FAN_NO c=19
-#: messages.c:79
+#: messages.c:75
 msgid "Not spinning"
 msgstr "Nie kreci sie"
 
 # MSG_WIZARD_V2_CAL c=20 r=8
-#: ultralcd.cpp:4957
+#: ultralcd.cpp:4946
 msgid "Now I will calibrate distance between tip of the nozzle and heatbed surface."
 msgstr "Kalibruje odleglosc miedzy koncowka dyszy a powierzchnia druku."
 
 # MSG_WIZARD_WILL_PREHEAT c=20 r=4
-#: ultralcd.cpp:5080
+#: ultralcd.cpp:5071
 msgid "Now I will preheat nozzle for PLA."
 msgstr "Nagrzewam dysze dla PLA."
 
 # MSG_NOZZLE
-#: messages.c:63
+#: messages.c:59
 msgid "Nozzle"
 msgstr "Dysza"
 
-# MSG_DEFAULT_SETTINGS_LOADED c=20 r=4
-#: Marlin_main.cpp:1516
+# MSG_DEFAULT_SETTINGS_LOADED c=20 r=5
+#: Marlin_main.cpp:1518
 msgid "Old settings found. Default PID, Esteps etc. will be set."
 msgstr "Znaleziono stare ustawienia. Zostana przywrocone domyslne ust. PID, Esteps, itp."
 
 # 
-#: ultralcd.cpp:5071
+#: ultralcd.cpp:5062
 msgid "Now remove the test print from steel sheet."
 msgstr "Teraz zdejmij wydruk testowy ze stolu."
 
 # 
-#: ultralcd.cpp:1706
+#: ultralcd.cpp:1654
 msgid "Nozzle FAN"
 msgstr "WentHotend"
 
 # MSG_PAUSE_PRINT
-#: ultralcd.cpp:6842
+#: ultralcd.cpp:6875
 msgid "Pause print"
 msgstr "Wstrzymanie wydruku"
 
 # MSG_PID_RUNNING c=20 r=1
-#: ultralcd.cpp:1590
+#: ultralcd.cpp:1539
 msgid "PID cal.           "
 msgstr "Kalibracja PID"
 
 # MSG_PID_FINISHED c=20 r=1
-#: ultralcd.cpp:1596
+#: ultralcd.cpp:1545
 msgid "PID cal. finished"
 msgstr "Kal. PID zakonczona"
 
 # MSG_PID_EXTRUDER c=17 r=1
-#: ultralcd.cpp:5839
+#: ultralcd.cpp:5862
 msgid "PID calibration"
 msgstr "Kalibracja PID"
 
 # MSG_PINDA_PREHEAT c=20 r=1
-#: ultralcd.cpp:851
+#: ultralcd.cpp:896
 msgid "PINDA Heating"
 msgstr "Grzanie sondy PINDA"
 
-# MSG_PAPER c=20 r=8
-#: messages.c:64
+# MSG_PAPER c=20 r=10
+#: messages.c:60
 msgid "Place a sheet of paper under the nozzle during the calibration of first 4 points. If the nozzle catches the paper, power off the printer immediately."
 msgstr "Umiesc kartke papieru na stole roboczym i podczas pomiaru pierwszych 4 punktow. Jesli dysza zahaczy o papier, natychmiast wylacz drukarke."
 
 # MSG_WIZARD_CLEAN_HEATBED c=20 r=8
-#: ultralcd.cpp:5137
+#: ultralcd.cpp:5128
 msgid "Please clean heatbed and then press the knob."
 msgstr "Oczysc powierzchnie druku i nacisnij pokretlo."
 
 # MSG_CONFIRM_NOZZLE_CLEAN c=20 r=8
-#: messages.c:22
+#: messages.c:21
 msgid "Please clean the nozzle for calibration. Click when done."
 msgstr "Dla prawidlowej kalibracji nalezy oczyscic dysze. Potwierdz guzikiem."
 
 # MSG_SELFTEST_PLEASECHECK
-#: ultralcd.cpp:7988
+#: ultralcd.cpp:8257
 msgid "Please check :"
 msgstr "Sprawdz :"
 
 # MSG_WIZARD_CALIBRATION_FAILED c=20 r=8
-#: messages.c:100
+#: messages.c:98
 msgid "Please check our handbook and fix the problem. Then resume the Wizard by rebooting the printer."
 msgstr "Przeczytaj nasz Podrecznik druku 3D aby naprawic problem. Potem wznow Asystenta przez restart drukarki."
 
 # MSG_CHECK_IDLER c=20 r=4
-#: Marlin_main.cpp:3075
+#: Marlin_main.cpp:3138
 msgid "Please open idler and remove filament manually."
 msgstr "Prosze odciagnac dzwignie dociskowa ekstrudera i recznie usunac filament."
 
 # MSG_PLACE_STEEL_SHEET c=20 r=4
-#: messages.c:65
+#: messages.c:61
 msgid "Please place steel sheet on heatbed."
 msgstr "Prosze umiescic plyte stalowa na stole podgrzewanym."
 
 # MSG_PRESS_TO_UNLOAD c=20 r=4
-#: messages.c:68
+#: messages.c:64
 msgid "Please press the knob to unload filament"
 msgstr "Nacisnij pokretlo aby rozladowac filament"
 
 # MSG_PULL_OUT_FILAMENT c=20 r=4
-#: messages.c:70
+#: messages.c:66
 msgid "Please pull out filament immediately"
 msgstr "Wyciagnij filament teraz"
 
 # MSG_EJECT_REMOVE c=20 r=4
-#: mmu.cpp:1419
+#: mmu.cpp:1422
 msgid "Please remove filament and then press the knob."
 msgstr "Wyciagnij filament i wcisnij pokretlo."
 
 # MSG_REMOVE_STEEL_SHEET c=20 r=4
-#: messages.c:74
+#: messages.c:70
 msgid "Please remove steel sheet from heatbed."
 msgstr "Prosze zdjac plyte stalowa z podgrzewanego stolu."
 
 # MSG_RUN_XYZ c=20 r=4
-#: Marlin_main.cpp:4360
+#: Marlin_main.cpp:4583
 msgid "Please run XYZ calibration first."
 msgstr "Prosze najpierw uruchomic kalibracje XYZ"
 
 # MSG_UPDATE_MMU2_FW c=20 r=4
-#: mmu.cpp:1338
+#: mmu.cpp:1341
 msgid "Please update firmware in your MMU2. Waiting for reset."
 msgstr "Prosze zaktualizowac Firmware MMU2. Czekam na reset."
 
 # MSG_PLEASE_WAIT c=20
-#: messages.c:66
+#: messages.c:62
 msgid "Please wait"
 msgstr "Prosze czekac"
 
 # 
-#: ultralcd.cpp:5070
+#: ultralcd.cpp:5061
 msgid "Please remove shipping helpers first."
 msgstr "Najpierw usun zabezpieczenia transportowe"
 
 # MSG_PREHEAT_NOZZLE c=20
-#: messages.c:67
+#: messages.c:63
 msgid "Preheat the nozzle!"
 msgstr "Nagrzej dysze!"
 
 # MSG_PREHEAT
-#: ultralcd.cpp:6825
+#: ultralcd.cpp:6853
 msgid "Preheat"
 msgstr "Grzanie"
 
 # MSG_WIZARD_HEATING c=20 r=3
-#: messages.c:102
+#: messages.c:100
 msgid "Preheating nozzle. Please wait."
 msgstr "Nagrzewanie dyszy. Prosze czekac."
 
+#  c=14
+#: ultralcd.cpp:1959
+msgid "PINDA"
+msgstr ""
+
 # 
 #: util.cpp:297
 msgid "Please upgrade."
 msgstr "Prosze zaktualizowac."
 
 # MSG_PRESS_TO_PREHEAT c=20 r=4
-#: Marlin_main.cpp:10382
+#: Marlin_main.cpp:11526
 msgid "Press knob to preheat nozzle and continue."
 msgstr "Wcisnij pokretlo aby rozgrzac dysze i kontynuowac."
 
+# MSG_FS_PAUSE c=5
+#: fsensor.cpp:710
+msgid "Pause"
+msgstr "Pauza"
+
 # 
-#: ultralcd.cpp:1835
+#: ultralcd.cpp:1783
 msgid "Power failures"
 msgstr "Zaniki zasilania"
 
 # MSG_PRINT_ABORTED c=20
-#: messages.c:69
+#: messages.c:65
 msgid "Print aborted"
 msgstr "Druk przerwany"
 
-# 
-#: ultralcd.cpp:2452
+#  c=20
+#: ultralcd.cpp:2442
 msgid "Preheating to load"
-msgstr "Nagrzew. do ladowania"
+msgstr "Nagrzew.do ladowania"
 
-# 
-#: ultralcd.cpp:2456
+#  c=20
+#: ultralcd.cpp:2446
 msgid "Preheating to unload"
 msgstr "Nagrzew. do rozlad."
 
 # MSG_SELFTEST_PRINT_FAN_SPEED c=18
-#: ultralcd.cpp:8414
+#: ultralcd.cpp:8689
 msgid "Print fan:"
 msgstr "WentWydruk:"
 
 # MSG_CARD_MENU
-#: messages.c:21
+#: messages.c:20
 msgid "Print from SD"
 msgstr "Druk z karty SD"
 
 # 
-#: ultralcd.cpp:2301
+#: ultralcd.cpp:2289
 msgid "Press the knob"
 msgstr "Wcisnij pokretlo"
 
 # MSG_PRINT_PAUSED c=20 r=1
-#: ultralcd.cpp:1074
+#: ultralcd.cpp:1118
 msgid "Print paused"
 msgstr "Druk wstrzymany"
 
 # 
-#: mmu.cpp:723
+#: mmu.cpp:726
 msgid "Press the knob to resume nozzle temperature."
 msgstr "Wcisnij pokretlo aby wznowic podgrzewanie dyszy."
 
 # MSG_FOLLOW_CALIBRATION_FLOW c=20 r=8
-#: messages.c:41
+#: messages.c:38
 msgid "Printer has not been calibrated yet. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Drukarka nie byla jeszcze kalibrowana. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Konfiguracja przed drukowaniem."
 
 # 
-#: ultralcd.cpp:1707
+#: ultralcd.cpp:1655
 msgid "Print FAN"
 msgstr "WentWydruk"
 
+# 
+#: ultralcd.cpp:4926
+msgid "Please insert filament into the extruder, then press the knob to load it."
+msgstr "Wsun filament do ekstrudera i nacisnij pokretlo, aby go zaladowac."
+
+# 
+#: ultralcd.cpp:4921
+msgid "Please insert filament into the first tube of the MMU, then press the knob to load it."
+msgstr "Wsun filament do pierwszego kanalu w MMU2 i nacisnij pokretlo, aby go zaladowac."
+
+# 
+#: ultralcd.cpp:4843
+msgid "Please load filament first."
+msgstr "Najpierw zaladuj filament."
+
 # MSG_PRUSA3D
-#: ultralcd.cpp:2189
+#: ultralcd.cpp:2155
 msgid "prusa3d.com"
 msgstr ""
 
 # MSG_BED_CORRECTION_REAR c=14 r=1
-#: ultralcd.cpp:3285
+#: ultralcd.cpp:3267
 msgid "Rear side [um]"
 msgstr "Tyl [um]"
 
-# MSG_RECOVERING_PRINT c=20 r=1
-#: Marlin_main.cpp:9780
+#  c=20 r=4
+#: ultralcd.cpp:7549
+msgid "Please unload the filament first, then repeat this action."
+msgstr "Najpierw rozladuj filament, nastepnie powtorz czynnosc."
+
+# MSG_RECOVERING_PRINT c=20
+#: Marlin_main.cpp:10883
 msgid "Recovering print    "
-msgstr "Wznawianie wydruku"
+msgstr "Wznawianie wydruku  "
 
-# MSG_REMOVE_OLD_FILAMENT c=20 r=4
-#: mmu.cpp:830
+# MSG_REMOVE_OLD_FILAMENT c=20 r=5
+#: mmu.cpp:833
 msgid "Remove old filament and press the knob to start loading new filament."
 msgstr "Wyciagnij poprzedni filament i nacisnij pokretlo aby zaladowac nowy."
 
-# 
+#  c=20
 #: 
 msgid "Prusa i3 MK3S OK."
-msgstr "Prusa i3 MK3S OK"
+msgstr ""
 
 # MSG_CALIBRATE_BED_RESET
-#: ultralcd.cpp:5844
+#: ultralcd.cpp:5867
 msgid "Reset XYZ calibr."
 msgstr "Reset kalibr. XYZ"
 
 # MSG_BED_CORRECTION_RESET
-#: ultralcd.cpp:3286
+#: ultralcd.cpp:3268
 msgid "Reset"
 msgstr ""
 
 # MSG_RESUME_PRINT
-#: ultralcd.cpp:6831
+#: ultralcd.cpp:6861
 msgid "Resume print"
 msgstr "Wznowic wydruk"
 
-# MSG_RESUMING_PRINT c=20 r=1
-#: messages.c:73
+# MSG_RESUMING_PRINT c=20
+#: messages.c:69
 msgid "Resuming print"
 msgstr "Wznawianie druku"
 
 # MSG_BED_CORRECTION_RIGHT c=14 r=1
-#: ultralcd.cpp:3283
+#: ultralcd.cpp:3265
 msgid "Right side[um]"
 msgstr "Prawo [um]"
 
-# MSG_SECOND_SERIAL_ON c=17 r=1
-#: ultralcd.cpp:5759
-msgid "RPi port     [on]"
-msgstr "Port RPi     [wl]"
-
-# MSG_SECOND_SERIAL_OFF c=17 r=1
-#: ultralcd.cpp:5757
-msgid "RPi port    [off]"
-msgstr "Port RPi    [wyl]"
+# MSG_RPI_PORT
+#: messages.c:123
+msgid "RPi port"
+msgstr "Port RPi"
 
 # MSG_WIZARD_RERUN c=20 r=7
-#: ultralcd.cpp:4877
+#: ultralcd.cpp:4864
 msgid "Running Wizard will delete current calibration results and start from the beginning. Continue?"
 msgstr "Wlaczenie Asystenta usunie obecne dane kalibracyjne i zacznie od poczatku. Kontynuowac?"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_OFF c=19 r=1
-#: ultralcd.cpp:5389
-msgid "SD card  [normal]"
-msgstr "Karta SD [normal]"
+# MSG_SD_CARD
+#: messages.c:118
+msgid "SD card"
+msgstr "Karta SD"
 
-# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY_ON c=19 r=1
-#: ultralcd.cpp:5387
-msgid "SD card [flshAir]"
-msgstr "Karta SD[FlshAir]"
+# MSG_TOSHIBA_FLASH_AIR_COMPATIBILITY
+#: messages.c:119
+msgid "FlashAir"
+msgstr ""
 
 # 
-#: ultralcd.cpp:3012
+#: ultralcd.cpp:2994
 msgid "Right"
 msgstr "Prawa"
 
 # MSG_FIND_BED_OFFSET_AND_SKEW_LINE1 c=60
-#: messages.c:38
+#: messages.c:35
 msgid "Searching bed calibration point"
 msgstr "Szukam punktu kalibracyjnego na stole"
 
 # MSG_LANGUAGE_SELECT
-#: ultralcd.cpp:5766
+#: ultralcd.cpp:5779
 msgid "Select language"
 msgstr "Wybor jezyka"
 
 # MSG_SELFTEST_OK
-#: ultralcd.cpp:7559
+#: ultralcd.cpp:7812
 msgid "Self test OK"
 msgstr "Selftest OK"
 
 # MSG_SELFTEST_START c=20
-#: ultralcd.cpp:7345
+#: ultralcd.cpp:7582
 msgid "Self test start  "
 msgstr "Selftest startuje"
 
 # MSG_SELFTEST
-#: ultralcd.cpp:5820
+#: ultralcd.cpp:5843
 msgid "Selftest         "
 msgstr "Selftest "
 
 # MSG_SELFTEST_ERROR
-#: ultralcd.cpp:7986
+#: ultralcd.cpp:8255
 msgid "Selftest error !"
 msgstr "Blad selftest!"
 
 # MSG_SELFTEST_FAILED c=20
-#: messages.c:77
+#: messages.c:73
 msgid "Selftest failed  "
 msgstr "Selftest nieudany"
 
 # MSG_FORCE_SELFTEST c=20 r=8
-#: Marlin_main.cpp:1548
+#: Marlin_main.cpp:1550
 msgid "Selftest will be run to calibrate accurate sensorless rehoming."
 msgstr "Zostanie uruchomiony Selftest aby dokladnie skalibrowac punkt bazowy bez krancowek"
 
 # 
-#: ultralcd.cpp:5111
+#: ultralcd.cpp:5102
 msgid "Select nozzle preheat temperature which matches your material."
 msgstr "Wybierz temperature grzania dyszy odpowiednia dla materialu."
 
-# 
-#: 
-msgid "Select PLA filament:"
-msgstr "Wybierz filament PLA:"
-
 # MSG_SET_TEMPERATURE c=19 r=1
-#: ultralcd.cpp:3304
+#: ultralcd.cpp:3286
 msgid "Set temperature:"
 msgstr "Ustaw temperature:"
 
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5 OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK2.5S OK."
+msgstr ""
+
+#  c=20
+#: 
+msgid "Prusa i3 MK3 OK."
+msgstr ""
+
 # MSG_SETTINGS
-#: messages.c:86
+#: messages.c:82
 msgid "Settings"
 msgstr "Ustawienia"
 
-# MSG_SHOW_END_STOPS c=17 r=1
-#: ultralcd.cpp:5841
+# MSG_SHOW_END_STOPS c=18
+#: ultralcd.cpp:5864
 msgid "Show end stops"
 msgstr "Pokaz krancowki"
 
 # 
-#: ultralcd.cpp:4022
+#: ultralcd.cpp:4008
 msgid "Sensor state"
 msgstr "Stan czujnikow"
 
-# MSG_FILE_CNT c=20 r=4
-#: cardreader.cpp:740
+# MSG_FILE_CNT c=20 r=6
+#: cardreader.cpp:738
 msgid "Some files will not be sorted. Max. No. of files in 1 folder for sorting is 100."
 msgstr "Niektore pliki nie zostana posortowane. Max. liczba plikow w 1 folderze = 100."
 
-# MSG_SORT_NONE c=17 r=1
-#: ultralcd.cpp:5399
-msgid "Sort       [none]"
-msgstr "Sortowanie [brak]"
+# MSG_SORT
+#: messages.c:120
+msgid "Sort"
+msgstr "Sortowanie"
 
-# MSG_SORT_TIME c=17 r=1
-#: ultralcd.cpp:5397
-msgid "Sort       [time]"
-msgstr "Sortowanie [czas]"
+# MSG_NONE
+#: messages.c:110
+msgid "None"
+msgstr "Brak"
+
+# MSG_SORT_TIME
+#: messages.c:121
+msgid "Time"
+msgstr "Czas"
 
 # 
-#: ultralcd.cpp:3055
+#: ultralcd.cpp:3037
 msgid "Severe skew:"
 msgstr "Znaczny skos:"
 
-# MSG_SORT_ALPHA c=17 r=1
-#: ultralcd.cpp:5398
-msgid "Sort   [alphabet]"
-msgstr "Sortowanie[alfab]"
+# MSG_SORT_ALPHA
+#: messages.c:122
+msgid "Alphabet"
+msgstr "Alfab"
 
 # MSG_SORTING c=20 r=1
-#: cardreader.cpp:747
+#: cardreader.cpp:745
 msgid "Sorting files"
 msgstr "Sortowanie plikow"
 
-# MSG_SOUND_LOUD c=17 r=1
-#: sound.h:6
-msgid "Sound      [loud]"
-msgstr "Dzwiek   [glosny]"
+# MSG_SOUND_LOUD
+#: messages.c:125
+msgid "Loud"
+msgstr "Glosny"
 
 # 
-#: ultralcd.cpp:3054
+#: ultralcd.cpp:3036
 msgid "Slight skew:"
 msgstr "Lekki skos:"
 
-# MSG_SOUND_MUTE c=17 r=1
-#: 
-msgid "Sound      [mute]"
-msgstr "Dzwiek[wylaczony]"
+# MSG_SOUND
+#: messages.c:124
+msgid "Sound"
+msgstr "Dzwiek"
+
+#  c=7
+#: ultralcd.cpp:1822
+msgid "Runouts"
+msgstr "Konce f"
 
 # 
-#: Marlin_main.cpp:4875
+#: Marlin_main.cpp:5101
 msgid "Some problem encountered, Z-leveling enforced ..."
 msgstr "Wykryto problem, wymuszono poziomowanie osi Z."
 
-# MSG_SOUND_ONCE c=17 r=1
-#: sound.h:7
-msgid "Sound      [once]"
-msgstr "Dzwiek    [1-raz]"
-
-# MSG_SOUND_SILENT c=17 r=1
-#: sound.h:8
-msgid "Sound    [silent]"
-msgstr "Dzwiek    [cichy]"
+# MSG_SOUND_ONCE
+#: messages.c:126
+msgid "Once"
+msgstr "1-raz"
 
 # MSG_SPEED
-#: ultralcd.cpp:7032
+#: ultralcd.cpp:7119
 msgid "Speed"
 msgstr "Predkosc"
 
 # MSG_SELFTEST_FAN_YES c=19
-#: messages.c:80
+#: messages.c:76
 msgid "Spinning"
 msgstr "Kreci sie"
 
 # MSG_TEMP_CAL_WARNING c=20 r=4
-#: Marlin_main.cpp:4373
+#: Marlin_main.cpp:4596
 msgid "Stable ambient temperature 21-26C is needed a rigid stand is required."
 msgstr "Potrzebna jest stabilna temperatura otoczenia 21-26C i stabilne podloze."
 
 # MSG_STATISTICS
-#: ultralcd.cpp:6945
+#: ultralcd.cpp:6978
 msgid "Statistics  "
 msgstr "Statystyki"
 
 # MSG_STOP_PRINT
-#: messages.c:93
+#: messages.c:91
 msgid "Stop print"
 msgstr "Przerwanie druku"
 
 # MSG_STOPPED
-#: messages.c:94
+#: messages.c:92
 msgid "STOPPED. "
 msgstr "ZATRZYMANO."
 
 # MSG_SUPPORT
-#: ultralcd.cpp:6954
+#: ultralcd.cpp:6987
 msgid "Support"
 msgstr "Wsparcie"
 
 # MSG_SELFTEST_SWAPPED
-#: ultralcd.cpp:8066
+#: ultralcd.cpp:8335
 msgid "Swapped"
 msgstr "Zamieniono"
 
-# MSG_TEMP_CALIBRATION c=20 r=1
-#: messages.c:95
-msgid "Temp. cal.          "
-msgstr "Kalibracja temp."
+# 
+#: ultralcd.cpp:4814
+msgid "Select filament:"
+msgstr "Wybierz filament:"
 
-# MSG_TEMP_CALIBRATION_ON c=20 r=1
-#: ultralcd.cpp:5753
-msgid "Temp. cal.   [on]"
-msgstr "Kalibr.temp. [wl]"
+# MSG_TEMP_CALIBRATION c=14
+#: messages.c:93
+msgid "Temp. cal."
+msgstr "Kalib. temp."
 
-# MSG_TEMP_CALIBRATION_OFF c=20 r=1
-#: ultralcd.cpp:5751
-msgid "Temp. cal.  [off]"
-msgstr "Kalibr.temp.[wyl]"
+# 
+#: ultralcd.cpp:4955
+msgid "Select temperature which matches your material."
+msgstr "Wybierz temperature, ktora odpowiada Twojemu filamentowi."
 
 # MSG_CALIBRATION_PINDA_MENU c=17 r=1
-#: ultralcd.cpp:5850
+#: ultralcd.cpp:5873
 msgid "Temp. calibration"
 msgstr "Kalibracja temp."
 
 # MSG_TEMP_CAL_FAILED c=20 r=8
-#: ultralcd.cpp:3948
+#: ultralcd.cpp:3933
 msgid "Temperature calibration failed"
 msgstr "Kalibracja temperaturowa nieudana"
 
 # MSG_TEMP_CALIBRATION_DONE c=20 r=12
-#: messages.c:96
+#: messages.c:94
 msgid "Temperature calibration is finished and active. Temp. calibration can be disabled in menu Settings->Temp. cal."
 msgstr "Kalibracja temperaturowa zakonczona i wlaczona. Moze byc wylaczona z menu Ustawienia -> Kalibracja temp."
 
+#  c=20 r=3
+#: ultralcd.cpp:7554
+msgid "Sensor verified, remove the filament now."
+msgstr "Czujnik sprawdzony, wyciagnij filament."
+
 # MSG_TEMPERATURE
-#: ultralcd.cpp:5717
+#: ultralcd.cpp:5739
 msgid "Temperature"
 msgstr "Temperatura"
 
 # MSG_MENU_TEMPERATURES c=15 r=1
-#: ultralcd.cpp:2235
+#: ultralcd.cpp:2218
 msgid "Temperatures"
 msgstr "Temperatury"
 
-# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=4
-#: messages.c:42
+# MSG_FOLLOW_Z_CALIBRATION_FLOW c=20 r=9
+#: messages.c:39
 msgid "There is still a need to make Z calibration. Please follow the manual, chapter First steps, section Calibration flow."
 msgstr "Musimy przeprowadzic kalibracje Z. Kieruj sie Samouczkiem: rozdzial Pierwsze Kroki, sekcja Kalibracja."
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2891
 msgid "Total filament"
 msgstr "Zuzycie filamentu"
 
 # 
-#: ultralcd.cpp:2901
+#: ultralcd.cpp:2892
 msgid "Total print time"
 msgstr "Laczny czas druku"
 
 # MSG_TUNE
-#: ultralcd.cpp:6822
+#: ultralcd.cpp:6850
 msgid "Tune"
 msgstr "Strojenie"
 
@@ -1356,62 +1456,62 @@ msgid "Unload"
 msgstr "Rozladuj"
 
 # 
-#: ultralcd.cpp:1804
+#: ultralcd.cpp:1752
 msgid "Total failures"
 msgstr "Suma bledow"
 
 # 
-#: ultralcd.cpp:2308
+#: ultralcd.cpp:2296
 msgid "to load filament"
 msgstr "aby zaladow. fil."
 
 # 
-#: ultralcd.cpp:2312
+#: ultralcd.cpp:2300
 msgid "to unload filament"
 msgstr "aby rozlad. filament"
 
 # MSG_UNLOAD_FILAMENT c=17
-#: messages.c:97
+#: messages.c:95
 msgid "Unload filament"
 msgstr "Rozladowanie fil."
 
 # MSG_UNLOADING_FILAMENT c=20 r=1
-#: messages.c:98
+#: messages.c:96
 msgid "Unloading filament"
 msgstr "Rozladowuje filament"
 
 # 
-#: ultralcd.cpp:1757
+#: ultralcd.cpp:1705
 msgid "Total"
 msgstr "Suma"
 
 # MSG_USED c=19 r=1
-#: ultralcd.cpp:5978
+#: ultralcd.cpp:6001
 msgid "Used during print"
 msgstr "Uzyte podczas druku"
 
 # MSG_MENU_VOLTAGES c=15 r=1
-#: ultralcd.cpp:2238
+#: ultralcd.cpp:2221
 msgid "Voltages"
 msgstr "Napiecia"
 
 # 
-#: ultralcd.cpp:2211
+#: ultralcd.cpp:2194
 msgid "unknown"
 msgstr "nieznane"
 
 # MSG_USERWAIT
-#: Marlin_main.cpp:5264
+#: Marlin_main.cpp:5511
 msgid "Wait for user..."
 msgstr "Czekam na uzytkownika..."
 
 # MSG_WAITING_TEMP c=20 r=3
-#: ultralcd.cpp:3450
+#: ultralcd.cpp:3434
 msgid "Waiting for nozzle and bed cooling"
 msgstr "Oczekiwanie na wychlodzenie dyszy i stolu"
 
 # MSG_WAITING_TEMP_PINDA c=20 r=3
-#: ultralcd.cpp:3413
+#: ultralcd.cpp:3395
 msgid "Waiting for PINDA probe cooling"
 msgstr "Czekam az spadnie temp. sondy PINDA"
 
@@ -1421,264 +1521,229 @@ msgid "Use unload to remove filament 1 if it protrudes outside of the rear MMU t
 msgstr "Uzyj opcji Rozladuj jesli filament wystaje z tylnej rurki MMU. Uzyj opcji Wysun jesli wciaz jest w srodku."
 
 # MSG_CHANGED_BOTH c=20 r=4
-#: Marlin_main.cpp:1508
+#: Marlin_main.cpp:1510
 msgid "Warning: both printer type and motherboard type changed."
 msgstr "Ostrzezenie: typ drukarki i plyta glowna ulegly zmianie."
 
 # MSG_CHANGED_MOTHERBOARD c=20 r=4
-#: Marlin_main.cpp:1500
+#: Marlin_main.cpp:1502
 msgid "Warning: motherboard type changed."
 msgstr "Ostrzezenie: plyta glowna ulegla zmianie."
 
 # MSG_CHANGED_PRINTER c=20 r=4
-#: Marlin_main.cpp:1504
+#: Marlin_main.cpp:1506
 msgid "Warning: printer type changed."
 msgstr "Ostrzezenie: rodzaj drukarki ulegl zmianie"
 
 # MSG_UNLOAD_SUCCESSFUL c=20 r=2
-#: Marlin_main.cpp:3065
+#: Marlin_main.cpp:3128
 msgid "Was filament unload successful?"
 msgstr "Rozladowanie fil. ok?"
 
 # MSG_SELFTEST_WIRINGERROR
-#: messages.c:85
+#: messages.c:81
 msgid "Wiring error"
 msgstr "Blad polaczenia"
 
 # MSG_WIZARD c=17 r=1
-#: ultralcd.cpp:5814
+#: ultralcd.cpp:5834
 msgid "Wizard"
 msgstr "Asystent"
 
-# MSG_XYZ_DETAILS c=19 r=1
-#: ultralcd.cpp:2227
+# MSG_XYZ_DETAILS c=18
+#: ultralcd.cpp:2210
 msgid "XYZ cal. details"
 msgstr "Szczegoly kal. XYZ"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_FITTING_FAILED c=20 r=8
-#: messages.c:19
+#: messages.c:18
 msgid "XYZ calibration failed. Please consult the manual."
 msgstr "Kalibracja XYZ nieudana. Sprawdz przyczyny i rozwiazania w instrukcji."
 
 # MSG_YES
-#: messages.c:104
+#: messages.c:102
 msgid "Yes"
 msgstr "Tak"
 
 # MSG_WIZARD_QUIT c=20 r=8
-#: messages.c:103
+#: messages.c:101
 msgid "You can always resume the Wizard from Calibration -> Wizard."
 msgstr "Zawsze mozesz uruchomic Asystenta ponownie przez Kalibracja -> Asystent."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_EXTREME c=20 r=8
-#: ultralcd.cpp:3919
+#: ultralcd.cpp:3904
 msgid "XYZ calibration all right. Skew will be corrected automatically."
 msgstr "Kalibracja XYZ pomyslna. Skos bedzie automatycznie korygowany."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_SKEW_MILD c=20 r=8
-#: ultralcd.cpp:3916
+#: ultralcd.cpp:3901
 msgid "XYZ calibration all right. X/Y axes are slightly skewed. Good job!"
 msgstr "Kalibracja XYZ prawidlowa. Osie X/Y lekko skosne. Dobra robota!"
 
-# 
-#: ultralcd.cpp:5197
+# MSG_TIMEOUT c=12
+#: messages.c:137
+msgid "Timeout"
+msgstr "Wyl. czas."
+
+# MSG_X_CORRECTION c=13
+#: ultralcd.cpp:5190
 msgid "X-correct:"
 msgstr "Korekcja-X:"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_PERFECT c=20 r=8
-#: ultralcd.cpp:3913
+#: ultralcd.cpp:3898
 msgid "XYZ calibration ok. X/Y axes are perpendicular. Congratulations!"
 msgstr "Kalibracja XYZ ok. Osie X/Y sa prostopadle. Gratulacje!"
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_BOTH_FAR c=20 r=8
-#: ultralcd.cpp:3897
+#: ultralcd.cpp:3882
 msgid "XYZ calibration compromised. Front calibration points not reachable."
 msgstr "Kalibr. XYZ niedokladna. Przednie punkty kalibr. nieosiagalne."
 
 # MSG_BED_SKEW_OFFSET_DETECTION_WARNING_FRONT_RIGHT_FAR c=20 r=8
-#: ultralcd.cpp:3900
+#: ultralcd.cpp:3885
 msgid "XYZ calibration compromised. Right front calibration point not reachable."
 msgstr "Kalibracja XYZ niedokladna. Prawy przedni punkt nieosiagalny."
 
 # MSG_LOAD_ALL c=17
-#: ultralcd.cpp:6236
+#: ultralcd.cpp:6261
 msgid "Load all"
 msgstr "Zalad. wszystkie"
 
 # 
-#: ultralcd.cpp:3879
+#: ultralcd.cpp:3864
 msgid "XYZ calibration failed. Bed calibration point was not found."
 msgstr "Kalibracja XYZ nieudana. Nie znaleziono punktow kalibracyjnych."
 
 # 
-#: ultralcd.cpp:3885
+#: ultralcd.cpp:3870
 msgid "XYZ calibration failed. Front calibration points not reachable."
 msgstr "Kalibr. XYZ nieudana. Przednie punkty kalibr. nieosiagalne. Nalezy poprawic montaz drukarki."
 
 # 
-#: ultralcd.cpp:3888
+#: ultralcd.cpp:3873
 msgid "XYZ calibration failed. Right front calibration point not reachable."
 msgstr "Kalibr. XYZ nieudana. Prawy przedni punkt nieosiagalny. Nalezy poprawic montaz drukarki."
 
 # 
-#: ultralcd.cpp:3009
+#: ultralcd.cpp:2991
 msgid "Y distance from min"
 msgstr "Dystans od 0 w osi Y"
 
 # 
-#: ultralcd.cpp:5198
+#: ultralcd.cpp:4958
+msgid "The printer will start printing a zig-zag line. Rotate the knob until you reach the optimal height. Check the pictures in the handbook (Calibration chapter)."
+msgstr "Drukarka zacznie drukowanie linii w ksztalcie zygzaka. Ustaw optymalna wysokosc obracajac pokretlo. Porownaj z ilustracjami w Podreczniku (rozdzial Kalibracja)."
+
+#  c=20 r=5
+#: ultralcd.cpp:7558
+msgid "Verification failed, remove the filament and try again."
+msgstr "Niepowodzenie sprawdzenia, wyciagnij filament i sprobuj ponownie."
+
+# MSG_Y_CORRECTION c=13
+#: ultralcd.cpp:5191
 msgid "Y-correct:"
 msgstr "Korekcja-Y:"
 
 # MSG_OFF
-#: menu.cpp:426
-msgid " [off]"
-msgstr " [wyl]"
+#: messages.c:105
+msgid "Off"
+msgstr "Wyl"
+
+# MSG_ON
+#: messages.c:106
+msgid "On"
+msgstr "Wl"
 
 # 
-#: messages.c:57
+#: messages.c:53
 msgid "Back"
 msgstr "Wstecz"
 
 # 
-#: ultralcd.cpp:5706
+#: ultralcd.cpp:5724
 msgid "Checks"
 msgstr "Testy"
 
 # 
-#: ultralcd.cpp:8080
+#: ultralcd.cpp:8349
 msgid "False triggering"
 msgstr "Falszywy alarm"
 
 # 
-#: ultralcd.cpp:4027
+#: ultralcd.cpp:4013
 msgid "FINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:5612
-msgid "Firmware   [none]"
-msgstr "Firmware   [brak]"
+# MSG_FIRMWARE
+#: language.h:23
+msgid "Firmware"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5618
-msgid "Firmware [strict]"
-msgstr "Firmware [restr.]"
+# MSG_STRICT
+#: messages.c:112
+msgid "Strict"
+msgstr "Restr."
 
-# 
-#: ultralcd.cpp:5615
-msgid "Firmware   [warn]"
-msgstr "Firmware[ostrzez]"
+# MSG_WARN
+#: messages.c:111
+msgid "Warn"
+msgstr "Ostrzez"
 
 # 
-#: messages.c:87
+#: messages.c:83
 msgid "HW Setup"
 msgstr "Ustawienia HW"
 
 # 
-#: ultralcd.cpp:4031
+#: ultralcd.cpp:4017
 msgid "IR:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:7152
-msgid "Magnets comp.[N/A]"
-msgstr "Kor. magnesow[N/D]"
+# MSG_MAGNETS_COMP
+#: messages.c:130
+msgid "Magnets comp."
+msgstr "Kor. magnesow"
 
-# 
-#: ultralcd.cpp:7150
-msgid "Magnets comp.[Off]"
-msgstr "Kor. magnesow[wyl]"
+# MSG_MESH
+#: messages.c:128
+msgid "Mesh"
+msgstr "Siatka"
 
 # 
-#: ultralcd.cpp:7149
-msgid "Magnets comp. [On]"
-msgstr "Kor. magnesow [wl]"
-
-# 
-#: ultralcd.cpp:7141
-msgid "Mesh         [3x3]"
-msgstr "Siatka       [3x3]"
-
-# 
-#: ultralcd.cpp:7142
-msgid "Mesh         [7x7]"
-msgstr "Siatka       [7x7]"
-
-# 
-#: ultralcd.cpp:5744
+#: ultralcd.cpp:5763
 msgid "Mesh bed leveling"
 msgstr "Poziomowanie stolu"
 
 # 
-#: Marlin_main.cpp:852
+#: Marlin_main.cpp:872
 msgid "MK3S firmware detected on MK3 printer"
 msgstr "Wykryto firmware MK3S w drukarce MK3"
 
-# 
-#: ultralcd.cpp:5373
-msgid "MMU Mode [Normal]"
-msgstr "Tryb MMU[Normaln]"
+# MSG_MMU_MODE
+#: messages.c:117
+msgid "MMU Mode"
+msgstr "Tryb MMU"
 
 # 
-#: ultralcd.cpp:5374
-msgid "MMU Mode[Stealth]"
-msgstr "Tryb MMU[Stealth]"
-
-# 
-#: ultralcd.cpp:4508
+#: ultralcd.cpp:4494
 msgid "Mode change in progress ..."
 msgstr "Trwa zmiana trybu..."
 
-# 
-#: ultralcd.cpp:5573
-msgid "Model      [none]"
-msgstr "Model      [brak]"
-
-# 
-#: ultralcd.cpp:5579
-msgid "Model    [strict]"
-msgstr "Model [restrykc.]"
-
-# 
-#: ultralcd.cpp:5576
-msgid "Model      [warn]"
-msgstr "Model  [ostrzez.]"
-
-# 
-#: ultralcd.cpp:5534
-msgid "Nozzle d.  [0.25]"
-msgstr "Sr. dyszy  [0,25]"
-
-# 
-#: ultralcd.cpp:5537
-msgid "Nozzle d.  [0.40]"
-msgstr "Sr. dyszy  [0,40]"
-
-# 
-#: ultralcd.cpp:5540
-msgid "Nozzle d.  [0.60]"
-msgstr "Sr. dyszy  [0,60]"
-
-# 
-#: ultralcd.cpp:5488
-msgid "Nozzle     [none]"
-msgstr "Dysza      [brak]"
-
-# 
-#: ultralcd.cpp:5494
-msgid "Nozzle   [strict]"
-msgstr "Dysza [restrykc.]"
+# MSG_MODEL
+#: messages.c:113
+msgid "Model"
+msgstr ""
 
-# 
-#: ultralcd.cpp:5491
-msgid "Nozzle     [warn]"
-msgstr "Dysza  [ostrzez.]"
+# MSG_NOZZLE_DIAMETER
+#: messages.c:116
+msgid "Nozzle d."
+msgstr "Sr. dyszy"
 
 # 
 #: util.cpp:514
 msgid "G-code sliced for a different level. Continue?"
-msgstr ""
+msgstr "G-code pociety dla innej wersji. Kontynuowac?"
 
 # 
 #: util.cpp:520
@@ -1706,19 +1771,19 @@ msgid "G-code sliced for a newer firmware. Please update the firmware. Print can
 msgstr "G-code pociety dla nowszego firmware. Zaktualizuj firmware. Druk anulowany."
 
 # 
-#: ultralcd.cpp:4023
+#: ultralcd.cpp:4009
 msgid "PINDA:"
 msgstr ""
 
-# 
-#: ultralcd.cpp:2462
+#  c=20
+#: ultralcd.cpp:2452
 msgid "Preheating to cut"
-msgstr "Nagrzewanie do obciecia"
+msgstr "Nagrzew. obciecia"
 
-# 
-#: ultralcd.cpp:2459
+#  c=20
+#: ultralcd.cpp:2449
 msgid "Preheating to eject"
-msgstr "Nagrzewanie do wysuniecia"
+msgstr "Nagrzew. wysuniecia"
 
 # 
 #: util.cpp:394
@@ -1730,57 +1795,48 @@ msgstr "Srednica dyszy drukarki rozni sie od tej w G-code. Kontynuowac?"
 msgid "Printer nozzle diameter differs from the G-code. Please check the value in settings. Print cancelled."
 msgstr "Srednica dyszy rozni sie od tej w G-code. Sprawdz ustawienia. Druk anulowany."
 
+#  c=20
+#: ultralcd.cpp:8355
+msgid "%s level expected"
+msgstr "Oczekiwano wersji %s"
+
 # 
-#: ultralcd.cpp:6786
+#: ultralcd.cpp:6814
 msgid "Rename"
 msgstr "Zmien nazwe"
 
 # 
-#: ultralcd.cpp:6779
+#: ultralcd.cpp:6807
 msgid "Select"
 msgstr "Wybierz"
 
 # 
-#: ultralcd.cpp:2229
+#: ultralcd.cpp:2212
 msgid "Sensor info"
 msgstr "Info o sensorach"
 
-# 
-#: messages.c:58
+# MSG_SHEET c=10
+#: messages.c:54
 msgid "Sheet"
 msgstr "Plyta"
 
-# 
-#: sound.h:9
-msgid "Sound    [assist]"
-msgstr "Dzwiek   [asyst.]"
+# MSG_SOUND_BLIND
+#: messages.c:127
+msgid "Assist"
+msgstr "Asyst."
 
-# 
-#: ultralcd.cpp:5704
+#  c=18
+#: ultralcd.cpp:5722
 msgid "Steel sheets"
 msgstr "Plyty stalowe"
 
-# 
-#: ultralcd.cpp:5199
+# MSG_Z_CORRECTION c=13
+#: ultralcd.cpp:5192
 msgid "Z-correct:"
 msgstr "Korekcja-Z:"
 
-# 
-#: ultralcd.cpp:7144
-msgid "Z-probe nr.    [1]"
-msgstr "Ilosc Pomiarow [1]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-msgstr "Ilosc Pomiarow [3]"
-
-# 
-#: ultralcd.cpp:7146
-msgid "Z-probe nr.    [3]"
-
-# 
-#: ultralcd.cpp:7145
-msgid "Z-probe nr.    [5]"
-msgstr "Ilosc Pomiarow [5]"
+# MSG_Z_PROBE_NR
+#: messages.c:129
+msgid "Z-probe nr."
+msgstr "Ilosc Pomiarow"