github prusa3d/Prusa-Firmware-Buddy v4.4.0-beta2
4.4.0-BETA2 Firmware for Original Prusa MINI/MINI+

latest releases: v6.2.0-alpha2, v6.2.0-alpha1, v6.1.3...
pre-release2 years ago

Summary

  • Support for Wi-Fi (ESP-01 & ESP-01S)
  • PrusaLink updated
  • Network menu updated
  • Networking improvements
  • GUI improvements

This is a beta release dedicated to experienced users. Some features in this firmware are still being developed and might not behave as expected. Use GitHub and forums to report any issues.

ATTENTION: Before you rush flashing new firmware, please note that this time, there are two files needed on the USB flash drive. Both firmware and bootloader must be updated!

Support for Wi-Fi (ESP-01 & ESP-01S)

The MINI+ can be connected to the network using an Ethernet cable. In this release, we are adding support for Wi-Fi via ESP-01 (ESP8266). Please read the following paragraphs carefully. We have streamlined the entire process as much as possible, however, it is necessary to know which ESP hardware to use and how to set up the connection.

Brief history of development

On paper, connecting MINI to the Wi-Fi network seemed easy. However, in reality, the task required a complete overhaul of almost everything. First, the firmware for the ESP itself provided by the manufacturers wasn't working as expected. During the tests, we encountered random packet losses, feature limitations (max 5 sockets at once) and constant disconnects. Therefore our developers have written a brand new firmware for the ESP board to ensure better stability and performance.

Second, the communication between the printer and the Wi-Fi module based on ESP8266 proved to be a source of issues and almost the entire networking (ISO-OSI stack) had to be written from scratch to achieve a smooth transfer of data across the Buddy board into the USB flash drive. Another important step was to ensure that the user can switch between the Ethernet and Wi-Fi almost seamlessly.

Third, saving data on the USB flash drive is still not at the expected level. Although the data transfer rate through the Wi-Fi is reasonable, saving received parts of the G-code file onto the USB drive is affected by a bottleneck. The devs are aware of this issue and are working on finding a fix.

Fourth, all these changes mentioned above have resulted in a need to update the bootloader. It’s something the MINI platform wasn't initially designed for, so it introduced new challenges. The developers have found a solution and made the updating process fully automatic (more information below).

Overall, enabling Wi-Fi on the MINI platform proved to be a very difficult task. We learned a lot during the development and we would like to share our experience and discoveries - you can expect a dev-diary on our Prusa blog with a detailed technical explanation soon.

Hardware prerequisites

The ESP8266 is quite popular among other devices, especially in IoT (internet of things), therefore there are multiple manufacturers and also two hardware revisions. We have purchased several Wi-Fi modules from different producers and our internal tests haven't shown any significant differences, however, as with any other product, not all might be equal. For this reason, we are sharing the data from our measurements in this spreadsheet and we would appreciate it if the community would join us.

Regarding hardware revisions, there are two, ESP-01 and ESP-01S. Both differ in memory size (512 kB vs 1 MB flash) and assembly of the LED. During the tests, we haven't discovered any functional differences between them. However, it is recommended to purchase the higher memory (1 MB flash).

Firmware prerequisites

As explained above in the history section, enabling Wi-Fi requires updating both bootloader and firmware. Note that this time you need to include two separate .bbf files on the USB drive. The printer will automatically load both of them and do all the work in the background. Since this update overwrites almost the entire memory of the printer, the update might take up to 15-20 minutes.

Step by step guidance

The first encounter with the Wi-Fi flashing procedure might be tricky and this is why we have created a dedicated Wi-Fi guide, which will take you through the process step by step, similar to our assembly manuals.

Read the manual first before you start flashing the printer. In case you run into issues, please use our forum, where we have created a dedicated section and developers will be checking in on a regular basis.

Expected transfer speeds

There are multiple factors affecting the overall performance (signal quality, USB flash drive speed, etc.) and the firmware is currently still not fully optimized. For now, the expected transfer speed from your computer to the printer should be around 250-300 KB/s over the Ethernet and 45-100 KB/s over the Wi-Fi.

Known issues

While updating the printer, flashing the ESP, or connecting the Wi-Fi network the process might take too long (30 mins or more). To resolve this issue, turn the printer OFF and ON again as restarting might not be enough. Don't worry, the printer won't get bricked. Developers will fix this behavior in a future release.

PrusaLink updated

MINI+ is running a PrusaLink service, which is a cornerstone for future networking capabilities. Once the printer is connected to the local network, PrusaLink is accessible via an internet browser. Look in the Menu -> Settings -> Network and rewrite the IP address.

Until now, PrusaLink was providing read-only data about the printer (temperatures, fan RPM, speed, etc.). Starting this release we are adding new features. The major change is the ability to upload G-codes. This can be done through a web interface (see our guide for PrusaLink) or using PrusaSlicer. To ensure that it is you, who is sending the file, you must input an API key, which can be found in Menu -> Settings -> Network -> PrusaLink -> Current API key.

Besides uploading files, the PrusaLink web interface for MINI+ is also capable of:

  • Start print*
  • Pause/Stop print
  • Browse through G-codes, which are on the printer
  • Download G-codes from the printer
  • Delete G-code

*MINI+ must be on the home screen, “print-preview” screen, “print-finished” screen - this is intentional for safety reasons

Network menu updated

Due to the completely new or updated features described above, the “Network” menu was also updated. There are new menu items allowing you to set the new features based on your preferences. The list now contains these added items:

  • PrusaLink
    • Enabled [ON/OFF]
    • Generate API key
    • Current API key
  • Interface
    • Wi-Fi (enables the ESP module)
    • Eth (switches to Ethernet)
    • OFF (disables both interfaces)
  • IP (displays the current IP address)
  • MAC (displays MAC of the active interface)
  • Ethernet
    • Protocol (please note currently only IPv4 is supported)
    • LAN [DHCP/Static]
    • IP (assigned IP address)
    • Mask (subnet mask)
    • GW (gateway IP address)
    • MAC (interface MAC address)
  • Wi-Fi
    • Setup Wi-Fi module (flashes the latest available firmware for the ESP)
    • Create credentials (creates an empty config file on the USB drive)
    • Load credentials (loads config file from the USB drive)
    • Protocol (please note currently only IPv4 is supported)
    • LAN [DHCP/Static]
    • IP (assigned IP address)
    • Mask (subnet mask)
    • GW (gateway IP address)
    • MAC (interface MAC address)

Example of the Wi-Fi prusa_printer_settings.ini:

[wifi]
 ssid= 
 key_mgmt=WPA
 psk=

where:

  • ssid - is the name of your Wi-Fi network
  • key_mgmt - is the type of the security protocol (don't change it for now)
  • psk - your Wi-Fi password

Networking improvements

Tailor-made HTTP server

While working on the PrusaLink and its extended network capabilities, the developers have discovered that none of the existing web servers is sufficient for our needs. Previously used lwhttpd, became more and more demanding for the hardware.

For these reasons, the developers have decided to write our own HTTP server, which is optimized for the hardware and expected capabilities. It is able to process folders with large amounts of G-codes, thumbnails in G-codes, simultaneous upload/download and more.

Wi-Fi capabilities

The ESP is currently able to run as a client and connect to the nearest AP on a 2.4 GHz network. The data connection can be both encrypted (WEP/WPA-PSK) or unencrypted. For now, the WPA-enterprise and similar security encryptions for businesses aren't supported.

The printer is able to store login for a single Wi-Fi network, if you want to switch between wireless networks, you have to always overwrite the currently stored credentials.

The ESP is trying to automatically connect to the selected Wi-Fi network and reconnect if the connection is lost. If the printer is unable to connect to the network for over 60 seconds, the ESP module is restarted and once fully booted up, it continues searching for the network.

Support for the SSL

Part of the firmware is now the library mbedTLS, which will be used in the future for more secure communication between the MINI+ printer and any server.

GUI improvements

Remember position from the previous menu

Currently while returning to the previous menu, the printer doesn't remember the position of the cursor and scrolls all the way up, which can be uncomfortable for the user. Starting this release the printer will remember the position and return properly to it.

Filament actions

While performing any action with the filament (load, purge, change, unload) the user is now able to stop the procedure immediately using a dedicated button “STOP” on the screen.

Footer settings (experimental)

Until now the footer was strictly set and there was no option to adjust it. Starting this release the user can change up to three positions and display the information based on the current needs. The upper row is fixed with a hotend or heatbed temperature.

The lower row is configurable and the user can pick from:

  • Currently loaded filament (PLA, PETG, ASA, etc.)
  • Status of filament sensor (N/A, ON, OFF, DISCONNECTED)
  • Print speed in %
  • X-axis, Y-axis or Z-axis coordinate
  • Z-height
  • RPM of the print fan
  • RPM of hotend fan
  • Current Live Adjust Z value
  • Currently selected print sheet
  • none, the position remains unoccupied

A quick note to the Z-axis vs Z-height, where the first shows the height of the Z-axis including the Live Adjust Z value, therefore its absolute value. The second “Z-height” is showing the height of the Z-axis without the Live Adjust Z value, therefore its logical value. This can be useful for example while debugging fine prints as requested in issue #608.

Settings are stored in the EEPROM and remain persistent after the printer is rebooted.

The footer settings are currently part of the experimental menu, learn more about it in this article Experimental menu.

Improved UI for dialogues

Sometimes the dialogue was displayed over the footer and prevented the user from reading important information about the printer. The user interface was improved to prevent this scenario.

Improved One Click Print

Once a USB drive with G-code is inserted, the system reads the code and displays the preview. Developers have polished the code and the situation when this screen is overlaid with “Filament not detected” shouldn't occur anymore.

Switching between sheet profiles

This feature allows for switching between different steel sheet settings (value of Live Adjust Z). Previously, while fast-toggling between profiles, the system displayed all profiles, even those, which haven't been set. Now, this behavior is changed and only set-up profiles are displayed in the fast-toggle.

Selftest improvements

Detect stuck hotend temperature reading

Safety mechanisms should be an integral part of any 3D printer. MINI+ is equipped with several sensor and firmware algorithms, which are constantly checking if everything is according to the plan. Inside our labs, we are pushing the printers to their limits and trying to find conditions, for which the algorithms might not work as expected.

During one of the tests, we discovered a very rare scenario, when the thermistor might get “stuck” and reports a temperature a few degrees below the target, for example, 213 °C vs 215 °C. Because of the slight difference, the system keeps on increasing the input power to reach the target temperature, but since the thermistor is stuck at 213 °C, the only result is an overheated heater block. The “Thermal runaway” will not react as the difference must be over 6° C from the target.

For this reason, we are extending the safety algorithm with a new one, which is designed to cover the scenario described in the previous paragraph. It checks the real PWM of the heater against a mathematical model. If the real PWM is 68 (26,6 %) above the expected “modeled” PWM, the algorithm will add “1” to a fault counter. In case the value is before 68, a “1” is subtracted.

When a value of 40 is reached, the printer shuts down the heater and the print fan is activated at its highest RPM (100 %). An error message is displayed “TEMP NOT MATCHING” with further explanation: "Measured temperature is not matching expected value. Check the thermistor is in contact with the hotend. In case of damage, replace it."

Note that this safety feature is currently still in beta and might misbehave. The algorithm is expecting a stock MINI+ printer, without any hardware interventions. Should you encounter any issue, please report it to our developers using GitHub.

New checks

The printer now recognizes if the G-code was sliced using the PrusaSlicer and the correct printer type. If requirements aren't met, the printer will display the following error message:
"This G-CODE was set up for another printer type."
You can use buttons "Ignore" and "Abort" to resolve the situation.

The printer is also able to verify whether any filament is loaded (the filament sensor must be connected and activated). In case no filament is being detected by the sensor, the following message is displayed:
"Filament not detected. Load filament now? Select NO to cancel, or IGNORE to disable the filament sensor and continue."
Please note that selecting the option "IGNORE" will disable the filament sensor in the menu, otherwise the printer will display this message in a loop. To reactivate the sensor, please enter the settings menu.

In case there is a different filament loaded than required by the selected G-code, the printer will show this message
"This G-CODE was set up for another filament type."
Use buttons "Ignore" and "Abort" to resolve the situation.

Stuck fan check

While printing, the system now checks whether both fans are spinning or not. In case any fan stops (jammed, broken wires, …) the system activates appropriate measures.

  • Hotend fan - the print is paused; the heater gets cut off to prevent possible damage to the PTFE tube inside the print head
  • Print fan - print is paused; the heater remains active

Since this is a safety feature, it is turned ON by default. In case you don't want to use it, you can turn it off in Menu -> Settings -> Fan Check

Prevent “blob” after pause or M600

The communication between PrusaSlicer and firmware was improved to prevent the creation of a blob after print was paused or filament changed (M600). The behavior is now the same as on MK3S+ where after the filament change and proper color is confirmed by the user, a small portion of the filament is extruded.

Load filament - optimized X coordinate

MINI+ is a Bowden printer and based on the current shape of the PTFE tube, the filament either flows through with little or more resistance. While loading the filament the printer now parks its print head about ⅓ from the left end of the X-axis. This was also requested by the community, issue #1971.

Fixed behavior of safety timer

In case the safety timer was invoked in the past, the printer correctly started to cool down the printer, but the target temperature remained displayed incorrectly based on the loaded material. Now, the target is correctly set to zero.

Fixed rendering during MBL

Until now, while performing the Mesh Bed Leveling (MBL) the printer displayed incorrectly “1/16” in every measured point. This release fixes this issue and the printer correctly displays every point (1/16, 2/16, 3/16, …).

Improved logic if X-axis selftest failed

In case the self-test of the X-axis fails, the following Y-axis test is performed, but the Z-axis test is skipped. The reason is, that the print head might be too far left and while going down, the SuperMINDA sensor might not be triggered, which will result in the nozzle crashing into the heatbed.

Waiting for the user after FLC

Once the First Layer Calibration (FLC) is performed, the printer remains heated up and awaits user confirmation. This change in behavior is based on the fact that some users aren't satisfied with the result, and want to repeat the calibration process, but the heatbed is already cold at this point.

FLC after safety timer fixed

If the user started FLC and left the printer unattended on the starting screen for over 30 minutes, the printer correctly displayed the Safety timer and turned off the heating. However, upon restarting FLC, only the print head was heated up, this is now fixed.

Filament autoload

Similarly to MK3S+, once the filament sensor detects inserted filament, the printer displays a screen for filament preheat.

Safety timer on M600 fixed

The system was previously incorrectly keeping the heater on even after 30 minutes if the screen “Is color correct” displayed. Now, the safety timer is correctly activated.

Core/Libs

XFLASH and bootstrapping

This firmware introduces a new filesystem on the external FLASH (XFLASH) memory by utilizing project littlefs for its tolerance/immunity against sudden power loss.

Having the filesystem in XFLASH enabled the developers to transfer more static resources into the firmware - in this release the PrusaLink web pages and the ESP’s firmware binaries are moved into XFLASH.

This has greatly freed the FLASH memory on the CPU chip which can now be used for more code. Moreover, in the future, the plan is to use the XFLASH for other tasks (for example for community languages through standard gettext MO files).

In order to make this work, the bootloader must be updated. This is done automatically by the system. The user only has to provide both .bbf files on the USB flash drive. After the update, it will be capable of using the extended .bbf files and copying the static content into the XFLASH as an inherent part of the firmware flashing process - called bootstrapping.

EEPROM safety

The EEPROM safety features have been extended - upon startup the firmware checks the CRC (also stored in the EEPROM). If not matching, the EEPROM is loaded with defaults. This feature prevents various crashes and misbehavior caused by incorrect data being read from the EEPROM in the past (e.g. incorrect E-steps).

PNG optimization

The configuration of libPNG has been revised and several constraints tightened which resulted in shorter code and less RAM needed. Support for unused auxiliary PNG chunks has been removed and libPNG error texts have been removed as they aren't printed after all. Moreover, PNG icons have been optimized now leveraging even lower bit-depth and paletted images => less code space taken.

CPU reset G-code added

The G-code M999 R (aka CPU reset) added, now can be issued for example from Octoprint.

Known issues

USB speed and reliability

We are aware that the USB interface has been causing trouble for some users. In this release, we take a significant step forward while improving both the reliability and transfer speed of the USB interface. However, the developers aren't done yet, more improvements will come with future releases.

Translations

This release does not contain additional languages, this will be fixed in one of the following releases.

Don't miss a new Prusa-Firmware-Buddy release

NewReleases is sending notifications on new releases.