Raspberry Digital Signage FAQ
RASPBERRY DIGITAL SIGNAGE
About | Download | Donation | Docs | FAQ | Changelog | Plugins | Ubuntu | Orange Pi 3 LTS | Banana Pi
UPDATE THE UDERLYING RASPBERRY PI OS OPERATING SYSTEM
In order to udpate the Raspberry Pi OS (formerly Raspian), login via SSH as root, then:
apt update
apt upgrade
The Raspberry Pi OS moves from older to newer Debian releases without changing repositories: it may happen that a system update brakes the digital signage stack.
WIFI support for Raspberry Pi 1 and 2
While modern Pis have got an internal Wi-Fi adapter, Raspberry Pi 1, 2 and Zero have not, so you need to plug a 802.11 adapter in. Supported adapters’ firmware can be added with the following command via SSH as the root user:
Do not install linux-wlan-ng on the Raspberry Pi 3, its firmwares conflict with the built-in 80211 module.
WTF IS THAT LIGHTING BOLT NEAR THE TOP-RIGHT CORNER?
If a lighting bolt is displayed near the top-right corner of the screen, your Raspberry Pi is complaining about the power supply, which probably is not powerful enough.
HOW TO EXPAND THE FILESYSTEM SPACE [see for AW SNAP CHROME ERROR]
How can I expand the Raspberry Digital Signage filesystem space in order to fill the whole SD card/USB key space?
This also can prevent the Aw Snap error on Chrome in the cases where system logs become too big.
Just install and use raspi-config:
login as rds-user via SSH, then sudo -i;
apt update
apt install raspi-config
raspi-config
follow the easy instructions.
MODIFY THE SPLASH SCREEN
For this, please have a look at Raspbian Plymouth.
CHANGE THE SYSTEM HOSTNAME
Default hostname for the operating system is rds.
You can change it by modifying the /etc/hostname and /etc/hosts files.
cd /rds/home/rds-user/
tar -xf chromium-default-settings.tar
rm chromium/Singleton*
tar -cf chromium-default-settings.tar chromium/
rm -R chromium
chown rds-user:rds-user chromium-default-settings.tar
Thanks to Stepan Kocourek.
CHANGE TIME ZONE
login as rds-user via SSH, then sudo -i;
dpkg-reconfigure tzdata
PLAY CONTENT FROM THE INTERNAL SD CARD/USB key: DIY SITE INSTALLATION
Raspberry Digital Signage admin interface allows you to type in the URL of the web resource to be displayed; it can be an Internet one (https://www.binaryemotions.com), a LAN URL (http://192.168.1.100/booking; http://booking.lan), or even a resource located internally, inside the Raspberry Pi’s filesystem.
To simplify the management of the internal site setup, the WordPress plugin adds a WordPress installation to the system (/rds/var/www/wordpress) – see the plugins page for more.
If you however want to add your own site (and/or don’t use the WordPress installation), just copy your website files with scp to /rds/var/www/mySite (create the folder, first), then change the ownership:
and set the URL: http://127.0.0.1/mySite in the admin interface.
Also, you need to allow your www folder to be reached without authentication: add the following to /etc/apache2/sites-enabled/rds.conf:
and restart apache:
systemctl restart apache2
This way you can natively serve plain HTML and PHP files.
Disable network check
Upon boot, the system checks for the availability of the network, in order to display the proper admin interface if no network is available. However, with an internal site installation, the network check could be undesired: in case, modify /rds/home/rds-user/.rds-xinitrc as:
connectionCheck() {
return 0
}
Note: how to use scp
1. [on the Pi’s shell] Enable the SSH login via root directly: change the password for the root user while SSH’d in as rds-user (sudo passwd root), then modify /etc/ssh/sshd_config with PermitRootLogin yes (sudo mc -e /etc/ssh/sshd_config). Finally restart ssh (sudo systemctl restart ssh).
2. [on your host system] Copy your files: scp /path/to/my/local/files/* root@RASPBERRY_IP:/path/to/destination/
While for *nix users this is trivial, for Windows users this step could be a pain, without the right tools: use mobaxterm or similar.
FALLBACK RESOURCE IN THE CASE OF NO-NETWORK
In the case where Raspberry Digital Signage is loading content from the network and the network goes down, in which way can I display a fallback resource in the meanwhile network goes up again?
Usually web pages built for signaging contain a Javascript code which continues checking for network availablity (once loaded). In the case the network goes down, the Javascript code should redirect the internal browser to a locally hosted resource (/rds/var/www). The local resource will do the same job, inverted.
Also, have a look at this page.
HOW TO INSTALL A SCREENSAVER
Install xscreensaver with apt as root, configure it and launch it from /rds/home/rds-user/.rds-xinitrc, before the main cycle.

Raspberry Digital Signage 16.0 released
Raspberry Digital Signage 16.0 released
Raspberry Digital Signage is an operating system designed for digital signage installations on the Raspberry Pi: it displays a full-screen browser view restricted to a specified resource. It shows web resources from Internet, local network or local folders (so you can use the Pi itself as the source webserver).
Raspberry Digital Signage comes with the latest Chromium builds (featuring HTML5 capabilities), so you can display more attractive resources, more easily.
Changelog for v.16.0 follows:
- REST JSON API finally added. The REST API is the foundation upon which to build a central interface (or orchestration scripts as well) to command all your displays;
- compatibility mode added. Kiosk URL is usually loaded within an iframe in order to take advantage of the refresh and scheduling [to be done] features. However, some resources refuse to run within browser iframes (even setting the browser to ignore the X-Frame-Options HTTP response header).
In this case, with the Compatibility mode resource will be loaded as a ‘normal’ page, but of course the aforementioned features won’t work.
Enjoy! 🙂

Raspberry Digital Signage 15.0 released
Raspberry Digital Signage 15.0 released
Raspberry Digital Signage is an operating system designed for digital signage installations on the Raspberry Pi: it displays a full-screen browser view restricted to a specified resource. It shows web resources from Internet, local network or local folders (so you can use the Pi itself as the source webserver).
Raspberry Digital Signage comes with the latest Chromium builds (featuring HTML5 capabilities), so you can display more attractive resources, more easily.
Changelog for v.15.0 follows:
- frontend rewritten and improved (legacy technologies for speed, modern best practices);
- the browser now loads the digital signage URL dynamically as the configuration file changes – and not upon start only; this is the base for managing many Pis from a central interface, which is a (future) use case many users ask for;
- Chromium now makes full use of the GPU – HTML5 videos and modern CSS effects play a lot better (thanks to Ciprian Rusu’s and Diego Vega’s feedbacks);
- Wi-Fi 802.11 networking fixed (networks’ display);
- system has been updated to the latest Raspberry Pi OS Lite (formerly known as Raspbian Lite), with Chromium 88.
Enjoy! 🙂
Privacy policy
PRIVACY POLICY
This site makes use of Google cookies for Analytics (see https://policies.google.com/technologies/cookies for Google’s cookie policy) and Heatmap’s cookies for monitoring purposes (see https://heatmap.me/privacy for hitmap.me’s cookie policy).
Persistent cookies are stored on the user’s device until a specific time (which can be minutes, days, or years in the future) or until deleted manually through web browser settings or specialized computer software.
Binary Emotions makes use of PayPal as payment gateway for financial transactions/donations (https://www.paypal.com/it/webapps/mpp/ua/privacy-full).
We don’t collect any personal data of yours nor send to third parties.
Raspberry Slideshow changelog
RASPBERRY SLIDESHOW
About | Download and use | Donation | Faq | Changelog | Orange Pi 3 LTS
Version 18.0
- WebDav functionality: sliding media from an ownCloud/NextCloud folder added;
- Instagram posts’ media slide [with strict Instagram limitations];
- background music (useful for images-only playback);
- code refactored and a couple of minor bugs fixed;
- site documentation revised.
Version 17.0
- Google Drive functionality added: fetching and sliding media from your Google Drive account’s folder is now possible, pairing the older Dropbox feature.
Version 16.0
- the underlying base system has been updated to the latest Raspberry Pi OS Lite, v.11, Bullseye with a backported OMX Player.
Version 15.1, maintenance release
- system has been updated to the latest Raspberry Pi OS Buster Lite (formerly known as Raspbian Lite).
Version 15.0, maintenance release
- Dropbox feature restored (it was broken since Dropbox changed their API – again);
- system has been updated to the latest Raspberry Pi OS Lite (formerly known as Raspbian Lite).
Version 14.0
- Refresh of the remote media list rewritten, now performed asynchronously by a pool of “watchdog workers”. This drastically reduces the blank between loops when the refresh feature is enabled;
- Dropbox feature restored (it was broken since Dropbox changed their API);
- Informational output on some TVs when playing videos should be now removed, thanks to Sean Monaghen;
- system has been updated to the latest Raspberry Pi OS Lite (formerly known as Raspbian Lite).
Version 13.1
- the underlying operating system has been updated. This solves an issue with the kernel on the Pi4, causing some fbi issues (many thanks to Torsten Walther);
- splash screen.
- media.conf now replaces all the .txt files for configuring the system behaviour. It’s a breaking change;
- upon timeout reached, only remote changed sources’ media are fetched again (previously, all media of all remote sources were downloaded);
- Web/P images added to whitelisted images’ file formats;
- better logging and prittier debugging output;
- refetching hashes improved and better handling of connection issues (Dropbox improved);
- USB device is unmounted as soon as media have been copied to the internal SD card for a safer USB key removal, idea thanks to Francois Audirac;
- default MEDIA_FOLDER moved to /var/lib/rs;
- the underlying operating system has been updated.
Version 12.0
- the underlying operating system has been updated to Raspbian Buster, which assures the compatibility with the new Raspberry Pi 4 and all the older boards;
- sliding Dropbox-fetched media feature has been added: you can now play images and videos directly from your Dropbox account!;
- username and password can now be set directly in the network-share.txt file for the Windows share feature (previously a trivial modification of the source files was needed);
- debug information is now much more verbose, easing issues discovery;
- improved overall playback fluidity;
- some bugs have been fixed, the most tedious one was that at every refresh timeout (serverlist-refresh.txt) all the media were downloaded, regardless if an upstream file had been modified or not;
- Raspberry Slideshow code is now a proper Debian .deb package and not just a collection of source code files hand-copied across the system.
Version 11.0
- the underlying operating system has been updated to the latest Raspbian Stretch build, which assures the new Raspberry Pi 3b+ compatibility (raspberrypi-bootloader);
- SMB v2 is now used by default for the Windows (Samba) share functionality;
- serverlist-related media fetching does not fire in case of download error.
Version 10.0
- the underlying operating system has been moved to Raspbian Stretch; the overall performance is sensibly better;
- a Systemd unit file now replaces the older SysV init-script for launching the slideshow;
- smoother transitions between images and videos;
- some minor improvements on code.
Version 9.0
- underlying Raspbian Jessie operating system updated (I tried to switch to Raspbian Stretch, but it’s still full of bugs); kernel and bootloader packages have been updated as well;
- omxplayer is now taken from Stretch (APT pinning);
- the way the operating system mounts the inserted USB keys has been changed: usbmount has been removed (because it is now deprecated for the now-stable Debian Stretch) and now Raspberry Slideshow itself is responsible for the mount;
- improvement: all txt config files (as network-share.txt & co) are now pre-processed in order to “clean” non-unix line terminators in one passage (dos2unix);
- if Raspberry Slideshow finds out a .txt.txt filename exists, which of course is an error, it renames the file as .txt;
- debug information is now also stored into a file (/var/log/rs.log);
- bugfix: EXIF rotate did not work for Samba files;
- some minor improvements on code.
Version 8.0
- underlying operating system updated; fbi program now taken from Stretch (APT pinning);
- Raspberry Pi Zero W compatibility;
- Oops: Terminated output supressed when quitting fbi;
- some minor improvements on code.
Version 7.0
- media retrieval from local network folder shares (Windows shares/Samba, for example: //192.168.0.100/myShare;
- cleaner playback;
- faster boot;
- some bugs fixed (images playback).
Version 6.0
- removed linux-wlan-ng package, which interferes with the Raspberry 3 built-in 80211 module. Reinstall in case you use a Raspberry Pi 2;
- no black screen after all images playback while possible (i.e. when no video and no server content refresh is set). Of course images to videos transition and reloading remote resources need a very quick blank;
- optional photos rotation based on their EXIF informations (enable in /etc/rs.conf).
Version 5.0
It’s a complete new operating system which combines and enhances Raspberry Picture Frame Slideshow 4.0 and Raspberry Video 1.0, now both defunct.
- Raspberry Pi 3 compatibility;
- image and video playback;
- images: no more a web-based slider, but a native Linux image slider directly using the framebuffer (speed, stability).
Raspberry Slideshow donation
SLIDESHOW
About | Download and use | Donation | Faq | Changelog | Orange Pi 3 LTS
If you like this project please donate.
As a donor, you will have full access to the unrestricted versions of: Raspberry Digital Signage/Orange Digital Signage (web-based digital signaging) and Raspberry Slideshow/Orange Slideshow (image/video slideshow-based digital signaging), which can be deployed on how many devices you wish (no serials’ checks or similar sh*t)!
Full Slideshow features:
- SSH remote management;
- no screen blanking active on system (unlimited and uninterrupted playback time).
Donation page:
Thanks to your support, Binary Emotions’ operating systems are growing year after year since 2012!
Instant WebKiosk was the first Binary Emotions’ project, a live i386 operating system created just for fun. With time, many users asked for a Raspberry Pi port; since that port came to life, user base has grown to some impressive numbers 😀
Download Raspberry Slideshow // documentation
RASPBERRY SLIDESHOW
About | Download and use | Donation | Faq | Changelog | Orange Pi 3 LTS
Detailed write instructions are available here (long story short: you can write Raspberry Slideshow with Balena Etcher to a micro-SD card of 8GB minimum – exactly as any other operating system for the Pi). Do not write to a USB key even if you own a Pi 4.
Some default images and videos (taken from the Web and YouTube) are included within the system for a quick functioning example: plug in the Ethernet cable (DHCP) for a full experience.
This “release” build of Raspberry Slideshow is limited is some functionality: please have a look at the donation page for the full access to the unrestricted versions of all of Binary Emotions’ operating systems.
For web-based signage, please have a look at Raspberry Digital Signage instead.
SETUP: HOW TO USE
Documentation always refers to the latest operating system version.
1. Local media
Put image and/or video files into a USB stick with one only partition (or use its first partition), vFAT/NTFS or ext4 formatted. Files must be put in the root folder (not inside directories).
Plug the USB stick into the Raspberry Pi running Raspberry Slideshow and (re)boot.
That’s all – it’s that easy.
A configuration file, media.conf, can be saved in the USB key, configuring all the system functioning modes explained in the rest of this documentation.
A sample of the file is exemplified below and can be downloaded here.
You can combine any of the media.conf directives with each others and also save media into the USB key directly.
url: https://www.binaryemotions.com/rs-default-media/verona.san-zeno.jpg
url: https://www.binaryemotions.com/rs-default-media/verona.arena.jpg
# REFRESHABLE CONTENT:
# Server-managed inventory.
serverlist: https://www.binaryemotions.com/rs-default-media/images.txt
# Samba share.
smb.share: //192.168.0.210/share/test
smb.username: admin
smb.password: test
# Dropbox.
dropbox: enable
# Google Drive.
gdrive: enable
gdrive.folder: FOLDER_NAME_WHERE_TO_SLIDE_MEDIA_FROM
# ownCloud / NextCloud
webdav.url: http://192.168.0.210/owncloud/remote.php/webdav
webdav.folder: folder
webdav.username: user
webdav.password: password
# Instagram profile media.
instagram.profile: profile
instagram.username: username
instagram.password: password
# Background music.
# Plays background-music.mp3 file, if exists in folder.
background-music: enable
# Remote media refresh.
# Values yes|no.
# If you 1) use only images and 2) do not use remote media or do not need remote media list to be re-read during the playback, please set this to no: images playback will be continuous without the blanks needed to check remote changements.
media.refresh: no
4. Fetch media from a Windows (Samba) share
5. Fetch media from your Dropbox account
6. Fetch media from your Google Drive account
7. Fetch media from a WebDav source: ownCloud/NectCloud
8. Fetch media from an Instagram profile
The refresh feature (use with 3., 4., 5., 6. and 7.)
Raspberry Slideshow can refresh the media list (inventory linked media, network share and Dropbox/Google Drive/WebDav content) in order to slide images and videos according to any server change.
You can accomplish this by enabling the refresh directive in the media.conf file, like:
# Remote media refresh.
media.refresh: yes
System is smart enough to actually re-download remote media only when it detects changes: addition or deletion/renaming of a file.
In order to avoid frequent full re-downloads, while adding/deleting files and updating their names is always detected as a change, a simple change in the file content cannot be seen – yes, it’s a “broken by design” limitation.
Please note. If you (1) use only images and (2) don’t use remote media or don’t need remote media list to be re-read during the playback, please set media.refresh to no: images playback will be continuous without any blank.
Automatic photos rotation
An optional photos rotation based on their EXIF informations is available; enable in /etc/rs.conf via SSH as root (see below). This will increase the boot time.
Using SSH (donors’ build only)
You can perform an SSH login with the following clients:
-
*nix users will make use of the native ssh client – open the terminal emulator and type:
ssh pi@RASPBERRY_IP. - Windows users will use Putty, MobaXTerm, any cygwin-derived program or the Linux Subsystem for Windows (preferred; in this case the syntax is identical as the *nix users’).
Use the following default credentails:
user: pi
password: live
then, once in, type: sudo -i for administrative rights (root)
Please change the default SSH password for your security.
Using scp and sshfs (donors’ build only)
Ruleset
The following rules apply.
- All the USB files (images, videos and media.conf) are copied into the internal Raspberry’s SD-CARD:
– if the USB key is inserted: at every reboot, SD-CARD files are updated and hence played according to the key’s content;
– if the USB key is not inserted: at every reboot, media are played from the internal cache. So, after the first run, you can unplug the USB key. - Functioning modes can be combined.
- Media will be displayed in a name-based order, and in the following sequence: remote images, then inventory-related images, network share, Dropbox, Google Drive, WebDav, Instagram and then USB-contained images, followed by videos. So, images come first and then videos. This behaviour is by design and unmodifiable, because two different players are used.
- Accepted image formats are jpeg (.jpeg or .jpg), png, gif.
- Accepted video formats are the ones played by omxplayer, mostly mp4 files.
Background music
Save an mp3 file named background-music.mp3 into the USB stick and enable the related media.conf directive in order for a music to partner your images’ slideshow.
Debug mode (via SSH)
Setting DEBUG=”y” in /etc/rs.conf enables the debug mode.
System actions will then be logged in /var/log/rs.log, so you can use tail -f /var/log/rs.log or cat /var/log/rs.log.
A preferred way of debugging is however by directly launching the Raspberry Slideshow stack via SSH.
SSH in as root, stop the rs Systemd service (systemctl stop rs), enable the DEBUG mode, go to the folder where Raspberry Slideshow is installed (cd /usr/lib/rs) and launch rs.sh:
./rs.sh
System will log on-screen.
If for some reason SSH isn’t working or you need to debug via the terminal emulator directly:
- type Ctrl+Alt+F3 right after the boot, before the slides begin showing;
- login as pi with the password (default is: live), then do sudo -i;
- give: systemctl stop rs
MOST ASKED QUESTIONS
Full version // screen goes blank after 15 min // there’s no SSH support
This “release” build of Raspberry Slideshow is limited is some functionality: please have a look at the donation page for the full access to the unrestricted versions of all of Binary Emotions’ operating systems.
Donation page
DONATION
If you like my projects, please donate.
Binary Emotions Bundle
As a donor, you will have full access to the unrestricted versions of: Raspberry Digital Signage (web-based digital signage) with its plugins and Raspberry Slideshow (image/video slideshow-based digital signage), which can be deployed on how many Raspberry Pi devices you wish!
Also Orange Digital Signage and Orange Slideshow, ports for the Orange Pi 3 LTS are included.
As a gift for PC users, an Ubuntu Server 22.04 port of Raspberry Digital Signage 18.3 package is also available for all donors!
Donation method
Please donate via the following PayPal button for the Bundle with perpetual updates.
Once donation is performed, PayPal will redirect you to the Download URL (from where you can download future updates as well): do not close the PayPal page before the redirect occurs.
Raspberry Digital Signage donation
DIGITAL SIGNAGE
About | Download | Donation | Docs | FAQ | Changelog | Plugins | Ubuntu | Orange Pi 3 LTS | Banana Pi
The “release” (demo) builds of Raspberry Digital Signage and Orange Digital Signage are limited is some functionality: if you like this project please donate.
As a donor, you will have full access to the unrestricted versions of: Raspberry Digital Signage, Orange Digital Signage (web-based digital signage) and Raspberry Slideshow, Orange Slideshow (image/video slideshow-based digital signage), which can be deployed on how many devices you wish!
Full Digital Signage features:
- SSH remote management;
- no screen blanking active on system (unlimited and uninterrupted display time).
Donation page:
Thanks to your support, Binary Emotions’ operating systems are growing year after year since 2012!
Raspberry Digital Signage plugins
RASPBERRY DIGITAL SIGNAGE
About | Download | Donation | Docs | FAQ | Changelog | Plugins | Ubuntu | Orange Pi 3 LTS | Banana Pi
Available plugins: Web Kiosk | WordPress | MagicMirror²
You can reactivate the display of the normal Chromium address bar with the following command via SSH as root:
sed -i 's/chromium-browser --kiosk --home-page/chromium-browser --kiosk-placeholder --home-page/g' /rds/home/rds-user/.rds-xinitrc
systemctl restart rds
This restores the standard address bar to Raspberry Digital Signage and tunes it in a system suitable for usage in web kiosks and multi-user web workstations environments (cafès, offices, schools, hotels, hospitals, libraries), where people can freely surf the web.
Raspberry Digital Signage with this “plugin” replaces the older Raspberry WebKiosk.
Revert with:
sed -i 's/chromium-browser --kiosk-placeholder --home-page/chromium-browser --kiosk --home-page/g' /rds/home/rds-user/.rds-xinitrc
systemctl restart rds
Raspberry Digital Signage admin interface allows you to set up the URL of the web resource to be displayed; it can be an Internet one (https://www.binaryemotions.com), a LAN URL (http://192.168.1.100/booking; http://booking.lan), or even a resource located internally, inside the Raspberry Pi’s filesystem. You know that already.
To simplify the creation/management of an internal site setup, the wordpress plugin adds a WordPress installation to the system (/rds/var/www/wordpress).
Plugin installation
From a SSH terminal of Raspberry Digital Signage (donors’), as root:
Prerequisites
In order to view (and administer) the Pi’s WordPress site from your PC, just add the following line to your PC hosts file:
RaspberryPi_LAN_IP_in_this_moment wordpress
For example:
192.168.0.120 wordpress
This way, your PC will identify the URL http://wordpress as coming from the Pi.
Google for what “hosts” file means if unsure.
Usage
Set up your site on the internal WordPress installation: as a normal WordPress site, by browsing from your PC to http://wordpress.
WordPress admin (http://wordpress/wp-admin/) login is: admin / password.
Remember to change it. Binaryemotions won’t give basis/informations on how to use WordPress.
Make Raspberry Digital Signage display it: from the admin interface, set http://wordpress as the kiosk URL (the plugin’s installation will do it for you, but if you change it, then remember to set up this way).
Since the provided build of WordPress is of course outdated when you will install it, an advised preliminary step is to update it.
Disable network check
Upon boot, the system checks for the availability of the network, in order to display the proper admin interface if no network is available. However, with an internal WordPress installation, the network check could be undesired: in case, modify /rds/home/rds-user/.rds-xinitrc as:
Useful things to do with this WordPress installation
Many. Among the others, a plugin which is worth a try is foyer.tv.
Install it from WordPress plugins page, then create a presentation and put its link in the Raspberry Digital Signage admin interface as the kiosk URL.
Uninstallation
A MagicMirror² for Raspberry Pi plugin
MagicMirror² is an open source modular smart mirror platform. With a growing list of installable modules, the MagicMirror² allows you to convert your hallway or bathroom mirror into your personal assistant. MagicMirror² is the winner in the official Raspberry Pi magazine’s 50th issue celebration feature voted by the Raspberry Pi community.
This plugin installs in a few steps the MagicMirror² project on top of Raspberry Digital Signage. Code is built by the creator of the original MagicMirror with the incredible help of a growing community of contributors. Please consider a donation for them if you make use of it.
Quite cool actually.
Requirements
This plugin requires Raspberry Digital Signage >= v.18.0.
Plugin installation
From a SSH terminal of Raspberry Digital Signage (donors’), as root:
Customizing
Please see the official documentation.
Config file is located in /rds/home/rds-user/MagicMirror/. Once you modify the config file, restart the signage stack: systemctl restart rds.
Uninstallation