Un-Bricking My Ender 3 Pro

I recently had the pleasure of learning how to un-brick my Ender 3 Pro, and the usual helpful guides online were not helping me–everything I was trying was not working! In the end, I prevailed, and the magic bullet turned out to be (spoiler alert) COMPLETELY WIPING THE SD CARD.

The first hurdle you have to overcome is to understand which printer you have, so that you can know how the firmware flash/upgrade process works:

PrinterBoardFlash Mechanism
Ender 3v1.1.xArduino w/ bootloader
Ender 3 Prov1.1.xArduino w/ bootloader
Ender 3 Prov4.2.xSD Card Flash
Ender 3 V2N/ASD Card Flash

This guide will only work for printers that have the capability to flash from an SD card.

I have an Ender 3 Pro with a 4.2.2 board, so the SD card flash mechanism should work for me. However, after trying multiple times using multiple SD cards and multiple firmware files, I was still getting the dreaded “blue screen of death.”

In the end, just before the new SD cards I ordered arrived, I was able to get my printer to flash. First, though, I had tried all the following, which I found as recommendations floating around the web (and reddit.com/r/ender3):

  • Deleting all the files from the SD card
  • Adding a firmware file
  • Renaming the file to something completely unique
  • Removing the SD card and rebooting to see if the SD card was causing the boot failure
  • Leaving the printer unplugged for an hour
  • Leaving the printer on with the SD card for a prolonged time (30m) to see if the firmware flash was taking a long time
  • Trying a different firmware file
  • Reformatting the SD card with MacOS Disk Utility (GUI)
  • Reformatting the SD card with MacOS diskutil (command line)
  • Deleting the partitions and recreating them with Linux (command line)

In the end, what worked was completely zeroing out the SD card, then recreating the partition and reformatting. If I were to have the same trouble with an SD card not flashing an Ender 3 today, here is what I would do:

  • Zero the SD card
    • MacOS:
      • Insert the SD card to my computer
      • Press Cmd+Space and enter Terminal to open the terminal
      • Type diskutil list to get a list of disks attached
      • Locate the disk that is the SD card (e.g. disk2)
      • !! For everything following, replace disk2 with your actual disk that you found in the previous step !!
      • Unmount the partitions with diskutil unmountdisk disk2
      • Zero the disk with sudo dd if=/dev/zero of=/dev/rdisk2 conv=sync status=progress bs=16m (note that the leading ‘r’ on the disk name is not a typo)
    • Windows
    • Linux
      • Insert the SD card to my computer
      • Open a terminal/command line
      • Run dmesg | tail and look for the disk name in the recent history, likely something like /dev/sdc
      • !! Use the name of the correct disk in place of /dev/sdc from here on !!
      • sudo dd if=/dev/zero of=/dev/sdc bs=16M conv=sync status=progress
  • Format the SD card and make the partition
    • MacOS
      • Format the SD card with sudo diskutil erasedisk FAT32 Ender3 MBR /dev/disk2
      • “Ender3” is the label for the card. You can change that to whatever you want, but keep it simple and short.
    • Windows
      • If you used Steve Gibson’s InitDisk as stated above, this is already done
    • Linux
      • sudo fdisk /dev/sdc
        • ‘n’ for new partition
        • ‘p’ for primary
        • ‘1’ for first
        • Take the default for first sector
        • Take the default for last sector
        • ‘t’ to change the type
        • ‘b’ to set the type to ‘0x0b’ W95 FAT32
        • ‘w’ to write the changes
      • sudo mkfs.vfat /dev/sdc1
        • Note that the ‘1’ is not a typo. /dev/sdc is the disk, /dev/sdc1 is the first partition on the disk
      • sudo sync
  • Place the firmware file on the SD card
    • Eject and re-insert, likely your OS will automatically mount the filesystem
    • You don’t need much advice on how to do this, except…
    • Only place one file on the card.
    • Give the file a random name. Literally. Like fghdgddyanbnd55.bin
    • Change it every time you attempt an upgrade. The printer remembers (at least) the last file name used, and will not re-attempt an upgrade if the filename is the same.
  • Upgrade the firmware on the Ender 3
    • Power off the machine
    • Insert the SD card
    • Power on the machine
    • If you don’t get a printer status screen or any sort of change in the first fifteen seconds, it didn’t work right.