Kept for the record
What this article describes no longer exists, so the steps below cannot be followed to the end. It stays online because people still link to it.
Tested with
Raspbian Stretch, April 2019. It has not worked on any Raspberry Pi OS since Buster, and the theme it edits is no longer part of the system.
Real Raspberry Pi homebrewers love to get every detail right. Such as the splash screen when you boot.
You have just built a beautiful digital picture frame. Now let’s customize the boot-up screen like a painter signs his work at the end of his artistic journey.
Why this does not work any more
I wrote this in April 2019 and tested it on a Raspberry Pi 3 Model B+ running Raspbian Stretch, desktop kernel 4.14. It was right at the time. It is not right now, and the reasons are worth knowing if you came here looking for a tidy boot screen:
- The Plymouth theme this article edits,
pix, is not part of Raspberry Pi OS any more. There is no/usr/share/plymouth/themes/pix/to copy a file into. - The boot partition moved. What this article calls
/boot/cmdline.txthas been/boot/firmware/cmdline.txtsince Bookworm, so editing the old path creates a stray file and changes nothing. fbsetwill not tell you your resolution any more. There is no framebuffer console under the KMS driver.- A frame built with picframe3 runs Raspberry Pi OS Lite and draws straight to the screen, so there is no desktop splash to replace. It shows the first photograph about twenty seconds after you plug it in, which was most of the reason anyone wanted a nicer boot screen in the first place.
What follows is the 2019 method, left as it was.
One word of advice: It probably makes sense that you do this when everything else works fine.
Although I found that the start-up commands scroll down far too fast to be able to read much anyway, the boot screen may contain some useful information if you are still in debugging mode.
But fear not, you can revert to the Raspberry Pi’s original boot show quickly.
Polishing the boot process
To present a clean and undisturbed splash screen, we are disabling the display of these items (in order of appearance)
- The four raspberries in the top left corner
- The boot message log
- A blinking cursor top left
- The splash image “Welcome to the Raspberry Pi Desktop”
- A one-liner with boot notifications below the splash image
Creating the new splash screen
Find out what the resolution of your screen is. If you don’t know, connect to your Raspberry Pi Terminal and enter
fbset
It will return something like
mode "1920x1080"
geometry 1920 1080 1920 1080 32
timings 0 0 0 0 0 0 0
rgba 8/16,8/8,8/0,8/24
endmode
There you have it: 1920×1080.
Now start Photoshop or whatever program you use and create a PNG image in the same pixel size and call it “splash.png”.
Move the file over to your Raspberry Pi home directory.
If you haven’t installed file sharing, open a new Terminal window on your PC or Mac (do not connect to the Raspberry Pi!), navigate to the directory where you keep your splash.png file, e.g.
cd Desktop
Secure copy (scp) splash.png (replace the IP number with the IP of your Raspberry Pi) and enter the password of your Raspberry Pi at prompt.
scp splash.png pi@192.155.198.46:/home/pi/
Now the file is on your Raspberry Pi.
Cleaning up the boot process
Open a Terminal connection to your Raspberry Pi again and copy the splash.png file from the desktop into the Plymouth directory.
sudo cp /home/pi/splash.png /usr/share/plymouth/themes/pix/splash.png
If you like it clean, you can now remove the splash.png from your home directory. It has safely been copied to its rightful place somewhere deep down in the system hierarchy.
Let’s remove the one-liners below the splash screen.
sudo nano /usr/share/plymouth/themes/pix/pix.script
Comment out the following lines (i.e., add a “#” at the beginning):
message_sprite = Sprite();
message_sprite.SetPosition(screen_width * 0.1, screen_height * 0.9, 10000);
my_image = Image.Text(text, 1, 1, 1);
message_sprite.SetImage(my_image);
Let’s clean up everything else. Type:
sudo nano /boot/cmdline.txt
A long line will open. At the end of this line add
logo.nologo vt.global_cursor_default=0
My entire line then looks like this: (don’t just copy it; your PARTUUID will be different)
dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=PARTUUID=f404ba9e-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles logo.nologo vt.global_cursor_default=0
And finally
sudo reboot
You should now have a clean boot process, only displaying your customized splash screen.
Conclusion
I finished this article in 2019 by promising a version for Buster. I never wrote it, and four releases have gone by since, so it is better to say so than to leave the promise sitting here collecting readers.
If what you actually want is a frame that is showing a photograph a few seconds after you plug it in, the answer in 2026 is not a prettier splash screen. It is the current build guide, which gets there without a desktop at all.
Was this article helpful?
Thank you for your support and motivation.