Skip to content

Flashing Creality firmware via mcu_util.py

Bricking Risk

This is always a risk of bricking an MCU using this method, we do not accept any responsibility for a bricked MCU if you decide to try this, all care and no responsibility!

Note

This feature does not apply if you are using a Ender 3 V3 SE or an older Ender 3 on a retail Nebula Pad, because the printer is flashed with standard klipper firmware via the Marlin bootloader.

Once Simple AF has been installed and the machine restarted at least once, the firmware now has a bootloader which allows you to flash new firmware without a restart.

The basic steps are:

  • Stop klipper
  • Enter bootloader of an MCU
  • Flash firmware to MCU
  • Start firmware on MCU
  • Start Klipper

The steps to flash the MCU on most Creality printers that have one looks like:

/etc/init.d/S55klipper_service stop
/usr/data/pellcorp/k1/mcu_util.py -b -i /dev/ttyS1 -br 230400 -g
/usr/data/pellcorp/k1/mcu_util.py -c -i /dev/ttyS1 -u -f mcu0_001_G32-mcu0_111_000.bin
/usr/data/pellcorp/k1/mcu_util.py -c -i /dev/ttyS1 -s
/etc/init.d/S55klipper_service start

Danger

Please remember if you flash new firmware via this method on a Creality OS printer, the existing /etc/init.d/S13mcu_update mechanism will flash your mcu back to its older firmware next time the printer is restarted. This happens automatically the only way to defeat it is to either remove the /etc/init.d/S13mcu_update or the specific /usr/data/klipper/fw bin file you are updating. Removing S13mcu_update is strongly discouraged because you will end up having significant issues next time we ship new firmware or a new version of klipper.

SimpleAF for RPI or PIK1

If you flash Simple AF firmware onto your MCUs via the /etc/init.d/S13mcu_update before you switch over to RPI or PIK1, you can then use the mcu_util.py to flash them in future from your pi.

image

The Serial Devices

You will need to check your printer.cfg for the specific /dev/ttyS? of your target MCU, for a K1 series printer they are:

  • nozzle_mcu -> /dev/ttyS1
  • mcu -> /dev/ttyS7
  • leveling_mcu -> /dev/ttyS9

For an Ender 3 V3 KE the mcu is:

  • mcu -> /dev/ttyS1

For an CR10SE:

  • mcu -> /dev/ttyS1
  • nozzle_mcu -> /dev/ttyS7

How do I build new firmware?

We have a fork of kalico for building firmware for Creality mainboads such as the K1 series, Ender 3 V3 KE, CR10SE, Ender 3 V3 and Ender 5 Max.

Check the readme for basic instructions on what to build.