Before opening Raspberry Pi’s desktop GUI by default a rainbow screen displays followed by Raspberry Pi’s logo and command lines scrolling down. But you can disable these and add any image of your choice by following these steps:
REMOVE THE TEXTS AND LOGO
Start from removing all the default screens and also the 4 Raspberry images. Also, disable all the bootup lines.
sudo nano /boot/config.txt
Write this in your terminal and open /boot/config.txt, add “disable_splash=1” to remove the color test/rainbow screen. Now write
sudo nano /boot/cmdline.txt
At the end of the line add “logo.nologo” for removing the Raspberry logo.
Disable the commands and various bits of the kernel by adding “consoleblank=0 loglevel=1 quiet” next to “logo.nologo”. Make sure everything is in one line. After that press ctrl+X, Y for save and Enter to return to the command line.
Now remove the login prompt by running
sudo systemctl disable getty@tty3
ADDING NEW SPLASH SCREEN
Now place the desired picture as your new splash screen. To make the image readable install fbi, the image reader and the framebuffer. For installation write
sudo apt install fbi
It will take a few seconds to install. After this we have to create a file by
sudo nano /file/systemd/system/splashscreen.service
In the file add the following things :
[Unit]
Description=Splash screen
DefaultDependencies=no
After=local-fs.target
[Service]
ExecStart=/usr/bin/fbi -d /dev/fb0 --noverbose -a /home/pi/image001.png
StandardInput=tty
StandardOutput=tty
[Install]
WantedBy=sysinit.target
The “-d/dev/fb0” instruction tells the fbi which image to display.
“--noverbose” will suppress the fbi ‘status bar’ at the bottom.
If the selected image is in the proper measurements then no editing is required if not then “-a” will act as editor.
“ /home/pi/image.png” is the name of the image. You can update your image name here.
Through "StandardInput" and "StandardOutput" the fbi get access to tty.
The "DefaultDependencies" will override the systemd’s default behaviour.
The fbi will be loaded in the boot process when ‘WantedBy’ is accessed, not before the file system (and hence image) are ready, through the “After” option.
REBOOT YOUR PI
Enable your service by running
sudo apt-get update
sudo systemctl enable splashscreen
Now reboot the Raspberry Pi and verify your image by
sudo reboot
Through the following steps, we can disable the default screens and can add our desired image photo/animation/video as your splash or bootup screen.
Hope you enjoyed this article...
Check out our new Raspberry Pi 4 Clear cases
8 comments
Bulent
I have done the steps and it has run.
However, I had to change,
“sudo nano /file/systemd/system/splashscreen.service”
as
“sudo nano /etc/systemd/system/splashscreen.service”
for the version that I used
Matthew Barnes
Here’s an improved version that works for both fake and full KMS drivers on Raspberry Pi. The method shown here broke when I switched to the full KMS driver because it apparently takes longer for the framebuffer device to appear during boot. But it can be fixed by triggering the service with a path unit:
```
$ cat /etc/systemd/system/splashscreen.path
[Unit]
Description=Splash screen
[Path]
PathExists=/dev/fb0
[Install]
WantedBy=sysinit.target
```
Then update the service file like so:
```
$ cat /etc/systemd/system/splashscreen.service
[Unit]
Description=Splash screen for Raspberry Pi
[Service]
ExecStart=/usr/bin/fbi -d /dev/fb0 —noverbose -a /home/pi/image001.png
StandardInput=tty
StandardOutput=tty
[Install]
WantedBy=sysinit.target
```
(Note: StandardOutput=tty is not strictly necessary, but I left it here for consistency.)
Joey
I get a open /dev/fb0: No such file or directory
Johnny
Well this really sucks.. sure, you get a screen but then the screen stays on beneath the prompt and does not go away unless you clear the screen…
Tam SB
Hi Jeff, yes it’ll work with buster…