This is the 2.x version of 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
- PID adjustments and auto tune from LCD
- 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)
- 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
- Cancel objects (M486)
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 than a simpler one before every print and this firmware configuration reflects this choice.
Unified Bed Leveling (UBL) will be implemented as soon as this feature becomes more stable, right now it still has several issues.
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 in their website are not that stable at all and installing every minor release can cause more problems that solutions to the printer users.
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 18.104.22.168, 22.214.171.124, 126.96.36.199... 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 wires (black and white) connected to the Z endstop connector 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 if you plan to install from the source code
- PlatformIO IDE extension installed on Visual Code if you plan to install from the source code
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\STM32F103RC_btt_512K\" to an SD card
- 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\.pio\build\STM32F103RC_btt_512K\" to an SD card (NOTE: This folder could 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.
- Disable the filament sensor if you are not using any.
- Optional steps:
- Adjust the extruder steps (menu avaliable in the LCD)
- Calibrate the hot end PID (menu available in the LCD)
- Set the linear advance K-Factor using Marlin tool.
- Set the desired fade distance for the bed level compensation. I recommend around 0.5mm for the Ender 3. (menu available in the LCD)
- Save all previous setting to the EEPROM
- 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: With this version of firmware, the S-Curve will be automatically be disabled when using Linear Advance.
- BLTouch is probing outside the bed or too far from the edges: Adjust the probe offsets (Configuration -> Advanced settings -> Probe Offsets )
- 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 and I am still not familiar with this processor model.