Raspberry Pi Wall Display Without X-Windows




Geek of all trades. Co-founder and developer / designer at Thinkamingo, building educational mobi...

This Instructable will walk through using a Raspberry Pi and a monitor or television to create a digital sign or display. A digital display like this can be used at home, at a company, or at any organization to display upcoming events, notices, calendars, photos, news, etc.

What's different about this is that we won't be using X-Windows on the Raspberry Pi to do this, but instead will be using framebuffer support to display images and video without the overhead of running X-Windows.

Teacher Notes

Teachers! Did you use this instructable in your classroom?
Add a Teacher Note to share how you incorporated it into your lesson.

Step 1: Raspberry Pi Setup

To begin with we need a Raspberry Pi that is attached to some sort of external display whether that is via HDMI/DVI or composite. You also need some way to interact with a terminal session on the Raspberry Pi. An SSH connection over the network or a serial cable is recommended, since we will be displaying images and video on the console.

Step 2: ​Configure Raspberry Pi to Boot Without GUI

If your Raspbian install is currently set to boot into the XWindows GUI or Scratch, you can reconfigure to boot to just a text console with raspi-config.

sudo raspi-config

Select "Enable Boot to Desktop/Scratch" then the "Console Text console..." option.

Step 3: Installing Packages

We will be using several packages:

  • fbi - linux framebuffer imageviewer
  • tvservice - power management for displays
  • omxplayer - media player

The current Raspian distribution already includes omxplayer and tvservice but we need to install fbi.

First we’ll update the packages database and apply any updates. If you haven’t updated recently, this may take some time.

sudo apt-get update
sudo apt-get upgrade

Then we will install fbi:

sudo apt-get install fbi

Step 4: Displaying Single Images With FBI

To display a single image, we use fbi, the framebuffer image viewer.

sudo fbi -a --noverbose -T 1 image.jpg 

The -a option automatically scales the image for the screen. The --noverbose option prevents the display of additional text on the image.

The -T 1 option selects which virtual console the image will display on. Since there is no user logged into the console, the virtual console is owned by root, so we must use sudo or run fbi as root in order for it to use the framebuffer.

pi@raspberrypi ~ $ ls -l /dev/tty1
crw------- 1 root root 4, 1 Jul  1 02:25 /dev/tty1

When fbi is run this way, it remains running in the background. If we run additional fbi commands to display more images, we will end up with multiple copies of fbi running. So before we run another fbi command, we can use killall to kill all processes named fbi.

When the background fbi process is killed, the last image displayed will remain on the framebuffer.

sudo killall fbi

Step 5: Displaying Slideshows With FBI

The fbi tool can also display a slideshow of images.

sudo fbi -a --noverbose -T 1 -t 10 image1.jpg image2.jpg image3.jpg

The -t 10 sets up a looping slideshow that will display each image for 10 seconds.

We can add a -u option to randomize the slideshow order. We can add a -1 option to prevent the slideshow from looping and only display once.

As with a single image, fbi will run in the background until killed.

Step 6: Displaying Videos With OMXPlayer

To display a video, we can use omxplayer.

omxplayer -b video.mp4 

The -b option blanks the screen (otherwise some terminal text may appear).

We can add a --loop option to loop the video continuously. We can add a --orientation 180 to flip the video upside down (90 and 270 work as well).

Step 7: Turning the Display Off and On

There are likely times when you would like to turn off the display. One command will turn off both the HDMI and composite displays. Most HDMI displays will power down to save energy but composite displays will likely remain on.

tvservice -o

To turn the HDMI display back on:

tvservice -p

To turn the composite display back on:

tvservice -c "PAL 4:3"


tvservice -c "NTSC 4:3"

NOTE: turning the HDMI display back on does not restore the framebuffer, so we need a bit of a workaround to get the framebuffer back to a usable state.


fbset -accel true; fbset -accel false


chvt 2; chvt 1

Step 8: Scripting It All

Bringing things together, one script can turn on the HDMI display, display a slideshow of 4 images 15 seconds apart, and then turn the HDMI display back off.

tvservice -p
fbset -accel true; fbset -accel false sudo killall fbi sudo fbi -a --noverbose -T 1 -t 15 -1 image1.jpg image2.jpg image3.jpg image4.jpg sudo killall fbi tvservice -o

Be the First to Share


    • Made with Math Contest

      Made with Math Contest
    • Multi-Discipline Contest

      Multi-Discipline Contest
    • Robotics Contest

      Robotics Contest

    12 Discussions


    Question 1 year ago on Step 8

    I am running fbi and omxplayer serially and after fbi statement sufficient sleep by calculating total files multiply by image screen ON time

    fbi statement fbi -autozoom -norandom -timeout $timeout -noverbose -blend $blend_time -vt 1 -readahead -cachemem 20 -once -list $filename

    sleep $sleepTime_s [calculated and enough seconds to display all images]

    and omxplayer by omxplayer -t off -r -b -o hdmi $vfile [in for loop]

    omxplayer process running in foreground hence no problem for omxplayer it cannot let next statement run before it complete.

    Above setup is working for me but sometimes screen is blank for image while debugging I found that fbi is running and omxplayer is not running, i.e. processes on system are running as required but I am not getting why screen is blank. Once this happen video is working fine while image always bank. On next reboot it may correct but again after sometime it start happening.

    Most chance to happen this when video file size is 18mb or above it. Very rare in case of small video files.


    Question 1 year ago

    Is there a way to set this up so that the slideshow (or one image) is displayed automatically at power up? I need to drive a display for a trade show and am looking for a simple option where the Raspberry Pi would just need to be turned on to get things going.


    Question 1 year ago on Step 8

    Congratulations for your project.
    It was very useful to me, but now I'm stuck in a situation.

    Whenever I press any key from the keyboard when the slideshow is on, it disappears and the command line is shown with the typed keys.
    Is it possible to force fbi to "take control" of the video output (HDMI in this case) and keep displaying the image regardless of what is being typed?


    1 year ago

    Congratulations for your project.
    It was very useful to me, but now I'm stuck in a situation.

    Whenever I press any key from the keyboard when the slideshow is on, it disappears and the command line is shown with the typed keys.
    Is it possible to force fbi to "take control" of the video output (HDMI in this case) and keep displaying the image regardless of what is being typed?


    2 years ago

    Hello jonadair

    Please help, Where to store that images?

    And i want to download images from web server and then want to display that images like slideshows, please help me.

    Thanks in advance.

    1 reply

    Reply 1 year ago

    You can store the images wherever you want as long as you provide de full image path


    3 years ago

    Nice project !! Is there anyway to make the display live ? I mean I would the list of images to be displayed to get updated in real time. I am trying to make a home display that can display news and weather of the day and keeps updating it automatically. Any ideas ??

    1 reply

    Reply 3 years ago

    Can someone answer this I want to know too also is it possible to run a python window here


    4 years ago on Introduction

    Please do not call it X-Windows. Try Xorg, or X Window. Most properly it can be referred to as the X Window System. X was made by MIT in 1984. Before anyone ever heard of that stuff made by those crooked Harvard dropouts called Windows!

    2 replies

    Reply 3 years ago

    In fact, I would argue that X-Windows is more correct, because you
    typically are dealing with an environment with more than one
    "X-Window". Calling something like that "X-Window" just sounds stupid.
    If you're real anal, then stick with "X-Windowing System" which still
    represents multiple windows and sounds... ok (but might make you sound a
    bit cocky after you say it a dozen times). Perhaps more appropriately
    it could be referred to as X windows (no hyphen, no capitalization of
    the W), to appropriately represent the plural windows that are used in
    the X-Windowing System.


    The term "X-Windows" (in the manner of the subsequently released "Microsoft Windows") is not officially endorsed — with X Consortium release manager Matt Landau stating in 1993, "There is no such thing as 'X Windows' or 'X Window', despite the repeated misuse of the forms by the trade rags"[48] — though it has been in common informal use since early in the history of X[49] and has been used deliberately for provocative effect, for example in the Unix-Haters Handbook.[4]

    This says X Window is incorrect too. I spent far too long looking into this. For the record, I am going to continue calling it X Windows and I'll do with a smile on my face.


    Reply 3 years ago

    Wow guy, chill out. I realize you probably haven't come out of your cave in several years, but Microsoft's OS is leaps and bounds ahead of what it was in the 90s when you last used it.

    I'm going to call it X Windows twice as much now just to spite you.

    Microsoft wasn't far behind either. According to Wikipedia the first iteration of Windows was introduced in 1985.


    4 years ago

    Nice ible call x whatever you like