Poor man’s digital signage

This article shows how to create a simple and cheap digital signage solution using only a webbrowser and a php script. A live demo and a screencast are provided. The script is available for download.

Digital signage

Have you ever walked in to a building and noticed a huge LCD or plasma screen near the entrance hall displaying all kinds of information? These screens are so called digital signage screens. A digital sign (usually on a big screen) to present information. These screens are remote controlled and can even display full motion video and photo’s. In fact that is no surprise because they are essentially computer display screens. Dedicated PC signage software provides scheduling, and easy remote management to the control the content displayed, be it text, video, live websites etc.

My employer recently purchased a signage screen in order to provide faculty student and visitors with dynamic information. While we wait for the IT-department to install the dedicated software I proposed a simple solution for displaying dynamic content in the meantime. I call it poor man’s signage. In comparison with other simple temporarily solutions like showing a looped powerpoint presention, the poor man’s signage has the advantage of being able to show live webpages.

Overview poor man’s digital signage

My solution is based on a webbrowser that runs full screen on the PC that is connected to the signage screen and a simple php script on a server. The script controls the page content on the browser. In my current implementation the content is a sequence of live websites. Setup is simple. On the signage PC the browser has to be pointed to the server URL only once. A data file on the server contains the the URLs and the desired display time of websites that will be displayed on the signage PC in a loop. You can include any website you like. If your browser has multimedia plug-ins you can also show flash or full motion video on the signage screen. My proposal includes the usage of a wiki website that is (ab)used as an easy content management system. The communication officer can easily create new wiki entries and include the referring URLs in the display sequence by adding them to the data file. Offcourse the wiki is password protected. Each wiki page is displayed in embedded mode. That is without the usual wiki header and footer for controlling the content. The wiki software that provides all these features is the lovely Oddmuse wiki (http://www.oddmuse.org). Needless to say that you can add as many signage PC’s to the system as you want. As long as you don’t overrun the script on the server the should not be a problem.

Live demo

You can watch a live demo here (as long as I don’t reach my bandwith limit). This demo runs on the great free webhosting service by Memebot (http://memebot.com). Memebot also provides a free wiki in their offer. This wiki happens to be the previous mentioned Oddmuse.


You can also watch a screencast showing the poor man’s signage in action. Basically it is the same as the live demo. But it will be available even if I reached a bandwith limit.

Technical details

The poor man’s signage script is based the usage of the i-frame html element and the php header function to sent a refresh header to the browser. Once the script receives a request from a webbrowser it first checks the sequence counter state to determine which item from the data file has to be read next. The sequence counter state is stored in a separate file on the server. Then the script reads from the data file the URL pointed by the sequence counter. This URL is displayed in the i-frame. The script also reads from the data file the display time, which is used to set the page refresh time. After each page refresh the sequence counter is incremented and the next URL in line is read from the data file.

Known issues

  • First read my software notice.
  • Some websites check if they are display in an i-frame and then break out, this will stop the poor man’s signage sequence.
  • Data file editing is still very user unfriendly, you need to hard code the file in the directory on the webserver. I have to check if it is possible to store the data file in an Oddmuse wiki page and use the raw mode to have it read from the php script.


The script (v. 0.1) is available for download here.
Installation is simple. Put the files in a php enabled directory of your webserver. Make sure the files datafile.txt and counter.txt are writeable by the script (that is by the user that runs the webserver service on your server). If your webserver runs php as a module you have to remove the line ‘#!/usr/bin/php’ from the file pm_signage.php.

Leave a Reply