Introduction: Raspberry Pi Wall Display Without X-Windows

Picture of Raspberry Pi Wall Display Without X-Windows

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.

Step 1: Raspberry Pi Setup

Picture of 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

Picture of ​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"

or

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.

Either:

fbset -accel true; fbset -accel false

or

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

Comments

praveenm3 (author)2017-05-19

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.

sb37 (author)2016-03-13

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 ??

KaiH1 (author)sb372016-08-26

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

pfred2 (author)2015-07-03

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!

aplocher (author)pfred22016-01-14

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.

https://en.wikipedia.org/wiki/X_Window_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.

aplocher (author)pfred22016-01-14

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.

bhalliday (author)2015-07-19

Nice ible call x whatever you like

About This Instructable

40,794views

200favorites

License:

Bio: Geek of all trades. Co-founder and developer / designer at Thinkamingo, building educational mobile apps. Founding board member of Tampa Hackerspace. Ham (AI4DG). Tinkerer.
More by jonadair:Raspberry Pi Wall Display Without X-WindowsDesigning a 3D-printed Cover for the Spark ButtonMolding a Hacker Passport Stamp with Sugru, a Laser Engraver, and a 3D Printer
Add instructable to: