Introduction: How to Make a Custom Boot Screen for Your Marlin 3D Printer

This guide will show you how to put a custom boot screen onto your 3D Printer. Why would you want to do that? Maybe you want to show off your printer. Or maybe you're making a custom firmware and want to personalise it when you distribute it. In any case, creating a custom boot screen is a great way to learn both how to modify the Marlin firmware, as well as how to upgrade your printer's firmware.

Supplies

This guide assumes a few things:

  • You know how to operate basic computer functions such as extracting folders.
  • You understand how to follow instructions given on sites other than this guide, such as installing software.
  • You have some experience with 3D printers, particularly the setup you will be modifying.

You will need a few supplies:

  • A computer, preferably a laptop, with Arduino IDE installed
  • A USB Cable to connect to your printer
  • Alternatively, you can use a web interface (such as the open-source OctoPrint) that supports upgrading the firmware that way. This may require extra plugins or extensions. OctoPrint in particular uses a plugin called Firmware Updater.
  • A printer that is running the Marlin firmware.

Some additional supplies that may be needed, but not always:

  • An Arduino to use as a programmer, or a USB-ISP
  • Jumper cables to connect to the programming header on your printer

For software, you will need to download the following:

In this guide, I will be flashing a custom firmware onto a Creality Ender 5. The process will be similar on other machines, especially Creality machines, but as long as it runs Marlin this guide will work. You will simply have to download the appropriate pre-made configuration for your printer and mainboard.

Step 1: Choose Your Image

The first step to creating a boot screen, is to select an image to use. If you are creating your own image from scratch, make sure that it is a resolution of 128x64 and is a monochromatic image.

For this guide, I will use the Ubuntu MATE logo to demonstrate how to create a boot screen from any arbitrary image.

Step 2: Resize Your Image

If you're using an image that isn't the correct resolution, you'll have to crop it down so the converter will accept it. One way to do this is with the open source GNU Image Manipulation Tool, or GIMP. Using GIMP can seem pretty complex, but what we're doing is very simple.

Here's what you want to do:

  1. Load you image into GIMP - you can do this by launching GIMP and selecting File > Open..., then navigating to the folder your image is in and selecting it. You should see a screen like the first image.
  2. Select Image > Scale Image... to open the Scale Image dialog box.
  3. Making sure the width and height are linked, set the size to be at least less than 128x64 - if you have a tall image, set it to 64. If you have a wide image, set it to 128. As long as both values are smaller than this it will work correctly
  4. Select File > Export As... and navigate to where you want to save the file.
  5. Make sure that the file extension is .png or .jpg. GIMP will automatically create the correct file type, so you can leave all the options as their defaults.
  6. Note the location that you saved the file, as you'll need it in the next step.

Step 3: Converting Your Image

Once you have your image, you'll need to convert it into a format that your printer will understand. Doing this is very simple: all you have to do is navigate to the Marlin Bitmap Converter. On that site, simply click the Browse... button and select your image.

  • Note: If you image is all one color, then you don't have enough contrast in your image. to fix this, simply re-open the image in GIMP and select Colors > Level... and adjust the input levels until you get a black and white image.

At the bottom of the page, you will see a few options. Select Marlin 2.x and choose invert, if you want your image to be inverted. Once you have the image converted, keep the browser tab open and move on the the next step.

Step 4: Preparing the Firmware

Once you download the firmware, extract it to a folder of your choice. From there, navigate into the folder you extracted it to, and open the Marlin folder. The next step is to download the correct configuration. Download and extract the latest release of the configurations, and open the folder corresponding to your printer. Since I'm using a Creality Ender 5, I'll navigate to ./config/examples/Creality/Ender-5/CrealityV1.

Next, what you need to do is to copy the *.h files into the folder that your stock firmware is in. Make sure you overwrite the stock firmware, and not make a copy.

Step 5: Adding Your Image to the Firmware

Open the Marlin.ino file in the Marlin folder of the firmware (where you placed all the configuration files). Once the Arduino IDE opens, select the tab named _Bootscreen.h. If the tab doesn't exist, then create a file call _Bootscreen.h. Open the file, and delete anything that is in the file. Copy the code that was generated on the converter website into your empty _Bootscreen.h file.

Step 6: Compiling Your Firmware

Compiling may seem like the most complicated step, but it is fairly straight-forward. All you have to do is make sure that you have the correct board and Arduino type selected. Since I'm using a Creality V1 board, I need to install a separate library that allows me to compile for my board. Look up specific details for what libraries are required for your specific printer online.

Once you have all the required libraries, simply select Sketch > Verify/Compile. (or you can press Ctrl-R). If it compiles with no errors, you are good to move on the next step. Compiling may take a while, especially on slower computers. Be prepared for it to take a while, even up to an hour on especially slow computers.

Step 7: Uploading Your Firmware - Arduino IDE

From here, you have a few options - you can

a) Upload the firmware to your printer directly from the Arduino IDE, or

b) Upload the firmware to a network interface, such as OctoPrint.

To upload from the Arduino IDE, simply connect your printer to your computer, either directly of USB or over a ISP programmer, and click upload.

If you get errors over USB like timeouts or if it is unable to connect, you most likely do not have a USB bootloader. You will have to program it over something else, like the ISP port on the mainboard.

If all went well, simply restart your printer, and you should see your new boot screen. Otherwise, you may have to try uploading again. If it still fails, look up the error the Arduino IDE is giving you and follow whatever help you find on the internet.

Step 8: Uploading You Firmware - OctoPrint

Uploading your new firmware through OctoPrint (or a similar web interface) can be a bit more complicated, but it has the advantage that you won't have to move your computer or change your printer setup.

The first thing you need to do is export the compiled binaries of your firmware. In the Arduino IDE, select Sketch > Export Compiled Binary.

The next step is to upload your firmware to your OctoPrint setup. Navigate to OctoPrint and open the Firmware Updater plugin.

Step 9: OctoPrint - Step 2

Once you have the Firmware Updater plugin open, click Browse... next the the from file label. Browse to where you have your compiled firmware and select the file that does not include bootloader in the name. If you do upload that file, you risk irreversibly damaging your printer. The plugin will also warn you if it detects a bootloader. If you see this warning, make sure that you cancel the firmware update.

Step 10: Reboot Your Printer

Finally, you are now able to restart your printer. When it boots up you should see your new custom boot screen.

Step 11: Further Information

If you would like to go further into customising your printer, you can check out Marlin's configuration documentation page to see what all the options do.

If you don't have an Arduino or ISP programmer, you can use a Raspberry Pi instead! You will have to be comfortable with a Command line interface, but it will work in a pinch. You can find some more information here.

If all else fails, and you can't get your printer to update, then you may want to invest in a new mainboard. If you can afford it, they are often more reliable than stock mainboards, especially in cheap Chinese printers like Creality, and often include a USB bootloader from the factory. These also often have bigger Arduino cores that can have more features than the stock boards.