More CPU swaps to make things harder for everyone

Those of you who bought Ender 3 S1 printers or replacement boards may have noticed that some of them are coming with STM32F401 CPUs on them instead of the STM32F103 CPUs that they originally shipped with. The good news is that Creality did release the source code for them and the bootloader file but the bad news is that it looks like they are doing some odd things to the bootloader that are preventing people like us and other community members from loading our own Marlin firmware builds (or Klipper builds).

Updates not Working…

We’ve spent about 12 hours over the last 3 days trying to get any firmware to load on these F4 CPU boards and even the source code that Creality provides will not flash on them. Looking at the bootloader file we can see calls to DWIN folders and other things you would not expect to find in a bootloader which leads us to a few possible conclusions based on the info we have as of making this post. These could change as we fight with these boards more and/or make our own bootloader to get around these issues.

  1. Creality could have just made a defective bootloader.
  2. Creality made a bootloader to prevent end-users from loading their own firmware.
  3. The source code provided isn’t the actual source code they used, which is why it will not flash.

What do we have working?

We have firmware on our testing branch on Github that builds and looks like it should be 100% working, but we cannot get the boards to take it from the SD card with their stock bootloader.

The firmware works 100% when flashed with a STLink so we know the issue lies with Crealitys stock bootloader.

What have we tried so far?

  • Different file names (firmware.bin, random.bin names, update.bin, updata.bin)
  • Putting them in a STM32F4_UPDATE folder as the bootloader looks for files in that directory on the SD
  • Different builds of the firmware including their own source code, our source code, and community-made ones.
  • Different SD card sizes ranging from 128MG up to 16GB
  • Different formatting types (FAT, FAT32)
  • Different allocation sizes (1024, 2048, 4096, 8192)
  • Tried multiple F4 CPU S1 boards, none took the firmware

None of these changes/tries actually work other than bypassing the stock bootloader and flashing with a STLink.

When will we have firmware out for these boards + CPUs?

We do not know. We contacted Creality to see what is going on and hopefully, they get back to us. We do not have any ETA since we do not know how much work it is going to take to get these boards with these CPUs supported.

We’ll spend a little more time this week on it but if all fails we will just write our own bootloader based on Open BLT and you’ll just have to flash the bootloader over what is on the board using an STLink. If that is the route we will take, we will get the cheap STLink V2 Clones in as they work well and are inexpensive for burning a new bootloader to these CPUs. We would prefer not to have this be the case but we’re getting to the end of what we can do with Crealitys stock code.

What if I want to use Unified 2 on my S1 and/or upgrades from TH3D?

Your options would be to wait for an F4 CPU firmware to come out or see if you can get your hands on an Ender 3 S1 board with the STM32F103 CPU.

We only are able to get F4 boards so the F1 boards may be hard to come by, especially with the silicon shortages still happening. If you get an F4 board from us it will just come with the stock Ender 3 S1 firmware from Creality.