3.10.1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Hello all!
We are happy to announce the release of the new 3.10.1 firmware for our MK series of printers. All the information, download, and installation instructions are below.
Summary
- New debugging functions & crash analysis tools
- A rare memory bug debugged and fixed
- Long-Press action fixed
- Move auto reporting out of the temperature ISR
- Uint8_t used consistently for the block buffer's index
- Arduino boards definition updated
- Build script updated
- Algorithm for reading SN in EEPROM improved
- Spanish translation fixed
- Firmware version parsing removed
- Bug fixes
This is the final release of firmware 3.10.1, which introduces improved functionality and several bug fixes. These release notes also include information provided in the previous release RC1.
Before we describe all the new features, improvements and changes, we would like to thank the entire Prusa community members for their feedback - especially @gudnimg and @Panayiotis-git who helped us test and debug this firmware release. Your input is very much appreciated!
New debugging functions & crash analysis tools
The "Dump memory" feature is a very important new debugging support tool. It allows you to store the RAM content into the xFlash memory for further issue/bug analysis, just like we have in the Buddy firmware for the MINI+. This procedure has proven vital for identifying the rare bug of “static memory overwritten”.
MK3, MK3S and MK3S+
This feature is now accessible from the printer’s Display menu Support-> Dump memory, which is the last command within the Support menu.
The dump command is also available during an active print, which allows the user to execute an actual Memory "Snapshot" during a critical status or misbehavior of the printer. You will find it under LCD Menu -> Support -> Dump memory display menu. Please note that the snapshot takes some time to finish, therefore we advise not to use this feature if you are not experiencing any problems - i.e. the printer will stop for a while to dump the memory.
Also, to allow for simpler usage of this function, we put it at the end of the support menu for now. If it was hidden somewhere deep, a user experiencing an issue may hot reach this option quickly.
When you have connected a serial device like Pronterface or Octoprint, you can use the following commands via the serial link:
- D20 - create memory dump on xFlash (same as LCD Menu -> Support -> Dump memory)
- D21 - download/print the memory dump via the serial link. This is the only way to get the Dump from the printer. Warning: please be aware not to connect the serial link during print as it can restart the printer and break the recent printing job
- D22 - clear the current memory dump in the printer
The crash dump to xFlash is active at any time, it is stored in xFlash and can be downloaded even after the system reboot until a new D22 command is sent to the printer.
MK2.5, MK2.5S and MK2.5S+
The MK2.5 series does not contain the xFlash, so the situation is different. The dump cannot be stored but it can be sent down to a serial link. In order to get the memory dump from the printer, there must be a serial link connection available prior to any dump download. In default, the LCD Menu -> Support -> Dump to serial and crash dump are disabled after printer restart. To get the dump the following process has to be followed and serial commands used:
- Connect the serial link to Printer. As the serial link connection restarts the Printer, it has to be done before any further activity.
- Using the D23 command from the serial link enables the crash dump by setting the crash dump flag and activates the LCD Menu -> Support-> Dump to serial display menu.
- D23 R command disables the crash dump and removes the LCD Menu -> Support-> Dump to serial display menu.
- The command D23 E - sends the Dump down to the serial link immediately and resets the printer.
- Command D20, D21, D22 are ignored.
- The Dump to serial command should be available even during print and should be found again under LCD Menu -> Support-> Dump to serial display menu.
Please note, that in this release the “Dump memory” function is currently not fully working on the MK2.5 series. After the memory Dump is successfully sent down to the serial link the printer is freezing during Booting and you can see the following or similar:
To resolve the situation at the current firmware build, push the HW reset button below the knob and the printer will restart. We are working on a workaround, this feature should be fully functional in the future firmware release. Should you find any other issues, please let us know.
A rare memory bug debugged and fixed
We have noticed several issues with unpredictable and non-replicable behavior like preheat menu loop when the printer was powered on with already loaded filament. Unpredictability and non-replicability made the root cause identification very hard. Recently we believe we found the major root cause. Its explanation is rather technical, but there’s really no other way to describe it.
The bug was not directly in our firmware, but we believe we ran into a bug in the link-time code generation stage of GCC 4.9.2 (bundled with PF-build-env-1.0.6.*) with optimization for size. The generated code could then partially overwrite the stack, which obviously resulted in random behavior. A workaround was found to avoid this bug by not allowing some functions to get inlined, even when they were used at one spot only.
We believe this is the main reason behind issues #3147, #3151, #3175 and probably others. We have verified that the code generation issue was also present in 3.9.3 already and probably in older FW versions as well. We have been able to track the problem down to FW 3.8.0, it may have been there even longer.
For more detailed technical description see please: #3202
However, since we haven't been able to reproduce ANY of those issues mentioned above in-house during our tests, we kindly ask the community for help. To help with tracing those malfunctions, you can use the debugging tool described at the very beginning of these release notes.
Please, report any of those potential issues you discover on GitHub and attach the Crash Dump file.
Long-Press action fixed
In the previous releases, the LCD knob "Long press" action was monitored and executed within the temperature control loop Interrupt Service Routine (ISR). This operation could under some circumstances destroy the menu buffer and create the menu itself inconsistently.
This change improves the printer reaction when the user is applying the "Long press" action (move Z etc. ). The main change is that the jog wheel "Long press" execution part has been moved to the main program loop. The temperature control loop is now exclusively dedicated to its generic task - temperature control.
Move auto reporting out of the temperature ISR
This change is similar to the Long-Press action described above. The code running in the temperature Interrupt Service Routine (ISR) needs to be fully reentrant, which is hard to keep for other than Temperature control tasks.
For this reason, the auto reporting (response to M155) is moved to the main processing loop. This can make the auto reporting slower or irregular but removes the reentrant restriction, which allows to use “printf_P” to serial port and to keep Temperature ISR only for temperature control.
For more information head to: #3180
Uint8_t used consistently for the block buffer's index
We have identified and fixed another potential problem in the planner’s block buffer. The index was sometimes computed as an int (2 bytes), sometimes as 1-byte uint8_t. On the AVR working with 2-byte integers, this is generally not an atomic operation, because it takes multiple instructions to perform. Since it has been possible, all indices of the block buffer are now referenced as 1-byte uint8_t.
Arduino boards definition updated
The developers have merged several pull requests from the community. These commits changed the logic for parts of the code that are dependent on the board version, moving that dependent information directly to the boards.txt file. This simplifies the board version-dependent actions to be done by the compiler and makes them more transparent. Other compilation optimization changes have been made as well. This will not change the printer functionality but the built code quality and bug tracking is improved. The board definition was updated to v1.0.4.
For more detailed information, see please links below:
- prusa3d/Arduino_Boards#8
- prusa3d/Arduino_Boards#10
- prusa3d/Arduino_Boards#11
- prusa3d/Arduino_Boards#12
Build script updated
For our community members, who besides printing also enjoy coding, we have updated our build script to version 2.0, which focuses on improving the MK404 project, which is an MK3 printer family simulator. Adding this project to the PF-build.sh will enable users to compile the Prusa-Firmware and immediately start the simulator with the correct hex file and correct printer.
The credit for this great simulator goes to VintagePC.
Algorithm for reading SN in EEPROM improved
Another significant improvement is a Serial Number (SN) reading algorithm change from the 32u2 communication chip. When reading the SN, the code is expected to start with the standard "CZPX" prefix used for all Prusa printers worldwide. Unsuccessful attempts are repeated until a valid SN is read.
Spanish translation fixed
A tiny contribution from our community on improving wording in Spanish translation. Specifically for the text string: "Was filament unload successful?".
Firmware version parsing removed
This FW optimization has saved 936 bytes of Flash memory which is very important in the already critically occupied XFlash memory.
Bug fixes
Temperature display glitch
This bug is related only to 3.10.1-RC, where after a manual filament update the printer might display the hotend temperature at the top row of the screen, even though the user was in a different part of the menu.
We would like to thank user Panayiotis-git for reporting this issue and providing a suggestion for a fix. More information can be found in the following pull requests PR#3214 and PR#3303.
Build error if TMC service code is enabled fixed
In case you are building your own firmware from the code with parameter TMC2130_SERVICE_CODES_M910_M918, then the build process resulted in an error. This bug was introduced recently to 3.10.1-RC.
We would like to thank user gudnimg for reporting this issue and providing a suggestion for a fix. More information can be found in the following pull requests PR#3285 and PR#3304. This fixes the issue #3284.
Premature file list closure fixed
In certain scenarios, the folder/file list opened and closed immediately after the SD card was inserted, which required the user to reinsert the card again. This was happening due to a timeout and the current fix is making sure lcd_timeoutToStatus.start() is called in the specific case when the SD card is inserted into the printer after it was removed beforehand.
We would like to thank again user gudnimg for reporting this issue and providing a suggestion for a fix. More information can be found in the following pull requests PR#3269 and PR#3305.
Occasional missing error message
In the initial release 3.10.1-RC1 our testing team was able to achieve a specific scenario (either Preheat error or Thermal runaway), when the printer correctly turned off the heating, but the error message was not displayed. The developers have found and fixed this issue.
"Preheating to load" screen behavior fixed
During the Load filament process, the printer was waiting for the preset temperature and displayed the "Preheating to load" message. When the user removed the SD card, the previous message was replaced by the message "Card removed" but the Preheating process still did not finish, so the lasting displayed message was not correct. Now after this and similar action the “Preheating to load" message is redrawn again which is the correct Process status Message.
Message on boot while inserting SD card fixed
When the user inserted the SD card during the booting process, the "Sorting files" message was presented twice on the display later followed by the correct "Print from SD menu" message. The issue has been reported on GitHub issue #3135 and clearly reproduced.
We have fixed the SD card handling while booting scenario, which corrected the double "Sorting files" message. Now the system works correctly.
Please report any bug here:
https://github.com/prusa3d/Prusa-Firmware/issues
Download Link:
https://github.com/prusa3d/Prusa-Firmware/releases/tag/v3.10.1
How to flash the firmware:
https://help.prusa3d.com/en/article/firmware-updating-mk3s-mk3s-mk3_2227
As always, we wish you happy printing!
Shane (AKA FromPrusa)
RE:
Hi there, I would like to give some feedback here. The MK3S+ is a great printer, no question about it. The following is complained about: - unreasonably long waiting time via email from support - no implementation of suggestions - Useless features in 2.4.0 and Beta1 - unbalanced update 3.10.0 / 1 - the print quality has become very bad - the nozzle constantly draws filament - Update to 2.4.0 forces to update 3.10.0 because "wrong g-code" - Test strip in front of the bed is now printed twice in the entire width - often it is only printed or sold later - Chamfers, radii and much more. is not printed correctly - Dimensions are no longer correct - Stringing has increased dramatically - Surface has a rough, poor quality - Leave settings on default and compared with tips on the internet -> Ok, values are correct - What is the "ironing" option doing in the "Infill" area? - the free filament when buying orange is extremely poor winding and quality, actually belongs in the garbage - Most of the other roles are wound very badly - Filament, in my case "Lime Green" is constantly sold out, an absolute no-go If Prusa makes oh such high quality printers, why do so many users have so many problems, whether ready-made or as a kit. I would ask quality management about that Overall, I have to give updates 2.4.0 and 3.10.0/1 very bad marks. In relation to the purchase price, I also own the MM2U, I am not suitable for beta testing hardware and software. I also offered Prusa to work as a beta tester / permanent employee with no guarantee of a move, but was arrogantly rejected. All in all, my two Creality CR-6 SE are currently printing in a higher quality, more dimensionally accurate and more reliable than the MK3s+, which is 3 times as expensive. I would appreciate a TIMELY qualitative feedback and working updates. Because I had absolutely no problems with 2.3.3 and 3.9.3 and was extremely satisfied. If you want to keep me as a continued satisfied user, you should take appropriate action. For now, the Prusa just frustrates me. I'd have a lot more feedback, but I'll save that for later. If you want me to picture, please let me know.... Greetings Kai Busch, Germany (Owner of an MK3S+ since March 2021)
Printer: CR-6 SE (2x) / MK3S+ (incl. MMU2) / MK4 - Slicer: Prusa / Cura - Design: Catia - Homepage: https://www.gravitrax-forum.de (it´s a ball / marble track)
RE: 3.10.1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
I'm no expert (just a happy camper) on Prusa Slicer or Prusa Printers, however, I have had my MK3S+ for about 6 months and I can say it's years ahead of any of the plethora of CCP Enders and Anycubic printers I have owned since getting into this hobby(about a year and a half). Compared to those, I can only say this. I have not had to chase the aftermarket parts dream trying to make the printer function like it should from the factory. For me, in terms of slice, send to Octoprint and not worry, this is the one. Having said that. Kai, you do strike home with a few points.
- unreasonably long waiting time via email from support**I can't speak to this as I have only used the forum and chat for help, which is consistently spot on.
- Useless features in 2.4.0 and Beta1**I'm personally curious what these are. I probably don't use, like Microsoft Word, 3/4 of the "features"
- the nozzle constantly draws filament ** Can you explain that? Maybe I'm missing something. I do have an MMU2 connected
- Surface has a rough, poor quality**Rough in what way, I'm not doubting you, I'm just trying to learn here.
- What is the "ironing" option doing in the "Infill" area?**Now this I understand and I thought was weird as well.
- If Prusa makes oh such high quality printers, why do so many users have so many problems, whether ready-made or as a kit. **I built mine and apart from a mistake I made during the build I have had no issues.
- For now, the Prusa just frustrates me.**My feelings are the opposite with regard to my Ender 3v2 and 3 Max, both of which are more American now than CCP due to the aftermarket upgrades I made.
Personally the experience has been pretty smooth. I think the naming convention on firmware update files could be a little more clear, at least to me. Not a fan boy or anything but I do appreciate the corporate support videos on YouTube versus what you get from CCP vendors which is, well, nothing. Prusa products are pretty well documented. Anyway, since we can't seem to make metal or aluminum extrusion parts in the USA for some reason I'm happy to support Prusa vice anyone else. I don't buy Prusa filament because I have two companies that I procure from in the states that are 100% soup to nuts producing great filament. The Prusa filament I have procured seems as good as any other high quality filament.
RE: 3.10.1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
If you cannot speak to most of them, why do you comment?
Even it is not really helpful to know that you do not have any problems or comes along my comments, suggestions!!!
Before I was updating to 2.4.0 and 3.10.0/1 I was really satisfied....
Printer: CR-6 SE (2x) / MK3S+ (incl. MMU2) / MK4 - Slicer: Prusa / Cura - Design: Catia - Homepage: https://www.gravitrax-forum.de (it´s a ball / marble track)
RE:
See my comments directly in the quoted text of the OP, starting with "-->".
Hi there, I would like to give some feedback here. The MK3S+ is a great printer, no question about it. The following is complained about: - unreasonably long waiting time via email from support --> It's known that you should use direct chat over eMail. Besides: Did you sign a contract guaranteeing you a certain reaction time via eMail? - no implementation of suggestions --> Do you have concrete examples for that statement? You can not expect that _you_ make a suggestion and it would be implemented immediately or at all. Many people make suggestions and some are valid and good, others less so and yet others are not possible at all. - Useless features in 2.4.0 and Beta1 --> I beg to differ. 2.4.0 brought a serious improvement in the support structure area for me. For others, there have been improvements as well. Just because _you_ did not find anything useful, does not mean that the features offered in 2.4.0 are useless. - unbalanced update 3.10.0 / 1 --> Do you have a concrete example for why you make this bold statement? Besides - you are aware of the firmware memory limits the Mk3 series of printers is currently approaching, aren't you?! - the print quality has become very bad --> Did you change anything else on your printer setup, such as e.g. using a new print bed, which you had to dial in? Or could it be that you are experiencing issues because of colder temperatures at this time of the year? I experienced some problems with bed adhesion, which completely went away after I put the Mk3 into a housing. - the nozzle constantly draws filament --> That indeed is a problem I only knew from my CR6SE and that I'd love to see fixed again. - Update to 2.4.0 forces to update 3.10.0 because "wrong g-code" --> IIRC that has been explained somewhere. If memory serves me correctly, they added a bigger chunk of information into the gcode (similar to what the Mini already used) and the older firmware can't recognize this new, bigger info block and thus the FW upgrade is required. - Test strip in front of the bed is now printed twice in the entire width --> I can not confirm this. - often it is only printed or sold later --> Huh? What do you mean here? - Chamfers, radii and much more. is not printed correctly --> No problems here so far. Perhaps a filament issue on your side? Any concrete cases you could tell / make a picture of and put it here? - Dimensions are no longer correct --> What does that mean? Did you check your belt tension? - Stringing has increased dramatically --> Can't confirm that. Perhaps something else is wrong? Nozzle worn (did you print abrasive filament?) or belt tension out of recommended boundaries?! IIRC there is a check for that embedded into the firmware. - Surface has a rough, poor quality --> Can't confirm. Could be other factors (wrong z, belts, nozzle, filament ...) - Leave settings on default and compared with tips on the internet -> Ok, values are correct - What is the "ironing" option doing in the "Infill" area? --> Perhaps a glitch? Or perhaps the notion that ironing is doing some infill to the gaps between normal lines?! *shrug* - the free filament when buying orange is extremely poor winding and quality, actually belongs in the garbage --> Do you have a picture of this? It sounds like you exaggerate due to your frustration. - Most of the other roles are wound very badly --> Can't confirm. - Filament, in my case "Lime Green" is constantly sold out, an absolute no-go --> Oh, so you are entitled to have filament available whenever you deem it necessary to buy? But you DID notice that there's a pandemic still going on outside, didn't you?! And other people may also be interested in lime green, so first come, first serve. Other brands can still deliver - even with convenient next-day-delivery on Amazon ... -- If Prusa makes oh such high quality printers, why do so many users have so many problems, whether ready-made or as a kit. --> Define "many" users. And relate it to the number of Prusa printers sold. And then look at the issues people have with Creality printers ... Hint: Creality is worse! -- I would ask quality management about that Overall, I have to give updates 2.4.0 and 3.10.0/1 very bad marks. In relation to the purchase price, I also own the MM2U, I am not suitable for beta testing hardware and software. --> MMU is infamous for requiring tinkering. You did not do a proper research prior to purchase. -- I also offered Prusa to work as a beta tester / permanent employee with no guarantee of a move, but was arrogantly rejected. --> WOW! How does your ego still fit into your flat? A person like you is probably toxic for any team he works in. -- All in all, my two Creality CR-6 SE are currently printing in a higher quality, more dimensionally accurate and more reliable than the MK3s+, which is 3 times as expensive. --> Then why did you buy an Mk3 in the first place? With Prusa, you also pay for the complete eco system, predefined filament profiles, good support (via chat), slicer development, support & knowledge database, localization and so much more. Creality can offer nothing even remotely comparable! Take a creality printer out of the box and start to print without tedious dialing-in - see how far that'll bring you. Without the community firmware and support, the CR6 offers a very poor user experience. And it is significantly SLOWER. -- I would appreciate a TIMELY qualitative feedback and working updates. Because I had absolutely no problems with 2.3.3 and 3.9.3 and was extremely satisfied. --> Then roll back to the combination you were satisifed with. And/Or try a different slicer. -- If you want to keep me as a continued satisfied user, you should take appropriate action. --> I'm no Prusa employee, but I think Prusa prefers you to sell the MK3 (they keep their value quite well) and stick to your Creality printers. Because you are happy with those and Creality is famous for its superb support, after all ... Oh wait! -- For now, the Prusa just frustrates me. I'd have a lot more feedback, but I'll save that for later. --> If you would be able to add some substance to your "feedback", it could benefit both Prusa and other users. As it is, I see much QQ and little backup for your claims. I also criticize Prusa for certain things, but I can not share most of your accusations up there. Especially not the wording. Kleiner Tip: Du bist NICHT der Nabel der Welt ... -- If you want me to picture, please let me know.... Greetings Kai Busch, Germany (Owner of an MK3S+ since March 2021)
RE: 3.10.1 Firmware for MK3, MK3S, MK3S+, MK2.5 and MK2.5S
Nice comment, but I´m not able to comment at all, in whatever language.
Prusa Support takes a lot of time, tooooooo much time. Forum isn´t really better.
Prusa Printer was the last bought printer. Though, I buy high quality.
However, most people are going to measure me.... why? I have many opinion, fact!!
Anyway, the only missing help I need how can I stop the running noozle!!!
-> Wasn´t before I update. I could rollback, sure, but why? If I update again, get into have same problems....
Thanks at all and don´t worry and be sure, I could be friendly 😉
Printer: CR-6 SE (2x) / MK3S+ (incl. MMU2) / MK4 - Slicer: Prusa / Cura - Design: Catia - Homepage: https://www.gravitrax-forum.de (it´s a ball / marble track)