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.
Features
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
- Babystepping
- 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 comments:
- 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 2.0.6.1, 2.0.6.2, 2.0.6.3... 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.
Requirements
- 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.
Post-installation configuration
- 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.
Comments
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 2.0.5.3 version from morningreis and updated to his 2.0.9.1 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?
Thank you
Amazing
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.
Awesome work.
Environment + USB
Hi again! Thanks and great work on the updates, as always!
I haven't tried the 2.0.9.1 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?
Ciro.
USB Board
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.
THANK YOU!
Can't thank you enough for this! I only recently picked up an Ender 3 Pro, then started upgrading it, starting with the BTT SKR Mini E3 v2. I got the upgraded board because I wanted to have an easier time performing updates and firmware changes, but when ended up happening is I traded one time sink (opening up the board enclosure and fiddling around with bootloader hacks) for another (screwing around with two config files and no clear guidance as to what does what).
I thought I had found the answers with a couple of walkthroughs presented by otherwise knowledgeable YouTubers, but then I started running into weird problems with the printing process that simple made no sense and seemingly had no answers.
Then I stumbled on this blog and realized I had made a couple of errors in terms of BLTouch settings, and with sound settings as well. Who knew that enabling the speaker would activate a bug that prevented the part cooling fan from running at all?!
Anyway, I think I'm still trying to come to terms with the actual state of the industry, which I had assumed to be a lot more mature than what it apparently is. But, thanks to your work, I don't need to spend a bunch of time becoming an expert in all the behind-the-scenes settings. That will come in due time, AFTER I've had a chance to start producing some of these print ideas I've had lurking in my archives for years. :D
USB fail connect
After upload this firmware to my ender 3 pro i can't connect with USB to repetier host or any other porogram like cura etc... How can i solve it ??
The USB works
The USB works. Please double check the baud rate for the connection and make sure you don't have any accessories conflicting with it.
Tryed at simplify:…
Tryed at simplify:
Attempting connection at \\.\COM11...
Testing plaintext communication protocol...
Testing binary communication protocol...
Testing alternate communication protocols...
Connection failed.
Same is at other program. Before i had connect at COM4 but now when i plug printer into laptop have only com11 and cant connect.
I tried to debug, but I…
I tried to debug, but I become an error.
"No emulators connect via usb
Do you want to connect to a J-Link via tcp /IP instead ?
Identifier may be one of the following
Blank: Select from a list of available J-Links
IP Adress 192.168.2.2
Serial number 281100001"
What can I do? Please help
Do you have the debug tools?
In order to debug STM32 processors you need a special hardware device called J-Link.
Bed heating issue
I set the temp of the bed to 60 on display, the bed heats to 50 and a few minutes later the alarm goes off for heating issue.
bed heating issue
also, ran the PID on the TFT35 then saved with M500. no change
Bed heating issue
Ihave the same issue, and the alarm is annoying.
Calibrate PID
Hi,
You need to calibrate the PID for the bed. Use the following GCode:
Never run any firmware update without calibrating the PID for the bed and HotEnd.
Great work. Thanks.
I really appreciate what you've put up here. I just found it from a random search, but I'm not sure why this isn't a well known reference in the subreddits and elsewhere. After installing a BLTouch (on an Ender 3 Pro w/ SKR E3 Mini V2) I was having issues with failing to home with no z-axis downward movement with the BTT official binary. I've built Marlin before, but was hesitant to reconfigure and rebuild for the BLTouch until I checked the installation out with BTT's binaries, but their binaries never worked for me. I had nearly given up on the BLTouch when I found this load and it just worked! Thanks so much for providing the resources, especially your whole Marlin configuration. I can check all of your settings against my own now.
Pre-configured Marlin for SKR Mini E3 v2 on Ender 3
Hi Daniel,
Thank you for your effort to adapt the Marlin firmware for the BTT SKR mini E3 V2.0 and the BL Touch.
now it works for me too.
It is a shame that BTT is not able to provide this service for its components.
BR
Hartmut
Excellent! Runout sensor?
First off, this is fantastic work! Thank you so much for your efforts to make this! It has saved me so much time.
Do you plan on updating this?(I realize I'm a year late...) I am trying to run the BTT Smart Filament sensor, and it requires the FILAMENT_RUNOUT_DISTANCE_MM to be enabled in the firmware. Otherwise the printer detects a runout as soon as a print starts. I have to turn off the sensor in order to print. Is that something you would consider revisiting?
Regardless, thanks again for your efforts!
LCD notification
Hello, where i can change notification on LCD showing , when i plug in SD card or plug out?For example "Media inserted".
Language files
It can be found in the following file in the source code
:
language_en.hSorry my asking was wrong, i…
Sorry my asking was wrong, i mean when i plug sd i dont see notification "media inserted" so can i enabled this notification?
Z axis wont move down only up
hello,
I've run into a slight issue with your firmware when I try to level the bed, auto home, or just move the z-axis down with the LCD the z-axis refuses to move down it only moves up.
I'm using an SKR E3 V2 and Ender 3 pro
Thanks!
Hold up
I take that back kind of. when I first turn on the printer I can move down but after I try to level the bed it stops being able to move down also the BLTouch doesn't move down when probing it just floats
Auto-Leveling Disabled During manual Bed Leveling
A lot of people forget to turn off Auto Bed Leveling when manually leveling the bed. Run G28 followed by M420 S0. Then manually level your bed. To re-enable Auto Bed Leveling run M420 S after you leveled the bed. Now Run G29.
nevermind
actually nevermind I think I found the problem and I'm using a different firmware thanks though!
Skr 1.2
Would it be easy to make this work on the Skr mini 1.2 board?
Yes. You can modify to fit…
Yes. You can modify to fit the 1.2 board.
Skr 1.2
I cant figure out what to do to make it work with skr mini 1.2
Thank You
I've been playing with this damn thing for two days now (Ender 3, BTT SKR Mini E3 V2, BTT TFT35 v3.0, BLTouch, BTT Smart Filament Sensor) and it's been driving my crazy. I don't know how many times I've deleted everything, from everywhere, and just started over. Heck, I couldn't even get BTT's pre-configured files from Github to compile!! These files have got me off to a great start. Thank you and I appreciate the effort and time you put into them.
Best Wishes,
Brad
Finally - a tutorial that makes sense and worked
Thank you for the time you took in creating this and letting us all use it for nothing.
I did it and made some other changes in the .h file and it is all working perfectly.
Thanks again!
Auto-bed-levelling
Hi and thanks for the awesome work.
I only got the following issue:
after auto-bed-levelling, no matter if g28 followed by g29 in terminal via octoprint and m500 afterwards, or with preheat+level, it seems like the printer thinks there´s no uneven bed to compensate.
so there´s no compensation through z-movement during print.
sorry for my english :)
If one of the probing points…
If one of the probing points fail, the entire bed level process will be invalidated and the data will not be used. You should check the output of the G29 command in the terminal to see what is happening.
Z axis keeps falling
Is there a way to keep the z axis enabled so it does not fall after a print or bed level. It seems like there is a stepper timeout somewhere I can't find, thanks.
Yes. Edit Configuration_adv…
Yes. Edit Configuration_adv.h and change:
to
Installing SKR mini E3 V2.0 on Ender 3 pro
Dear Daniel,
Proficiat for the amount of work you performed to enable non-electronics educated like myself, still can enjoy the basics of 3D printing!
After the installation of your firmware for the SKR mini E3 V2.0 included with BL Touch, the machine started up. It checked out that so far everything was working correctly except for the BL Touch. I connected the wiring to the 5 pins socket on the board and at the same time connected the z-stop hardwired.( Just in case I thought). Disconnected X- and Y- hardwired endstops and installed sensorless homing. As expected X and Y homing worked after adjusting the sensitivity.
The BL touch probe lights up (red) en when testing the probe it seems OK. Measured all wires for connection: ok. When homing the probe clicks down. When pushed back, either manually or the bed, the Z-movement is not stopped. As far as I know the BT Touch is 5 volts and the system is set accordingly. The same probe did work perfectly well on my 8 bit MKS Gen 1.4 board.
Do you have any idea where to look for an explanation and probable solution? So far I think it is most probable a firmware issue. Hope I am wrong!
Looking forward to your reply!
Hello, For this setup, the…
Hello,
For this setup, the black/white wires of the BLTouch must be connected to the Z-Stop plug (not the 5 pin socket). You will also need to disable the jumpers for the sensorless homing in your board for the Z-Axis because it conflicts with the endstop switch.
Regards,
Linear Advance feature
Where in the LCD settings do i go to change this?
Control->Filament
Control->Filament
I only have one problem…
I only have one problem remaining, im not sure if that's an issue with my OctoPi or Marlin firmware, but Octoprint doesnt handle this firmware very well.
1. When any print successfully finishes i need, Octoprint thinks that the printing has stopped on 100% but not completed. I need to reconnect Octoprint to SKR board every time i finish printing for Octoprint to pick up that the printer is now operational.
2. Similar issue with all kinds of errors on the printer side (like bltouch errors for example), although here usually it doesnt help to reconnect Octoprint but i need to restart Octopi.
Thank you
After trying everything for 2 days, and proving to myself that I am not as tech savvy as I thought I was, your firmware fixed my issues.
Thank you so much!
Hey. I have installed this…
Hey. I have installed this firmware, tested ABL and it works much better than on official firmware.
After that i have tried to print something though and run onto serious problems.
Most of the times, i submit the job, the hot end only heats up to 175C, regardless of the hotend temp set in slicer.
After several attempts, i finally managed to submit a print job, after which the hot end warmed up to 205C, i think that the printer actually started printing, but the extruder was constantly trying to retract the filament keeping the hotend empty.
I think this is now resolved…
I think this is now resolved, it just started working after a day
After BLtouch auto bed…
After BLtouch auto bed leveling completed, I start a print, the nozzle go to homing position center of the bed, the probe touch the bed then the BLtouch blinking red then stopped without printing do you know what is going on?
Thanks.
Blinking read means the…
Blinking read means the probing failed. Check the distance from the tip to the bed, and the wiring, remember that the endstop wires must go to the Z-Endstop connector, not the BLTouch connector in the board.
I did plug the white and…
I did plug the white and black wire connector to the zstop not the z probe in the skr e3 v.2 board. I checked the cable and and distance is corrected. It did z home successfully before and printed. I might need to auto bed level again.
The bed level should not…
The bed level should not affect the homing, unless you have a faulty EEPROM.
I have the blinking error when bltouch hits bed and retracts
I also have the bltouch error on homing problem. I ordered a new bltouch and it has same problem. Everything works except Z homing. The exact symptoms are that the bltouch extends its feeler, the z-axis heads towards the bed, and then when the feeler hits something it retracts, flashes the red light, and issues an error. Unfortunately the z-axis continues to head downwards to its demise.
I've tried everything I can find on the web. For now I've given up on the skr mini e3 V2 and installing an mks sgen-L V2.
Where did you connected the…
Where did you connected the black/white wires from the probe? Did you checked the voltage of your BLTouch logic board?
Extruder doesn't work after flashing your latest firmware
Hello
Printer was perfectly working with BigTreeTech recent firmware but now the extruder won't move at all.
Otherwise everything works, I could level the bed and start a print.
X and Y are moving but extruder does not...
SKR Mini E3 v2 on Ender 3
Any idea ?
Thanks for your work !
There are no changes in the…
There are no changes in the extruder configuration from the standard version. Check if:
Regards,