Projects

Creality Ender 5 with the 4.2.7 Board and Marlin 2.1

I’ve been baby-stepping my way into 3D printing for about three years now.

I started with the goal of wanting to print a particular model I found on the internet, and I worked my way towards how to print it. After each print, there was always something to adjust or upgrade, and 3D printing became a hobby.

The entire scene is a lot to take in. There are loads of different apps and file formats for the 3D modeling and CAD work, websites for downloading pre-made models, and concepts like slicing and gcode that the printer ultimately uses.

And that’s just the software side of things. On the hardware side, there are different types of printers (like filament or resin), different styles of each type, and different mediums for each printer type.

Initial Upgrades

The cantilevered design of my printer, the Ender 5, is not that great, so I started with adding bed supports to help stiffen up the front edge. I also added a strain relief bracket to move the bed heating wires.

The biggest improvement to my prints came from using a glass build surface since it doesn’t warp as easily as a metal surface and using hairspray to give the glass some tackiness so the print has good adhesion.

Using OctoPrint reduced the friction of using the printer. I can leave the printer in a closet, load it with a print from my computer in the office, and keep an eye on it through a webcam (that’s being held up with a printed webcam mount).

To connect the printer to the Raspberry Pi running OctoPrint, I use a USB Power Blocker to prevent the printer from drawing power from the Raspberry Pi when its main power supply is turned off. Without this, the printer can cause an undervoltage alert on the Raspberry Pi. An alternative to the device is to tape the 5V pad or modify a USB cable.

Control Board and Firmware Upgrade

The most recent upgrade I made to my setup was swapping out the 8-bit 1284P (v1.1.4) board that came with the Ender 5 with the 32-bit ARM Silent Board (v4.2.7).

The 32-bit board is way easier to deal with than the old one. I don’t think I would’ve upgraded the firmware on the 8-bit board. It required extra hardware to jump it since it lacked a bootloader, and the 8-bit board’s skippy resources would mean some things would have to be turned off.

Building Marlin for the Ender 5

Every 3D printer needs firmware to process the gcode supplied to the printer and control the hardware. Creality, as well as a lot of other printer manufacturers, uses Marlin.

There is a pre-built firmware file you can download from Creality for the Silent Board and the Ender 5. However, you might want additional features enabled for the printer, such as adding support for a bed leveling sensor or enabling additional control options in OctoPrint.

Compiling your own custom firmware is more straight-forward than you might think with the help of a few Visual Studio Code extensions.

What Is Needed

Note that the firmware source code and configuration files for various printers are two separate downloads. You need both, and you need to put the specific configuration files for your printer into the firmware source code directory.

For a Creality Ender 5 with the 4.2.7 board, the files are listed in the Configurations-release-2.1\config\examples\Creality\Ender-5\CrealityV427 directory.

Steps To Build and Load

  • Unzip the Marlin Firmware source.
  • Find the pre-built config files in the configuration download.
  • Copy the configuration files to the Marlin directory in the firmware source code you’ve downloaded.
  • With the Auto Build Marlin extension, you just need to “Build” the board for the first environment listed. No need to edit the configs you added to Marlin or the platformio.ini file.
  • “Upload” the board to get a production build made.
  • Click on the file name to open the directory that contains the built firmware.
  • Copy the firmware file ending in .bin to a formatted SD card. The printer expects nothing else to be on the card and for the card to be FAT formatted and 8GB or less.
  • Load the card in the board and power on the printer.
  • Re-initialize the EPPROM if asked.

Customizing the Firmware

If you plan to use OctoPrint, you’ll need to edit the Configuration.h and Configuration_adv.h files so you can use the USB port to control the printer and for the printer to send action commands back to OctoPrint.

#define SERIAL_PORT_2 3
#define BAUDRATE_2 250000   // Enable to override BAUDRATE
#define HOST_ACTION_COMMANDS

Then re-build and re-upload the firmware to the printer via an SD card.

The Silent Board in Use

I’m surprised by how quiet the 32-bit board actually is. I didn’t think a “silent” controller would actually make printing quieter, but I guess it’s just able to control the steppers better.

Secondly, it’s a lot faster. With the 8-bit board, the printer never moved as fast as it does with this new board. It did not matter what I set travel to in the slicer because it was handling serial data and processing the gcode at the same time.

Lastly, being able to customize the firmware of the new board with support for things like HOST_ACTION_COMMANDS has improved using the printer with OctoPrint, and it was a fun experiment to boot.