Raspberry Pi: How to make a splash screen

By phunter | Posted June 3, 2016

So there are a lot of tutorials out there to make your own splash screen for Raspberry Pi’s Operating System Raspbian, but a lot of them are half baked, or don’t answer all the questions.

So here is the definitive guide on making your own splash screen.

Step 1: Make an image

You are going to need an image to show as your splash screen on boot. The size of it really depends on your resolution, and for me, I am using the Raspberry Pi Official 7″ LCD, which has a resolution of 800×480. So open up Photoshop, or Paint.NET, or whatever your editor of choice is and make one up. Name it splash.png. It doesn’t have to be a .png, its just what I went with.

Step 2: Make a fresh SD Card with Raspbian Wheezy

This isn’t really critical, but it does give us a clean slate to work on. Wheezy is important because Jessie uses a whole new platform, or so I have been told (Blame the forums if I am wrong).

Step 3: Boot up the Pi

Pop the SD Card in and start it up. Go through your standard process of configuration. I expanded the filesystem to the full size of the SD Card, changed the hostname and set a password that was different than default. The only thing to note, is do not set it to auto boot to desktop. Don’t worry, we will get to that soon enough if thats what you want.

sudo raspi-config
Step 4: Update, Upgrade.

This is almost critical. Updating makes sure the OS is up to date with the latest repositories and other utilities. Upgrading will enable things like Raspberry Pi Cameras and LCD’s.

sudo apt-get update

sudo apt-get upgrade
Step 5: Download FBI

Don’t quit on this tutorial yet, just because its starting like the other ones on the web. We will get into timing, and other nuisances shortly.

sudo apt-get install fbi
Step 6: The code

We are going to start with the startup script in the /etc/init.d folder. You can copy and paste mine if you want. If you are having issues with timing, pay close attention as this is different that most of the other tutorials. The do_start() function is different. The -T 10 says to show the image for 10 seconds, and the sleep 10 command makes sure that the script waits 10 seconds before resuming the next action, which is starting the LXDE Desktop. Also, change the splash.png to your images filename. Keep the /etc though.

The line starting with ‘su’, runs LXDE as the user ‘pi’, because future steps don’t like running as root, like these scripts are.

Save this as ‘asplashscreen’ in /etc/init.d, to make sure it is one of the first, if not the first, item to run on boot.

sudo nano /etc/init.d/asplashscreen
#!/bin/sh
 # Provides: asplashscreen
 # Required-Start:
 # Required-Stop:
 # Should-Start:
 # Default-Start: S
 # Default-Stop:
 # Short-Description: Show custom splashscreen
 # Description: Show custom splashscreen
 ### END INIT INFO
 do_start () {

/usr/bin/fbi -T 10 -noverbose -a /etc/splash.png &&
 sleep 10 &&
 su - pi -c "startx" &
 exit 0
 }

case "$1" in
 start|"")
 do_start
 ;;
 restart|reload|force-reload)
 echo "Error: argument '$1' not supported" >&2
 exit 3
 ;;
 stop)
 # No-op
 ;;
 status)
 exit 0
 ;;
 *)
 echo "Usage: asplashscreen [start|stop]" >&2
 exit 3
 ;;
 esac

:
Now set it to be executable, and to be honest, I don’t know what the second one is, but do it. Trust me.

sudo chmod a+x /etc/init.d/asplashscreen 

sudo insserv /etc/init.d/asplashscreen
Step 7: Setup Auto-Login for LXDE

We need to setup the Auto-Login for the pi user into the desktop. The file required to change is /etc/lightdm/lightdm.conf. Around line 78, look for ‘#autologin-user’. Make sure it looks like this:

autologin-user=pi
To be clear, no #’s.

EDIT: This is not the same as doing it through raspi-config. We are not setting auto boot to desktop, we are simply enforcing which user to use by default for LXDE.

Step 8: Upload the image

Upload the image you made, to /etc using Filezilla or whatever your favorite SFTP file transfer program is.

Step 9: Other Configuration

These are completely up to what you want to do. Heres a list of the most common questions and how to resolve them.

How to remove the Rainbow Square on boot

sudo nano /boot/config.txt
Add ‘disable_splash=1’ at the bottom.

How to remove the spam of text on boot

sudo nano /boot/cmdline.txt
Change ‘console=tty1’ to ‘console=tty3’. Add ‘quiet’ and ‘loglevel=3’ as well.

How to remove the blinking cursor/black square stuff

sudo nano /boot/cmdline.txt
Add ‘vt.global_cursor_default=0’.

How to remove the Raspberry Pi Logos

sudo nano /boot/cmdline.txt
Add ‘logo.nologo’.

 

Did I miss something here? Let me know and Ill figure it out and add it here.

 

Step 10: Reboot!

Bam! You got some sweet Splash Screen action, and you get your desktop! How about a little more?

 

Bonus Round:

Remove the LXDE Taskbar and Screensaver

Go to the LXDE-pi folder found here:

cd ~/.config/lxsession/LXDE-pi
The file you are looking for in these places, is called ‘autostart’. If its not there, create it:

nano autostart
By default, it looks like this:

@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
@xscreensaver -no-splash
Comment (#) out the 1st and 3rd line. Make it look like this:

#@lxpanel --profile LXDE-pi
@pcmanfm --desktop --profile LXDE-pi
#@xscreensaver -no-splash

@xset s off
@xset -dpms
@xset s noblank
Save it and restart.

EDIT: If this doesn’t have an effect, you may have to use the autostart file in /etc/xdg/lxsession/LXDE-pi.

The only other thing you could do from here, is full screen Chromium..?

Install and Start Chromium Fullscreen

First, obviously, install Chromium. (This only works on Wheezy, last time I checked. You can install Chromium on Jessie, but I think you have to either download the install files manually, or build from source.)

sudo apt-get install chromium-browser
Once that is installed, we need to setup a script to make life easier.

sudo nano /home/pi/startup.sh
In there, lets put in the startup for Chromium.

#!/bin/sh

chromium --kiosk --incognito "http://www.whateverpageyouwant.com/" &
Add that in the startup.sh. You can change the URL in quotes to whatever you want. A filename, another external site, whatever. Its your choice.

The kiosk and incognito switches are for making it fullscreen and attempts to prevent caching.

Now add the following into the autostart file for LXDE. If you didn’t do the ‘Remove the LXDE Taskbar and Screensaver’ section above, use that to find the autostart file, and add the following:

@sh /home/pi/startup.sh
This will execute the the startup.sh script we just created once LXDE starts.

Now that you have it configured, reboot and try it! The world is now your oyster.. well, at least this sweet little setup. Want to see more Raspbian Wheezy hackery? Post a comment below, or contact me using the Contact Page! I love a good challenge!