Mini404 - Like MK404, but with an appendix you can un-break!
Introduction
Mini404 is the natural successor to MK404 for Prusa’s STM32-based Mini printer! It’s still relatively young in its development and the ARM architecture and peripherals are much more complex to simulate. It is a spare time project but I am still actively developing features and capabilities where time permits. It’s built on QEMU this time as that was the best ARM emulation platform I could find - or, at least, one with an ARM MCU and a bare-bones STM32F implementation. Be sure to check out the MK404 page for some additional background and motivation on how these projects came about.
We feature many overlapping features with MK404, including the scripting engine, advanced arm-gdb debugging capabilities, and 3D printer visuals!
Gallery
In addition, the use of QEMU gives us even more features to leverage:
-
Simulated Ethernet to the host
-
Simulated or physical USB drive on the host computer
-
Emulation save states so you can snapshot the machine state and resume it later
-
Many more capabilities that are implicitly provided by QEMU’s system, such as virtual consoles, host serial devices, pipes, and file-backed storage for EEPROMs and data.
New Tool:
- Command Line Configurator for helping you figure out the QEMU command line parameters you need.
Supported Printers
Name | Status |
---|---|
Prusa Mini | ✔️ Complete |
Prusa Mk3.x | ⚠ Partial. Both the firmware and the printer sim are still evolving. Things should be mostly functional and will likely move in parallel with the Mk4) |
Prusa Mk4 | ⚠ Partial. Both the firmware and the printer sim are still evolving. Things should be mostly functional. |
Prusa XL | ⚠ Partial. The firmware can boot and do some basic things but will not pass selftest due to bed current threshold. |
+ Prusa Mini Feature Status
+ Prusa Mk4 Feature Status
+ Prusa XL Feature Status
Non-hardware-specific feature highlights
-
ARM-gdb debugging - the ARM version of GDB is new enough that it can be used together with the
Native debugging
extension in VS Code for a very nice debugging experience. -
Mini404 can run the factory .bbf files if the Mini boot-loader is installed as
bootloader.bin
in the same location as theqemu-system-buddy
binary. You will need to source the bootloader.bin file yourself (URL can be found in the bootstrap script of the Mini firmware repo as I have not yet sought permission to hotlink or redistribute it. If you self-compile a noboot .bin file the bootloader is not required) -
Modular approach - Much like MK404, (and partly due to QEMU’s architecture) the design is modular so it will be easy to re-use components to support additional printer models.
Supported platforms
At current we only actively support Linux, and a Windows/MinGW64 build will be passively maintained via a GitHub build runner. While it should be possible to compile QEMU and probably the Mini404 components for OSX, I do not have the requisite hardware/development environment and it is not something I can support nor maintain. For either of these cases you are always welcome to report any issues you may find or submit fixes and I’ll do my best to assist, but cannot make any guarantees. For Linux I recommend you compile yourself, as each distribution has its own set of libraries. Until I get time to create a more portable package distributable, it is the best way to avoid a headache.
See Getting Started for a primer on what you need to compile and how to get started.
A Note on the STM32 architecture
- The STM32 (F4xx/G070/F030) architecture in Mini404’s fork of QEMU has received significant expansion over the development of this project with my own peripheral implementations. So far it’s the most complete one I’m aware of, and I’d like to thank both the QEMU developers/contributors for their work in the STM32 components that come “stock” with QEMU, as well as the pebble-qemu fork for their prior work Mini404 was able to leverage or adapt to make this project possible! Long term as these implementations stabilize, I hope these improvements will make it upstream, but currently I do not have the time to do so and maintain the upstream versions myself.
More Reading
Head on over to the Main Repo to get started, or…
… browse the Wiki for some more in-depth reading on features and how to use them.