This is pre-configured package for the 2.x Marlin Firmware for SKR Mini v2 boards on Creality Ender 3. The configuration files were specially crafted to extract the maximum performance of the printer while maintaining the manufacturer recommended settings. The download packages include both the source code and the compiled binary files.
This firmware will not work with 8-bit boards or Creality 32-bit boards.
Extra features enabled over the standard Marlin firmware configuration.
- Official Marlin Firmware with the latest updates
- Ready for Octoprint
- PID adjustments and auto tune from LCD (nozzle and bed)
- BLTouch using the probe as Z-Endstop or manual Mesh calibration
- Bilinear bed leveling with multiple slow probing for maximum precision (5x5 array)
- Filament runout sensor enabled (3-wire sensor, EZOut compatible) - can be disabled from the LCD menu
- Restore bed leveling after G28 - no need of custom slicer GCode to load the bed level data
- LCD based bed leveling
- Z safe homing (avoid hitting the printed parts)
- BLTouch voltage menu on the LCD (for BLTouch 3.0 and 3.1)
- Show filament consumption on the LCD
- Show remaining, elapsed and estimated printing time in the LCD. If the slicer added the time estimations to the GCode, it will use the slicer information.
- Power loss recovery - can be turned on/off from the LCD
- Arc support (G2/G3)
- Bezier curve support (G5)
- Support for level test (G26)
- Adjusted the filament change settings for the official Ender 3 bowden tube length
- Customized menus with the "famous" Heat and Level command
- Pins debugging (M43)
- Advanced pause - filament change (M600)
- Hot End idle timeout - turn off the heater after 5 minutes
- Host Action commands - enhanced Octoprint integration
- Homing bump - extra precision to the end switches
- Adaptive step smoothing
- Probe offset wizard
- Enhaced serial float precision - for Octoprint and external LCDs
- Detailed position data (M114)
- Soft reset via serial (using KILL or ^X)
- UTF Filename support for SD Cards
- Linear Advance + S-Curve acceleration (experimental).
Note about the bed leveling strategy
There are two ways to perform the automatic bed leveling, the first is before every print and the second is only when necessary. Based on my experience with the Ender 3, it's better to do an extremely precise bed leveling when necessary instead of a simpler one before every print. This firmware configuration reflects this choice.
Unified Bed Leveling (UBL) is not recommended and will not be implemented. This feature adds a lot of complexity but does not bring any significant advantage in comparison with the bilinear bed leveling in cartesian printers (delta is another story).
If you want to do quick/imprecise bed leveling before every print you will need to reconfigure the firmware.
- BLTouch is a convenience for Ender 3 users but not mandatory. Mesh Bed leveling does exactly the same without the hardware additions and does not take much longer to perform.
- BLTouch 3.0 is problematic, try using higher (3.1, for example) or lower versions (1.x or 2.x).
- BLTouch sensors are low quality devices and are very susceptible to wiring related problems.
- Bed level failing is not a problem with the firmware! The only thing you can do from the firmware perspective is setting the correct voltage (you can use the LCD menu).
Note about new version updating strategy
I tend to be very conservative regarding new Marlin versions. The "stable" versions on their website are not that stable at all and installing every minor release can cause more problems that solutions.
New versions of this firmware package will be released according the following criteria:
- Critical bug fixes: problems that could crash or damage the printer. Small bug fixes like text labels or in features not related with the printer and/or the enabled features will be ignored.
- Build version increases 126.96.36.199, 188.8.131.52, 184.108.40.206... will be ignored unless there are critical bugs to be fixed.
- Minor version increases: 2.0.6 to 2.0.7 will be released after after I test the version for a few weeks in my printer.
- Major version increases: 2.0 to 2.1 will depend on what changed and if the hardware supports.
- SKR Mini E3 v2.0 32-bit board
- For BLTouch enabled printers:
- Z-stop switch removed and the BLTouch endstop wires (black and white) connected to the Z endstop pins in the motherboard
- IMPORTANT! BLTouch tip height must be adjusted according to the official instruction manuals. There are different BLTouch sensor clearances and the YouTube videos tips are wrong most of the times
- For printers with filament sensor:
- 3-wire sensor plugged in the E0-STOP port (EZOut compatible)
- Microsoft Visual Studio Code only if you plan to compile and install from the source code
- PlatformIO IDE extension installed on Visual Code only if you plan to compile and install from the source code
- Pronterface (optional): send custom G-Codes to your printer from the USB interface. Very useful to find errors and calibrate the printer. Octoprint does the same.
Instructions for installation from the Source Code
- Download and install Visual Studio Code.
- From Visual Studio Code extension menu, install the PlatformIO IDE.
- With all requirements running, unpack this entire Marlin source code downloaded from the link below to a folder.
- From Visual Studio Code select File->Open folder and select the folder where the platformio.ini file is located. Attention! Use the "open folder" command, not the"open file".
- Select Terminal->Run Task->Build . It will take a few minutes for the system to download all dependencies and compile the code.
- If the code compiled properly you will see something like this in the terminal: "=== 1 succeeded in 00:00:30.050 ===".
- Copy the file "firmware.bin" from the folder "YOUR_PROJECT_ROOT\.pio\.pio\build\STM32F103RE_btt_USB\" to the printer SD card
- Backup the current firmware from the card by copying the file "firmware.cur" (if exists) to a folder in your computer. Do this before inserting the SD card back to the printer.
- Insert the card in the printer and reboot to update the firmware
Instructions for installation from the binary files
- Download the package appropriate to your hardware configuration.
- Open the ZIP file and extract the "firmware.bin" from "\.pio\build\STM32F103RE_btt_USB\" to an SD card (NOTE: This folder might be hidden in some operating systems)
- Insert the SD card in the printer and reboot to update the firmware.
- Manually pre-level the bed! This is important because the BLTouch has limited max/min detection ranges and the print quality can be affected if the Z-Axis moves too much (even without BLTouch).
- Cool down the bed and the nozzle. Heating should have little to no effect on this specific procedure.
- Disable stepper motors using the LCD menu command.
- Place a credit card on one the bed, the thickness of the card will be used as a reference distance.
- Turn the Z axis with your hand until the nozzle hits the credit card.
- Move hot end to several positions of the bed, starting from the 4 corners. For each position, adjust the bed level knobs to keep the nozzle at the credit card thickness distance from the nozzle. This is what you would do in manual calibration but instead of using a paper you will use the card for convenience. The card thickness does not matter because the BLTouch probe will redefine the Z reference.
- Heat the bed to the printing temperature and run the bed level command from the LCD (Motion -> Bed Leveling -> Level bed) or use the G29 GCode or the Heat and Level command from the custom menu (recommended). Note that the Heat and Level command waits 2 minutes after the bed is hot to allow the mounted surfaces to expand/contract properly.
- Save the settings using the LCD menu or the M500 gcode (if you used the Heat and Level custom command, they will be automatically saved).
- After enabling the bed level, print something large and flat to adjust the Z offsets. The nozzle tends to be far from the bed until you adjust the offset to a negative value (Configuration -> Probe Z Offset). Don't forget to save the settings after the print to keep the offset in the memory.
- Optional steps:
- Adjust the extruder steps (menu avaliable in the LCD)
- Calibrate the hot end and bed PIDs (menu available in the LCD)
- Set the linear advance K-Factor using Marlin tool.
- Set the desired Z fade distance for the bed level compensation. I recommend around 5mm for the Ender 3. (menu available in the LCD: Motion->Bed Leveling)
- Save all previous setting to the EEPROM.
Troubleshooting and FAQ
- I don't want to use the Linear Advance feature: Just set the K to 0 in the LCD menu.
- The S-Curve should not be enabled with Linear Advance: This firmware is using the experimental mode that allows both features to co-exist. After many hours printing with both features enabled I didn't noted any problems with this printer/board. If you set the K to 0, only S-Curve acceleration will be used.
- BLTouch is probing outside the bed or too far from the edges: Adjust the probe offsets (Configuration -> Advanced settings -> Probe Offsets )
- Bed or nozzle are not centered: Please adjust the home offsets (M206) and the hotend offsets (M218).
- Why not use the ENDSTOP_INTERRUPTS feature? Bigtreetech did not enabled this feature in the original firmware. I am still trying to figure out the reason for that.
- Want to go back to the previous firmware: If you did the backup of the original firmware, just rename the firmware.cur file to firmware.bin and then put inside the SD card and reboot the printer.
- Does it supports TFT35, TFT43, TFT50, TFT70, etc... displays: Yes, no modifications required. Please remember that such displays have their own firmware and not all functions will be reachable from the graphical interface unless you use the "Marlin mode".
- Does it work on the Ender 3 v2? If you are using the SKR E3 Mini v2.0 board and the CR-10, Ender 3v1 display or the TFT35 display (or similar) it will work. If you are using the SKR board with the standard display the answer is no (different wiring).
- I don't have a filament sensor: No problem, the filament sensor is a switch that closes when there is no filament. If there is no switch installed, the printer will ignore that. If you want to install a switch, just plug the wire and it will work instantaneously (unless it is a rare switch that works with an inverted signal).
- Why the downloads are so big? Because I included all pre-compiled libraries with it. This allows you to recompile the firmware with a single click in the compile button. Before I included the libraries, many users had problems downloading them.
- Temperatures are going up and down like crazy: Please calibrate the PID for the bed and for the nozzle, there is a menu in the LCD for that. Alternately you can use the PID Autotune (M303).
If you have problems compiling the firmware...
I can compile the firmware for you. Please see here for more details.
Bei BTT eine SD-Karte mit 128 mb verwenden
Connecting via USB Serial - Pulling my hair out!
Hi Daniel, thank you for all the hard work you put into this project.
I am having an issue connecting to the board via the usb serial port. I have NO issues connecting via the BTT pre-compiled firmware version on the GITHub for the SKR Mini E3 using the firmware for the Ender 3 (https://github.com/bigtreetech/BIGTREETECH-SKR-mini-E3) however they do not provide the configuration.h or the configuration_adv.h files so I can see what is different. There are a number of settings I need to change from their pre-configured firmware to work on my machine. But the weird thing is that the serial connection does work.
When I use your pre-compiled version, or compile it myself I cannot get connected via the usb serial. I have been pulling my hair out trying to figure out what setting is different, but I have so far had no luck.
I have tried to compile it using the STM32F103RE_BTT, STM32F103RE_BTT_USB, STM32F103RE_BTT_maple, STM23F103RC_btt, STM23F103RC_btt_usb, STM23F103RC_btt_maple all with no success in getting the usb serial to work so I can connect to it from my windows machine. The only configuration that seems to work is the one provided by BTT on the GitHub, but that is useless because many of the other settings are not correct for me like limit switch reversal.
I have tried a variety of baud rate settings all with the same result. The BTT version works with 115200 so I have made sure that the rest of my testing is using this setting because it clearly works there.
I wish one could reverse engineer the firmware so I could see what they have done to make it work properly.
Any additional settings that you could suggest to make this work?
The chip on my SKR mini E3 V2.0 is the STM32F103RCT6 if that helps.
I don't know what can be wrong, this firmware has been used for thousand of users on the same board without issues. Here are some suggestions:
Home point not centered
I just flashed this firmware last night and I have one small issue. The print head isn't homing on the center of the bed....its to the right a little bit. when I went to print it is too far over and prints off the edge of the bed. what setting do I need to change to get it back to center?
Home point not centered
Mine is home just right. Did you set the probe offsets for X and Y, or only Z?
I set them on the machine…
I set them on the machine not in the firmware. My bl touch is also homing to the right. I didn’t know if I needed to change anything in the firmware and reflash it.
If no changes were made in the fw from this page, then, when homing Z the bl-touch probe should be centered. If it's not, bed size or offsets may have wrong values. Check if X and Y offsets are properly set, including if the value is positive or negative.
Doing that worked for me. Also remember to reset eeprom after flahing firmware, set the new values, and save to eeprom again, to clear old info. Good luck.
Use the M851 GCode command to set the offsets without having to recompile/reflash the firmware.
Instalando en el directorio Plugins del Cura las tres carpetas descomprimidas del Bigtree3DPluginSuit-master permite una previsualización del modelo a imprimir en la misma pantalla del TFT
En esta versión v.27 funciona perfectamente. Ver Imagen
Actualización fallida del firmware v.27 Bigtreetech TFT 35-V3-E3
Al final con la última versión del GitHub (de hoy mismo i con el soporte para lenguaje polaco) se ha solucionado el problema
Ja funciona perfectament la placa con el Marlin v220.127.116.11 (vuestra compilación) con la tft v 27
Saludos i repito mi agradecimiento para resolver esta actualización
Actualización fallida del firmware v.27 Bigtreetech TFT 35-V3-E3
En primer lugar muchas gracias por su compilación de la la placa BIGTREETECH-SKR-mini-E3 v2, desde el GitHub no havia manera. Funciona perfectamente. También funciona bien con el firmware de la TFT versión 26.
En canvio al actualizar la TFT a la versión 27 (https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware) se instala bien pero al final no se puede comunicar con la placa SKR-mini E3 apareciendo el mensaje de error: Line Number is not Last Line Number+1, Last Line: 0
Alguna idea para solucionar-lo
TFT 35 E3 V3
If you are using the TFT firmware on that link, you may be using a nightly, bugfix edition.
There was an issue on the TFT bugfix edition up to 8 hours ago, as shown in https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/issues/2255.
You should use the stable releases from this link: https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/tags, or
if you can't wait for the next stable release for the new features, and want to use the nightly build you linked, you must keep track of known issues here: https://github.com/bigtreetech/BIGTREETECH-TouchScreenFirmware/issues.
Try downloading and using the new bigfix .bin from 8hs ago. It may fix that issue.
I was waiting for #2255 to be fixed to update mine.
how do i set to get a louder alarm sound?
Skr mini e3 v2 + tft 35 v3 e3
Help, BLtouch is working.
Hi, I have an Ender 3 v2 with a btt skr mini v2. My bltouch is working because it will create a mesh but it will not translate that information to when it is printing, so hence no leveling while printing. It is just like having no bltouch all over again.
No leveling while printing
Hi. Did you save your bed level and Z-offset to EEPROM? You can use the menu option Store Settings or send M500 from a terminal.
Also on the leveling menu there is an option to enable the bed leveling, so that the printer will actually use it.
What I did was add the line following to my start Gcode on the slicer:
That way it will ensure that bed leveling is on, every time I start a print.
Note: "A valid mesh is required to enable bed leveling. If the mesh is invalid / incomplete leveling will not be enabled". - As explained on Marlin documentation, so level and save your mesh first or it will give an error message.
Great job! A tip for those who use microswiss direct extruder
You did a great job! Thank you! I use hot-end and direct drive extruder micro swiss and Satsana fan duct on Ender3 PRO. With marlin 1.x I had to set a non-standard Y_MIN_POS, in marlin 2.x I couldn't get it to work... but the easiest solution was to move the sensor end-stop physically and now everything works perfectly
Printer Glitching out and showing Chinese gibberish.
So a good while back, my printer crashed mid print. After that, it was printing fine. Today, the printer is freaking out. It crashed twice on the same file.
the printer was showing the normal home screen with a bunch of weird lines and stuff flashing around. any idea what is causing this?
check your cables
Other than the screen glitches, is the printer ok?
Unplug the board from the PSU and check your cables, all of them. It may be a loose/broken/shorted wire on the ribbon cable or any other one.
But you should...
Look for support on the printer manufacturer's Forum. They will be able to offer the help you need.
Thank you so much for sharing!
I also had problems with BLTouch.
I recently purchased 3D Touch v3.2 Pro and all issues have been fixed.
I've never had a bed so well leveled in all corners...
I found it here:
MISMATCH ERROR AND FAILED TO INITIATE BED LEVELING MESSAGE
I have skr mini e3 v2 and a tft70 display. after inserting sdcard with this firmware i got a quick message i couldnt capture saying mismatch however it seems to have loaded, but another quick message said auto leveling failed to load.
i do not use bltouch. is there any steps i need after flashing?
You need to level the bed and save to EEPROM.
If you downloaded and installed the Mesh Bed Leveling file (no BLtouch), you need do do a "manual" bed leveling on the LCD. Select 'Level bed', on the move menu.
It will move the nozzle around the bed and you use the dial knob to adjust the Z level to a piece of paper. After all the points are measured, save to EEPROM. It will auto load this on start-up.
NM, using marlin mode i got…
NM, using marlin mode i got the 9 points leveled. Under features should i have auto level z-steppers enabled? Thanks for your help
Autolevel Z steppers
I believe Autolevel Z steppers is for printers with 2 Z steppers motors/rods. Mine only uses one, so I don't use it.
Hi, thank you for a great firmware. I have creality bltouch with all wires in one connector. Is there any way to use whole bltouch connector instead of z-stop pins? I don't want to splice the wire.
With a few minor changes,yes.
Hi. I have a printer setup just like yours. I use the BLtouch with all the wires on the Probe connector.
If your wiring is done right, according to the diagrams on both the SKR Mini e3 v2 and on the probe itself, it will work with just two config changes.
BLtouch and Creality CR-touch are wired the same on the SKR board, I did check the probe pins diagram to see if they match with the SKR probe ports. They did.
Bellow are the changes that worked for me.
For them to work I needed to change only two lines in Configuration.h
Then compile the firmware and it will (1) use the probe on the 5 pins Probe port, and (2) use the probe for homing Z.
If your endstop is still connected to the board, move is lower so that it won't trigger before the CR/BL-touch.
Should work for you as well.
It worked! Thank you! :D
It worked! Thank you! :D
Hello this firmware BLtouch…
this firmware BLtouch, bltouch z homing and smart filament senzor?
Just as said on the FEATURES list
Just as said on the FEATURES list, yes.
Just download the BLtouch files. I use them.
I have a problem with HOTEND_IDLE_TIMEOUT feature. Sometimes my Ender 3 PRO with SKR Mini e3 v2 stops in the middle of a print process and it reports the "hotend idle timeout" error... this is strange because surely 5 minutes have not passed since the last GCODE command.
Do you know if this is a Marlin bug and if there is a fix for that?
Meanwhile, I'm disabling this feature.
Thank you for sharing your very good customization.
Hi, This appears to be a…
This appears to be a Marlin bug. I also got this error during a long bed calibration procedure, although the motors were running, the extruder was not priming and this caused the idle counter to expire.
Yes, sometimes it happened…
Yes, sometimes it happened also while probing the bed level, but it was with an old version of your mod FW.
When I upgraded to the 3rd July version the problem with bed leveling disappeared, but sometimes it comes out while printing, and this is even worst.
I confirm there is a bug…
I confirm there is a bug with this feature. It is fixed in the bugfix release and soon will be in the stable version. Meanwhile better to leave the feature disabled....
Great. Thank you :)
Great. Thank you :)
Hello, will this firmware work just as well with an ender clone like auila x2 using the mimi e3 v2 board? Thank you. Its still on the bugfix 2.0 and seems to work fine.
It should work with Ender 3…
It should work with Ender 3 clones, the hardware is almost identical. I am not sure about the control Board, it would work only if this is a clone of the SKR Mini E3 v2.
i have the SKR Mini E3 v2…
i have the SKR Mini E3 v2 installed so im sure its fine then. thanks
Make sure they use the same thermistor type that is used on the Ender (type 1), as that is set in the Marlin config files.
It's the only thing that comes to my mind that *may* be different in a clone.
Use alex's firmware for the aquila. That's what i'm using on mine and pretty much has every feature you need for the aquila. I don't have a bl touch on that one but if you do it's just a few changes to the firmware in vsc
Slow file scrolling
After installing the pre-config binary on Ender 3 with MKR mini V2, scrolling files is unbearably slow. Any solutions?
Do you have too many files…
Do you have too many files in the SD card? If the quantity is too high the filenames will take all available RAM and the performance will degradate.
Disable the settings below to reduce the RAM use:
I reformatted the SD card…
I reformatted the SD card and that resolve the slowness.
This is the best firmware for the Ender 3.
You beautiful bastard, I spent MONTHS trying to get ABL to work (one side too low, the other too high) and for whatever reason, yours works PERFECTLY. I can't thank you enough man. I've bookmarked your page and now regard you as the Go-To-Source for firmware knowledge, screw everywhere else.
Thank you! It takes a lot of…
Thank you! It takes a lot of time to make this thing work properly.
Modification for skr 1.2
Hi, I found your firmware searching for a version to fix my Ender 3. I had a working 18.104.22.168 version from morningreis and updated to his 22.214.171.124 but now all my axes try to home to the opposite side, crashing every time.
Your firmware seems very good but I have an SKR miNI e3 V1.2. What should I change to compile it for this board?
My printer worked great for a year. Then suddenly, one day, it went crazy. I spent three months trying to get it going again, all kinds of firmware etc. I decided it had to be a bad BLTouch, Bad SKR board or something. Then, I randomly found this firmware from a reddit link. I kid you not, it worked out of the gate. Not too mention, all the extras and custom options.
Thank you! My printer was literally hours away from the garbage.
Environment + USB
Hi again! Thanks and great work on the updates, as always!
I haven't tried the 126.96.36.199 update yet, but I noticed that you have set
"default_envs = STM32F103RE_btt_USB"
how does it affect the USB connection to Octoprint/Octopi as opposed to STM32F103RE_btt?
The USB mode exposes the SD card as a mass storage device to the USB host. It helps you to visualize the files in the SD from Octoprint.
It has no impact on the G-Code transfer between devices.