Skip to content

Setting a boot splash screen

Warning

This guide has been verified on Raspberry Pi OS 12 (bookworm). It should work with other OS versions, but it has not been tested. If you decide to follow this guide, please let me know about the results and any changes you had to do to make it work.

Installing dependencies

Run the following command to install requirements for displaying the boot splash, the Plymouth service and the default Raspberry Pi splash:

sudo apt -y install plymouth rpd-plym-splash

Configuring

We now need to enable the splash in Raspberry Pi configuration. Let's go to the Raspberry Pi configuration tool:

sudo raspi-config

There, select the following options:

1 System Options

raspi-config initial screen

S7 Splash Screen

raspi-config system options

Then, when asked if you want to show the splash screen at boot, select Yes and Ok.

raspi-config enable splash screen raspi-config splash screen enabled

Exit the tool by selecting Finish. Do that by pressing the right arrow twice. When you reboot your Pi now, you should see the default Raspberry Pi splash screen1:

Raspberry Pi default splash screen

Creating your own theme

To make your splash screen survive any future system updates, we will create our own theme based on the original one we just installed. (Thanks to @mjonuschat from the Voron Discord server for the suggestion!)

To do that, let's copy all the files to a new directory:

sudo mkdir /usr/share/plymouth/themes/voron
sudo cp /usr/share/plymouth/themes/pix/pix.script /usr/share/plymouth/themes/voron/voron.script
echo -e "[Plymouth Theme]\nName=voron\nDescription=3D Printer Splash Screen\nModuleName=script\n\n[script]\nImageDir=/usr/share/plymouth/themes/voron\nScriptFile=/usr/share/plymouth/themes/voron/voron.script" | sudo tee /usr/share/plymouth/themes/voron/voron.plymouth

When you run the last command, verify that the output looks like this:

Correct contents of the Voron theme config file

After that, verify your new theme folder contains two files named voron with different extensions:

ls /usr/share/plymouth/themes/voron

The result should look like this:

Correct contents of new Voron theme folder

Now, we need to add the splash image. First, you need to get your own splash image on the Pi. For this guide, I will assume your splash image is somewhere on the Internet and you want to download it directly to your Pi. To do that, execute this command:

wget <url> -O splash.png

e.g. wget https://b.chihi.ro/juUSHP.png -O splash.png. Then copy the splash image to the splash config directory:

sudo cp splash.png /usr/share/plymouth/themes/voron/splash.png

The last step is to enable the new theme:

sudo plymouth-set-default-theme -R voron

When you reboot, you should see your new splash image displayed on the screen.

Making the splash screen stay longer

Tip

This step is optional. It may cause your Pi to boot a little bit slower and is purely for aesthetics (makes the black screen between KlipperScreen and the splash screen shorter).

To add a 10 second delay before the splash screen stops being shown, execute this command that will create a delay service:

echo -e "[Unit]\nDescription=Waits for Plymouth animation to finish\nBefore=plymouth-quit.service display-manager.service\n\n[Service]\nType=oneshot\nExecStart=/usr/bin/sleep 10\n\n[Install]\nWantedBy=plymouth-start.service" > /etc/systemd/system/plymouth-wait-for-animation.service

Then verify that the file looks correct by executing:

cat /etc/systemd/system/plymouth-wait-for-animation.service

It should look like this: Correct wait for animation service

If everything is fine, you can enable the delay service:

sudo systemctl enable plymouth-wait-for-animation.service

Congratulations! You should have a beautiful splash screen displaying whenever you start your printer up.

Final product


  1. Image source: mypicode.wordpress.com