Screenly OSE -- Digital Signage for the Raspberry Pi
Screenly is a product from WireLoad that we developed for Skarmverket, a small network of public billboards in Sweden. Before we began, we evaluated many of the existing solutions on the market. Most of them were clunky and/or expensive. A fair number of them ran on Windows and used Adobe Flash. We ended up writing our own solution and used Asus Eee PCs with Linux.
Then the Raspberry Pi came along: priced at $35, and equipped with everything needed to power a screen. We were immediatelly sold and knew that this was what we wanted to use moving forward. Since we love Open Source, we've decided to release Screenly for free for anyone to use.
The current version should be considered a beta. While we have been running it in the lab without any issues, there might still be issues that we are unaware of at this point. Yet, we wanted to make Screenly available to the vibrant Rasberry Pi community.
Since Screenly was written for the Raspberry Pi from the ground up, we had to make it as lean as possible.
Screenly OSE is aimed at single-node deployments. In addition to Screenly OSE, we are also working on a commercial version called Screenly Pro (wait-list) that is aimed at deployments larger than one node.
There are many use cases where Screenly can be used, such as:
- Display BI or server dashboards
- Advertisements (in-store or in store-front)
- Internal information boards
- Fancy photo-frame
A rough video of Screenly in action is available here.
Screenshots and pictures of Screenly are available here.
There is also a fairly active thread about Screenly on the Raspberry Pi forum.
How Screenly works
Once installed, Screenly can view images, videos and websites on the screen. You can configure your own playlist, and set the duration for how long each element should be viewed.
Here's how you add content to your Screenly box:
- Point your browser to the URL displayed on the screen at boot (from a different computer).
- Click 'Add asset.'
- Provide a name of the asset, the URL to the asset, and the asset type and click 'Submit.'
- Click 'Schedule asset.'
- Select the asset you just added in the drop-down, select the time frame you wish to display the asset and the duration (if image or website) and press 'Submit.'
- Repeat for all the assets you want to display.
Note: if you don't have any server where you can make your assets available, you can use public folders in Dropbox.
- A Raspberry Pi (Model B).
- An SD Card (>4GB). Class 10 is highly recommended.
- An HDMI-cable.
- A network connection (with DHCP).
- A keyboard and mouse (only required for the installation).
- A monitor/TV that can view full HD (and has HDMI input).
Configure the Raspberry Pi
First, flash the SD card and install Raspbian Wheezy. Instructions are available here. On the first boot, you should be presented with a configuration screen (raspi-config). In raspi-config, make sure you make the following changes:
- Expand the root file system (required)
- Disable overscan (if required by your display)
- Change keyboard mapping (optional)
- Change time zone (optional, but Screenly's scheduling uses this)
- Enable SSH (optional)
- Configure boot behaivor to boot into X (required)
- Change password for 'pi' user (recommended)
- Change memory split to 128/128 (recommended)
Once you've made all these changes, you must restart your Raspberry Pi.
Install Screenly OSE
After you've done all the following changes above and rebooted, open a terminal (ctrl+alt+F1) or SSH session and as the user 'pi' run:
cd ~ sudo apt-get update sudo apt-get -y install git-core git clone git://github.com/wireload/screenly-ose.git ~/screenly ~/screenly/misc/install.sh
(If you're running the installation over SSH, running the installation through a 'screen'-session is highly recommended.)
Assuming everything went well, reboot your system. Screenly should now load.
Upon boot, Screenly's management URL should show up on the screen (e.g. http://aaa.bbb.ccc.ddd:8080). To manage the content, open up this URL on a different computer. Don't try to manage the content directly on the Raspberry Pi using a keyboard and mouse. That won't work.
Screenly currently three types of media:
- Screenly uses omxplayer as the video back-end. It is currently limited to MP4/h264-encoded videos.
Adobe Flash-media is not, and will most likely never be, supported.
Images and web-pages will be rendered in 1920x1080, so adjust your content for this size.
It is also worth noting that no media is permanently stored on the Raspberry Pi. All content is simply retrieved from the remote server (with limited caching in the browser).
Since Screenly still is in beta, it's not unlikely that you'll run across bugs.
To upgrade Screenly, simply run (as the user 'pi'):
cd ~/screenly git pull python misc/migrate.py
Once done, simply restart the computer. If you prefer not to reboot, you might get away with (depending on the update):
pkill -f "viewer.py" sudo supervisorctl restart screenly
Can I change Screenly's resolution?
Yes, just edit the line 'resolution' in ~/.screenly/screenly.conf. The default resolution is 1920x1080 (Full HD).
Can I use Screenly with a rotated screen?
Yes, that's possible. First change the resolution in ~/.screenly/screenly.conf from 1920x1080 to 1080x1920. After you've done that, you need to change the screen orientation. To do this, add the following to /boot/config.txt.
That will rotate the screen 270 degrees (source). After you've made both of these changes, simply reboot (
sudo shutdown -r now). When Screenly comes back up, it should be in rotated mode.
Please note that I have not been able to test this myself, but according to Clifor on the Raspberry Pi-forum it does works.