Updating the firmware for Ender-series printers is supposed to be easy:

  1. Download firmware files
  2. Format MicroSD card
  3. Put files on the card
  4. Put card into Printer
  5. Power-cycle printer

The instructions assume that:

  1. You can find the right firmware
  2. You’re using Windows to format the MicroSD card
  3. The “DWIN_SET” folder is easy to find
  4. Your printer has a 32-bit board
  5. The printer is plugged in

In my case, some of the assumptions didn’t hold true. Assumption #4 most of all.

Finding the Firmware

Firmware files for the Ender 5 Plus (with BLTouch) are here: https://www.creality.com/download/ender-5-plus-3d-printer For our printer, we used the “Ender-5 Plus-Marlin1.1.6-HW-V2.2-SW-V1.70.3BLTouchMulti0411” file. Eventually. It took some time to figure out that we had an Atmega control board, and that there wasn’t something wrong with our MicroSD card, or the MicroSD card formatting.

The .zip file of the firmware contains BOTH the updated firmware for the control board, and a corresponding firmware for the display board.

Update the Display Board

The display board contains the screens and glyphs used by the controller firmware. They’re matched to that specific firmware (probably), so when you update the controller firmware you also need to update the display firmware. This is done via a microsd card, inserted in a slot behind the display. For the Ender 5, you have to take the bottom off to get to it. Be careful of the fan plug.

Formatting the MicroSD Card

I don’t know if it’s a quirk, hardware limitation, or mystical knowlege, but the display board can only read MicroSD cards with:

  • MBR partition table
  • Relatively small partition
  • FAT32 filesystem
  • 4k allocation unit size

This is apparently easy to accomplish with Windows, very doable on Linux, and uniquely esoteric on OpenBSD. The Linux commands I used were:

  • fdisk /dev/sdX
    • delete all existing partitions
    • create new partition, “Primary”, default starting sector, +2G size
    • Set partition type to FAT32 (‘0b’)
  • mkfs.fat -F 32 -s 8 /dev/sdX1

This produced a 2GB filesystem that could be read by the display board. It receives the “DWIN_SET” folder (recursively) from the downloaded firmware file, and nothing else.

Flashing the Display Board

As noted above, you’ll need to take the bottom panel off the controller unit. I tipped the printer on its side, with the gantry hanging slightly off the edge of a table. The card slot you’re looking for is on the back of the display, physically behind the power switch.

Insert the card, power on the printer. The screen should go blue, with white text, showing file sets getting copied/installed. When it’s finished, the first line of text will be appended with “Done!”. At this point, power off the printer and put it back together. And right-side up.

Flashing the Controller Board

This is where I got stuck. No combination of firmware file and MicroSD card formatting had any affect. Eventually, I figured out that was because I had the “2.2” version of the controller board, not the “4.2.2” version. The older version uses the USB port for firmware updates, not the MicroSD card.

With the printer powered on, I connected my laptop to the printer via the Mini-USB plug. The printer showed up as “FT232R Serial Device”.

To execute the firmware update, I used PrusaSlicer. I tried Cura, but it wouldn’t detect the printer.

In PrusaSlicer, select the “Configuration” drop-down menu. There should be a “Firmware Flasher” entry, which pops up a window to select a serial port and firmware file, and launches the appropriate avr-suite commands to flash the firmware to the Atmega2560 chip. Then reboot, and it’s done.