Bed Tramming Example

Easily Upgrading The Ender 3 S1’s Firmware

I, once scared to tackle upgrading my printer’s firmware because of concern I may brick it or get worse performance but it turned out to be a non-affair and only took a few minutes.

Why Upgrade?

Many reasons, but the top ones for me are:

  • Tram/Bed Level Wizard – I can level using the CRTouch easily right on the device
  • Arc Welder Support – Basically gives you better curves
  • Thumbnails right on devices
  • A faster transfer rate to Octoprint. Double the baud rate

If making this upgrade is a bit scary for you. I wanted to put together a step-by-step guide for upgrading from the Creality stock Marlin firmware to the much better Marlin Professional firmware developed and maintained by Miguel Risco-Castillo whom you can support if so included on Patreon.

Step 1: Which chip does your Ender 3 S1 use?

There are 2 ways to determine this, the easiest (but perhaps out of date if reading this far from the date of writing in 2023) is to look in the on-screen menu under “Advanced” and then “Info” if it is running a version higher than 3.0.0.0 then you will be using the STM32F401 chip and should work against that, if it is lower, in the 1’s then it is using the STM32F103 and you should work against that.

The 2nd way is to turn off the printer, turn it to the side, take the bottom plate off and look at the main chip. Here is a photo of mine

As you can see I have the 32-bit, F401 chipset

Step 2: Download the correct firmware

Go to this page, scroll to the very bottom and looks for the “Assets” section. There you have a few options to download

  • F1 – This is if you DO NOT have the F401 chip
  • F4 – This is if you DO have the F401 chip
  • F4-UBL – This is if you want to install the Universal Bed Leveling version of the firmware. If you are a beginner and reading this tutorial you likely DO NOT want to use this one.

Once downloaded you will have a .bin file on your computer, rename it to the month and year you downloaded it. For example Ender3S1-F4-Jan2023

Step 3: Get the firmware on the printer

This was the scariest step but was also the easiest.

  1. Turn off your printer, unplug anything plugged into the USB-C Port
  2. Take out the SD card, put it in your computer
  3. If you have the F401 chip: Create a new folder on the SD card named STM32F4_UPDATE
  4. Copy the .bin file to that folder
  5. Eject and unplug the SD card from your computer
  6. Put SD card into the printer
  7. Turn printer on
  8. Wait 20 seconds
  9. VOILA!

That should be all there is to it. You now have the latest version of the “Marlin Professional” firmware which should be based on a much more modern version of the main “Marlin” firmware then came with your printer when it was built in the factory.

That said, just like any new printer you will need to set up a few things. This is what I did first.

Step 4: Level/Tram the Bed

As you will read on ANY tutorial about any printer issue ever a clean and level bed is the most important thing to getting a good print. Luckily Marlin Professional makes that easier. Just go to Prepare > Bed Tramming > Tramming Wizard and follow the on-screen instructions. It will get you VERY close to level, and from there you can create a mesh (an article for another day) to have the software account for any imperfections on the build plate.

Bed Tramming Example
Example of Marlin’s new Bed Tram Wizard

Step 5: Update Slicer

Edit your machine settings here: Preferences > Prints > Machine settings and use the following G-Codes:

Start G-Code

    M201 X500.00 Y500.00 Z100.00 E5000.00 ;Setup machine max acceleration
    M203 X500.00 Y500.00 Z20.00 E50.00 ;Setup machine max feedrate
    M204 P500.00 R1000.00 T500.00 ;Setup Print/Retract/Travel acceleration
    M205 X8.00 Y8.00 Z0.40 E5.00 ;Setup Jerk
    M220 S100 ;Reset Feedrate
    M221 S100 ;Reset Flowrate
    
    G92 E0 ; Reset Extruder
    G28 ; Home all axes
    M420 S1 Z2; Use Level Mesh up to 2mm;
    G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
    G1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position
    G1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first line
    G1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little
    G1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second line
    G92 E0 ; Reset Extruder
    G1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed
    G1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish

End G-Code

  G91 ;Relative positioning
    G1 E-2 F2700 ;Retract a bit
    G1 E-2 Z0.2 F2400 ;Retract and raise Z
    G1 X5 Y5 F3000 ;Wipe out
    G1 Z10 ;Raise Z more
    G90 ;Absolute positioning
    
    G1 X0 Y220 ;Present print
    M106 S0 ;Turn-off fan
    M104 S0 ;Turn-off hotend
    M140 S0 ;Turn-off bed
    M84 ;Disable steppers

Step 6: Test Print via SD Card

Open up one of your previous STLs in Cura, re-slice (with the new G-Code), save to SD and print.

And that’s really it. All in it took me maybe 45 minutes and most of that “active” time was pulling the bottom off the printer to get that photo, something you may not need to do.

As you can see by now in the process the new firmware has quite a bit of advanced functionality, and as you have seen just from the 2 calibration cubes there is some improvement, and I can print at PLA 120 mm/s without an issue. Sometimes going up to 150 mm/s depending on the print. Once I get more experience with it I expect my configurations to improve even futher.

If you are using Octoprint, there is a bit more configuration you CAN do, that said it will just work out of the box, but you can do a bit more to optimize printing. I’ll eventually get a write-up together for it, but for now, I hope this has been helpful for you to get your firmware updated.

Sources

  • https://github.com/mriscoc/Ender3V2S1/wiki/Octoprint
  • https://github.com/mriscoc/Ender3V2S1/wiki/Slicer-G-code-Scripts