Unofficial Firmware for the Prusa Mini

Overview

Llama Mini

Llama Mini

Version

Unofficial Firmware for the Prusa Mini and Mini+

One of Prusa's llamas escaped from HQ ( 🦙 🏃‍♂️ ) and decided to make his own version of the firmware for the Prusa Mini. He's added quite a few goodies:

  • Configurable E-steps: Adds a menu option to configure e-steps, with presets for the Bondtech extruder (with and without reversed wires).
  • Hotend fan speed: Adds a menu option to unlock the hotend fan speed and increase it from the Prusa Firmware's default 38% to anywhere from 50-100%.
  • Skew compensation: Turns on skew compensation in Marlin and allows it to be configured directly through the Settings menu or with M852.
  • OctoPrint screen: Adds support for M73 (print progress) and M117 (LCD messages).
  • Sound: Adds support for M300 (play a sound).
  • PID tuning: Automatically writes PID settings to EEPROM after M303 U1 (autotune), M301 (set hotend PID), and M304 (set bed PID).

All settings are automatically saved to EEPROM and loaded on boot.

Welcome Main Settings Llama Settings E-Steps Octoprint

Feed the Llama

This plugin is developed in my spare time. If you like it, please consider supporting further development and updates by making a donation.

Feed the Llama


Installing Livestock

Jailbreak your Mini

You will need to cut out Prusa's appendix to install custom firmware. Follow the instructions here. This is irreversible and voids the warranty, although in the US you are protected by the Magnuson-Moss Warranty Act.

Of course you could always buy a second Buddy board and let your Llama run wild on that instead.

Alternatively, if you are good at very fine pitch soldering, you could lift the BOOT0 pin off the board entirely and make your own jumpers to connect it directly to 3.3V or GND as you need (the appendix merely shorts BOOT0 directly to GND).

Once you have done that, you can live and let live-stock.

Flash Llama

Download the latest release here. Copy the .bbf file to the root of your USB flash drive. Follow the instructions here to install the firmware. The bootloader will warn you the signature is incorrect - select "Ignore".

Livestock to Stock

Download Prusa's stock firmware here. The bootloader might not let you downgrade the firmware unless you explicitly give permission. Go to the Settings menu, scroll down to "FW Upgrade", and change the option to "On Restart Older" (this option is only available in Llama firmware).

To reflash the board in DFU mode, see below.


Configuration

To configure Llama settings, open the Settings menu and select "Llama Settings". Llogical!

Configuring E-steps

Select "Extruder" and click to select one of:

  • Prusa. Stock e-steps for the stock extruder.
  • Bondtech. Preset e-steps for the Bondtech extruder upgrade. This option assumes you have reversed the motor wiring as per Bondtech's instructions - if you haven't, you can reverse the extruder motor direction using the "Reverse E" option.
  • Custom. The e-steps can be configured using the jog wheel, or by sending the M92 E<steps> command.

Whether you use a preset, or set custom e-steps via the jog wheel or M92, your settings will automatically be saved to EEPROM. You do not need to use M500.

Configuring Hotend Fan Speed

The Prusa firmware limits the hotend fan speed to 38% because a happy user is a user with an underperforming but quiet machine. The fan is capable of running at much higher RPMs. There are a few reasons you might want to do this:

  • Reduce heat creep.
  • Print higher temperature filaments.
  • Change the fan to one which requires full voltage, e.g. a Noctua.

This menu option allows you to set the hotend fan speed anywhere from 50% to 100%, in 10% steps. The setting is automatically saved to EEPROM and restored on boot.

Configuring Skew Compensation

The Prusa Mini+ is inherently prone to skew, by virtue of its cantilever design. It is normal to see skew on all three axes. This affects the precision of any parts you print.

Prusa disabled skew compensation in Marlin, because a happy user is a user with an imprecise but easy to use machine. Lluckily our Llama has reenabled it. All three skew compensation coefficients are available for use - I for XY, J for XZ, and K for YZ.

Note it is always preferable to remove as much skew as possible through physical adjustments before using firmware skew compensation. For excellent instructions, read this post on Prusa's forum.

See the section below for a guide on how to measure skew and compute the coefficients. You can use the jog wheel to set the coefficients in this menu, or use M852. Either way, the settings will automatically be saved to EEPROM - you do not need to use M500. Be sure to set Skew Correct to On for the settings to be used.

Be careful with large skew correction factors - it is possible to go past the min or max travel on the X and Y axes while printing or even during mesh bed leveling. A skew factor of e.g. 0.01 equates to 0.01 * 180mm = 1.8mm of movement at the far end of the bed, so your usable print area will be reduced accordingly.

Configuring PID Parameters

The stock firmware allows you to run an M303 PID autotune, but the new settings are lost on reset. In Llama, PID settings are automatically written to EEPROM after any command that updates Marlin's PID values, which could be an M301 (set hotend PID), M304 (set bed PID), or an M303 U1 (autotune and use the PID result). These values will then be restored on reset, too. You do not need to use M500.

If you need to restore the default PID values, they can be reset by running the following commands:

  • Hotend: M301 P7.00 I0.50 D45.00
  • Bed: M304 P120.00 I1.50 D600.0

Note that if you run M303 (autotune) without the U1 parameter, Marlin will just print out the suggested PID values without changing the settings, and they won't get written to EEPROM.


Print Progress

Note that to take advantage of Llama's M73 support with OctoPrint, you will need to install one or more plugins. I recommend these three:

  • Print Time Genius, an excellent plugin to compute accurate progress estimates. It doesn't send M73 or M117 on its own, so you will need the next two plugins too.
  • DisplayLayerProgress. Turn on the "Printer Display" option and customize to your preference. This will send M117. I like to set the message to [printtime_left] L=[current_layer]/[total_layers] and the update interval to 10 seconds.
  • M73 Progress. Be sure to enable the "Use time estimate" option.

It may also be possible to arrange for your slicer to insert these commands, but the result will not be as accurate.


Calibrating Skew

Measuring skew on all three axes at once can be done by simply printing this compact calibration tower:

Skew Tower

Turn off skew correction before you print. Use a normal layer height (0.15mm) and no supports. Do not rotate the model in your slicer - it must be printed in the same orientation as supplied in the STL.

Then, make a copy of this spreadsheet. Use calipers to measure the six diagonals, conveniently labeled A to F, and type the measurements into the spreadsheet. It will calculate your three skew correction factors. You can either input them using the Llama menu and jogwheel as described above, or send them directly to the printer using the supplied M852 command.

If you want to check your calibration is accurate, print the same tower with skew correction enabled. The diagonals should then all have the same length (within measurement error of course).


Flashing in DFU Mode

If the bootloader refuses to accept firmware from a USB flash drive, it's possible to flash the board directly in DFU mode.

Compile the firmware and build a DFU file:

$ python3 utils/build.py --generate-dfu --bootloader yes

If you built it from another machine, copy it to your Pi:

$ scp build/mini_release_boot/firmware.dfu <user>@<pi-host>:~/

Put your Buddy board in DFU mode by placing a jumper across the relevant pins and resetting. If you have a 3-pin header next to the appendix (older versions of the board), put the jumper between BOOT0 and 3.3V. If you have a 2-pin header, just add a jumper.

Then flash from your Pi:

$ lsusb
Bus 001 Device 010: ID 0483:df11 STMicroelectronics STM Device in DFU Mode
$ sudo apt install dfu-util
$ dfu-util -a 0 -D firmware.dfu

Don't forget to remove the jumper before resetting.


Copyright (C) 2021 Matthew Lloyd

Original Prusa Mini Firmware README

Click to expand!

Buddy

GitHub release Build Status

This repository includes source code and firmware releases for the Original Prusa 3D printers based on the 32-bit ARM microcontrollers.

The currently supported model is:

  • Original Prusa MINI

Getting Started

Requirements

  • Python 3.6 or newer (with pip)

Cloning this repository

Run git clone https://github.com/prusa3d/Prusa-Firmware-Buddy.git.

Building (on all platforms, without an IDE)

Run python utils/build.py. The binaries are then going to be stored under ./build/products.

  • Without any arguments, it will build a release version of the firmware for all supported printers and bootloader settings.
  • To generate .bbf versions of the firmware, use: ./utils/build.py --generate-bbf.
  • Use --build-type to select build configurations to be built (debug, release).
  • Use --printer to select for which printers the firmware should be built.
  • By default, it will build the firmware in "prerelease mode" set to beta. You can change the prerelease using --prerelease alpha, or use --final to build a final version of the firmware.
  • Use --host-tools to include host tools in the build (bin2cc, png2font, ...)
  • Find more options using the --help flag!

Examples:

Build the firmware for MINI in debug mode:

python utils/build.py --printer mini --build-type debug

Build final version for all printers and create signed .bbf versions:

python utils/build.py --final --generate-bbf --signing-key <path-to-private-key>

Build the firmware for MINI using a custom version of gcc-arm-none-eabi (available in $PATH) and use Make instead of Ninja (not recommended):

python utils/build.py --printer mini --toolchain cmake/AnyGccArmNoneEabi.cmake --generator 'Unix Makefiles'

Windows 10 troubleshooting

If you have python installed and in your PATH but still getting cmake error Python3 not found. Try running python and python3 from cmd. If one of it opens Microsoft Store instead of either opening python interpreter or complaining 'python3' is not recognized as an internal or external command, operable program or batch file. Open manage app execution aliases and disable App Installer association with python.exe and python3.exe.

Development

The build process of this project is driven by CMake and build.py is just a high-level wrapper around it. As most modern IDEs support some kind of CMake integration, it should be possible to use almost any editor for development. Below are some documents describing how to setup some popular text editors.

Formatting

All the source code in this repository is automatically formatted:

If you want to contribute, make sure to install pre-commit and libtinfo5 and then run pre-commit install within the repository. This makes sure that all your future commits will be formatted appropriately. Our build server automatically rejects improperly formatted pull requests.

Flashing Custom Firmware

To install custom firmware, you have to break the appendix on the board. Learn how to in the following article https://help.prusa3d.com/article/zoiw36imrs-flashing-custom-firmware.

Feedback

License

The firmware source code is licensed under the GNU General Public License v3.0 and the graphics and design are licensed under Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). Fonts are licensed under different license (see LICENSE).

Comments
  • [BUG] Bootloop

    [BUG] Bootloop

    Hello,

    I can't get the custom firmware to work with my prusa mini: After building the firmware, I flashed the bbf file in bootloader mode. This worked normally but then I ended up in a bootloop shortly after that.

    Tried your bbf file too, but didn't succeed to boot the prusa normally...

    Have anyone else this problem?

    Best regards and thanks for your work Felix

    bug 
    opened by felixhesshaw 15
  • [BUG]

    [BUG] "Print fan not running" error

    Please, before you create a new bug report, please make sure you searched in open and closed issues and couldn't find anything that matches.

    Printer type - [MINI]

    Printer firmware version- v1.0.5 (based on Prusa buddy 4.3.2-RC1)

    Original or Custom firmware [Original/Custom]

    Optional upgrades - Runout sensor

    USB drive or USB/Octoprint Please let us know if you print via USB flash drive or USB/Octoprint

    Describe the bug I am having a print fan not running error come up within the first 4% of the print about five times, my print fan is running, after I clear it five times it will run the rest of the print without a single error. When I switch back to factory prusa firmware the problem goes away. My mini is brand new, I checked the plug, connections and I Ohmed out the wires with a multi meter and they are verified good. I love your Llama Firmware and wish to continue to use it. Any assistance you could provide me on this matter would be greatly appreciated. Regards JJK

    **How to reproduce, Simply start a print . Like clockwork Print fan errors, Expected behavior A clear and concise description of what you expected to happen.

    G-code Please attach the G-code you had trouble with. This will make it easier for us to replicate the error.

    Crash dump file Please attach the crash dump file. This will make it easier for us to investigate the bug.

    Video Please attach a video. It usually helps to solve the problem.

    bug 
    opened by Greeneyedblackcat 8
  • [BUG] Print Time Display

    [BUG] Print Time Display

    I have testet the v1.0.1 beta on my prusa mini.

    There is no remain print time in the status display. Only the % will be increased. I use the prusa slicer.

    bug 
    opened by Aquaerics 8
  • [BUG]<Mesh bed leveling  hangs the system>

    [BUG]

    Sir, I have installed the latest version of your firmware but when I do mesh calibration from lcd the system hangs and I need to reset all the time. The issue is not there with original Prusa firmware.

    bug 
    opened by Sorav1 5
  • [BUG]<Bootloop plz help>

    [BUG]

    I have flashed the file from USB flashcard, and now I have constant bootloop, i have no idea how to reflash it in the DFU mode? could anyone make video of the process? do I need raspberry pi for that? I have original prusa mini I have very limited knowledge and don't understand "Flashing in DFU Mode" instruction with python code, i could tip if anyone can help me, I really don't want to spent 100$ for new board. P.S. I did break appendix before everything else and put black jumper on BOOT0 and GND

    bug 
    opened by qp0n4ik 3
  • [BUG]<First layer calibration >

    [BUG]

    Hi this is Sorav here and I installed the firmware for testing. On doing calibration I went ahead with the repeat of first layer calibration ,on doing that the bed starts cooling down and it never starts heating .I need to reset from the LCD to do that again.

    bug 
    opened by Sorav1 2
  • Prusa disallows Llama Firmware

    Prusa disallows Llama Firmware

    My recently purchased Mini+ does not allow Llama latest firmware update. Gives "firmware signature verification failed" "Error! #12606" IMG_20210816_184252

    opened by glidercat 1
  • M303 E-1 Bed Pid Fails

    M303 E-1 Bed Pid Fails

    When trying to do an M303 E-1 S? (any temp) fails with a message of...

    Send: M303 E-1 S50 U1 Recv: PID Autotune failed! Temperature too high

    Doesn't matter what temp you try, 50, 60, 70 they all fail.

    bug 
    opened by dcs3473 1
  • Adjust Z Height Test in Wizard

    Adjust Z Height Test in Wizard

    For those using the Mini Silicone Bed Level fix the default Z height may be to high. This gives you a fail during the wizard setup process. It proceeds and will continue to work fine but just seeing the error causes anxiety. Im not sure exactly how you could adjust for this as some users may have different heights based on how they cut the silicone pieces.

    enhancement 
    opened by dcs3473 1
  • Setting motor currents

    Setting motor currents

    Hello,

    As I currently did a upgrade to the bear frame, the hardcoded motor current does not suffice anymore for Z.

    Where exactly can I edit the motor currents? M907 does not work.

    thanks in advance!

    opened by SiegelDaniel 0
  • [FEATURE REQUEST] Power Outage Recovery

    [FEATURE REQUEST] Power Outage Recovery

    Is it possible to implement the power loss recovery feature like the MK3 for example? Prusa promised this long ago but never happed for the MINI. It would be great to see this implemented in your firmware.

    Thanks a lot.

    opened by Fra085 2
  • Skew compensation doesn't work

    Skew compensation doesn't work

    Printer type - MINI+ with SuperPinda

    Printer firmware version- v1.0.7 (based on Prusa Buddy 4.3.3-final)

    **Custom firmware - Llama

    Optional upgrades - Filament Runout Sensor

    USB drive or USB/Octoprint USB and Octoprint

    Describe the bug I printed more than 20 test to compensate XY skew. And increase XY coefficient from 0.02 to 0.1. And diagonals length didn't change. I think this function isn't working. A - 142.04 B - 140.65 I restore settings to default after install Llama firmware after original. Tried to print via OctoPrint and USB.

    bug 
    opened by dagov42 10
  • [FEATURE REQUEST] ESP Wifi Module

    [FEATURE REQUEST] ESP Wifi Module

    Printer type: MINI Optional upgrades: ESP Wifi Module

    It would be great if we could use the intended ESP module to enable wifi printing. I don't know what are the complications with it (PRUSA team has not released it yet) but if only it could work through wifi as it works with LAN would be perfect.

    opened by Fra085 0
  • [ENHANCEMENT] PID autotune

    [ENHANCEMENT] PID autotune

    Printer type: MINI Optional upgrades: PID autotune

    It would be great if there was an easy way to manage PID autotune from the main menu. At the moment it is only possible to perform it through gcode, or am I wrong?

    Thanks a lot for your work, bringing us wonderful features.

    enhancement 
    opened by Fra085 0
Releases(v1.0.7)
  • v1.0.7(Nov 21, 2021)

    Changes since v1.0.6:

    • Rebase everything on Prusa's final release of v4.3.3.
    • Remove e-steps and extruder direction, since these are now in Prusa's Experimental Settings menu.
    • Raise max nozzle and bed temps by 10C.

    Important Notes:

    • Be sure to write down (or take a photo) of anything saved in your EEPROM before you install this new version. Prusa changed much of the EEPROM code in v4.3.3. While Llama settings should not be affected, please write down or photograph all your settings, both Llama and Prusa (e.g. live Z offset), just in case, before upgrading.
    • Prusa now supports extruder steps and direction in the main Buddy firmware, and your existing Llama settings for the extruder will not be automatically copied across. Be sure to write those down before upgrading and set them manually in Prusa's new menu after upgrading before you print anything.
    Source code(tar.gz)
    Source code(zip)
    Llama_Mini_1_0_7.bbf(673.85 KB)
  • v1.0.6(Aug 14, 2021)

    Changes since v1.0.5:

    • Rebase everything on Prusa's final release of v4.3.2.

    Important Note! Be sure to write down (or take a photo) of anything saved in your EEPROM before you install this new version. Prusa removed a bunch of commits between the 4.3.2-RC1 and 4.3.2-final releases they posted to GitHub, including everything related to footer settings which were stored in EEPROM. As a result, if you're upgrading from an earlier 4.3.2-based release, Prusa's EEPROM code will reinitialize the Prusa section of the EEPROM when you first run this firmware version, and you will lose your settings. Llama settings should not be affected, but please write those down too, just in case. If the reset puts you through the initial setup wizard but you need to set e-steps first, skip the wizard, set your e-steps in the Llama Settings menu, then rerun the setup wizard manually.

    Source code(tar.gz)
    Source code(zip)
    Llama_Mini_1_0_6.bbf(668.63 KB)
  • v1.0.5(Jul 12, 2021)

  • v1.0.4-beta(Jul 11, 2021)

  • v1.0.3-beta(Jul 4, 2021)

    This is a beta release of v1.0.2, based on Prusa's Buddy firmware version 4.3.2-RC1. It has all been tested, but you may experience minor issues. Use at your own risk.

    Changes since v1.0.2-beta:

    • Automatically rewrite M303 E-1 to M303 E-2 to work around https://github.com/prusa3d/Prusa-Firmware-Buddy/issues/798
    Source code(tar.gz)
    Source code(zip)
    Llama_Mini_1_0_3_beta.bbf(686.02 KB)
  • v1.0.2-beta(Jul 4, 2021)

  • v1.0.1-beta(Jun 28, 2021)

    This is a beta release of v1.0.1, based on Prusa's Buddy firmware version 4.3.2-RC1. It has all been tested, but you may experience minor issues. Use at your own risk.

    Changes since v1.0.0-beta:

    • PID tuning: Automatically write PID settings to EEPROM after M303 U1 (autotune), M301 (set hotend PID), and M304 (set bed PID).
    Source code(tar.gz)
    Source code(zip)
    Llama_Mini_1_0_1_beta.bbf(685.47 KB)
  • v1.0.0-beta(Jun 27, 2021)

Owner
Matthew Lloyd
Matthew Lloyd
An unofficial Realtek PCIe-based card reader driver for macOS

Realtek PCIe Card Reader Driver for macOS Unleash the full potential of your SDXC UHS-I cards Introduction An unofficial macOS kernel extension for Re

FireWolf 133 Sep 6, 2022
An unofficial Realtek PCIe/USB-based SD card reader driver for macOS

Realtek Card Reader Driver for macOS Unleash the full potential of your SDXC UHS-I cards Introduction An unofficial macOS kernel extension for Realtek

FireWolf 133 Sep 6, 2022
TIDAL - Discord Rich Presence plug-in (UNOFFICIAL)

TIDAL - Discord Rich Presence plug-in (UNOFFICIAL) Unofficial plug in to obtain Discord Rich Presence. Feel free to report any bugs or make suggestion

Rares Sarmasag 2 Nov 12, 2021
Unofficial upload of ChinesePython, a translation of the Python programming language in Chinese [Provided by UrduPython engineers]

# Downloaded from SourceForge: https://sourceforge.net/projects/chinesepython/ # (Uploaded as is) ---------------------------------------------------

Saad A. Bazaz 3 Feb 12, 2022
An unofficial Qt-based client for Telegram messenger.

Kutegram Supported platforms Windows XP and higher (maybe even lower?) Linux Symbian 9.2-9.4 Symbian^3 Maemo 5 Fremantle MeeGo Harmattan Current featu

Kutegram 8 Sep 7, 2022
Repo for the DSA Mini-project Directory Manager

Directory Manager Repo for the DSA Mini-project Directory Manager Installation and Setup To setup the program on your desktop, do the following. git c

Pramod Rao Budramane 5 Oct 16, 2021
ESP32 + Arducam Mini 2MP Plus Edge Impulse Example

Minimal example code for running an Edge Impulse image classification network with the ESP32, ArduCAM, and PlatformIO

David Schwarz 6 Apr 23, 2022
A mini assembler for x86_64, written for fun and learning.

minias A mini assembler for x86_64, written for fun and learning. Goals: A simple, tiny, fast implementation (in that order). Assemble the output of c

null 191 Sep 18, 2022
mini-plugin host as plugin

DISTRHO Ildaeil DISTRHO Ildaeil is mini-plugin host working as a plugin, allowing one-to-one plugin format reusage. Load a VST2 plugin inside a LV2 ho

DISTRHO 43 Sep 19, 2022
A mini x86-64 assembler for fun

A mini x86-64 assembler for fun

null 191 Sep 18, 2022
Lo-Fi SAMD21 based mini chip tune synthesizer - Seeed Studio - Seeeduino XIAO arduino project

samd21_mini_synth Lo-Fi SAMD21 based mini chip tune synthesizer Seeed Studio - Seeeduino XIAO arduino project link to the video Description This time

Marcel 7 Sep 23, 2022
Wortuhr mit ESP8266 WeMos D1 mini und NeoPixel WS2812B LEDs mit mp3 Sounds, Animationen, Transitions, Events und Spiele

Wortuhr_ESP8266 Wortuhr mit ESP8266 WeMos D1 mini und NeoPixel WS2812B LEDs mit mp3 Sounds, Animationen, Transitions, Events und Spiele, Webzugriff So

null 24 Sep 21, 2022
Dummy-Robot my super mini robot arm robot items

Dummy-Robot 我的超迷你机械臂机器人项目。 资料待整理 已添加3D模型设计源文件。 已添加夹爪硬件设计文件和LED灯环PCB 已添加无线空间定位控制器PCB文件 已添加无线示教器Peak软硬件工程(作为submodule) 已添加REF的硬件设计文件 已添加DummyStudio上位机 已

稚晖 8.4k Sep 22, 2022
ESP8266 (Wemos D1 Mini) NeoPixel controller for RepRapFirmware (BLV printers)

Overview This project is designed to handle NeoPixel control on an ESP8266 (Wemos D1 mini) and offload it from RepRapFirmware. Features WiFi-enabled W

Perry 2 Dec 6, 2021
A "mini" implementation of vim :3

minivim info A "mini" implementation of vim :3 It uses VT100 escape characters (I will implement ncurses in the future probably). P.S. I know they are

izenynn 7 Jun 9, 2022
Remote Arduino Uno-based TFT graphical display for VSR Mini Mega Alternator Regulator

VSMMAR_Remote_Display Remote Arduino Uno-based TFT graphical display for VSR Mini Mega Alternator Regulator This project is an optional accessory for

null 1 Nov 6, 2021
A mini tilemap editor

minitile A mini tilemap editor. Features Small: a compact editor great for prototyping maps Simple-to-use Export functionality: design your maps and e

Laurentino Luna 7 Feb 22, 2022
A STM32F428I-DISC1 based sonar which implements the HC-SR04 ultrasonic sensor and a mini-servo

STM32 Sonar Youtube This is a Sonar based on the STM32 microcontroller. It uses the following parts: STM32F428I-DISC1 Devboard HC-SR04 ultrasonic sens

Robert Sorić 1 Nov 29, 2021
My new zigbee project. Wireless temperature and humidity mini sensor with electronic ink display 2.13 inches, low power consumption, compact size, enclosure with magnets.

My new zigbee project. Wireless temperature and humidity mini sensor with electronic ink display 2.13 inches, low power consumption, compact size, enclosure with magnets. The device use SHTC3 sensors, chip CC2530, battery CR2477.

Andrew Lamchenko 17 Sep 11, 2022