
Raspberry Digital Signage 17.0 released
Raspberry Digital Signage 17.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.17.0 follows:
- Chromium settings persistence logic changed: browser is kept back to default settings or last-persisted settings only when user asks for and not upon every reboot (maybe a more balanced behavior in regard to security vs. user experience);
- settable DPI feature returns to work (the feature has been removed in the latest builds for some issues of the underlying OS);
- a new, better, virtual keyboard extension has been installed by default (just remove it if unneeded);
- lowercase URLs issue fixed;
- system has been updated to the latest Raspberry Pi OS Lite – this contains important security fixes. Chromium 92 and rpi-chromium-mods 20210212 packages are amongst the others.
In memory of my father Giovanni.
Download here.
Raspberry Digital Signage FAQ
RASPBERRY DIGITAL SIGNAGE
About | Download | Donation | Docs | FAQ | Changelog | Plugins | Ubuntu | Ports
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
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
RASPBERRY SLIDESHOW
About | Download and use | Donation | Faq | Changelog
If you like this project please donate.
As a donor, you will have full access to the unrestricted versions of: Raspberry Digital Signage (web-based digital signaging) and Raspberry 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 Raspberry 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!
Download Raspberry Slideshow // documentation
RASPBERRY SLIDESHOW
About | Download and use | Donation | Faq | Changelog
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
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 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
# Remote media refresh.
# Values yes|no.
# 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 this to no: images playback will be continuous without the blanks needed to check remote changements.
media.refresh: no
2. Fetch remote media
Set up the media.conf file in order to specify LAN or Internet URLs of remote images and/or videos hosted by a Web or FTP server, one per line, like the following example:
url: https://www.binaryemotions.com/rs-default-media/verona.san-zeno.jpg
url: https://www.binaryemotions.com/rs-default-media/verona.arena.jpg
url: ...
Plug the USB stick where you saved the media.conf file into the Raspberry Pi and boot.
All remote media will be copied into the Pi’s internal card and slided (remember to connect Raspberry Slideshow to the network via a wired Ethernet cable, first – for going wirelessly, see the FAQ section).
3. Link to a remote inventory
Set up the media.conf file in order to specify the URL of a remote inventory file. For example:
# Server-managed inventory.
serverlist: https://192.168.0.100/inventory.txt
Make your Web/FTP server host the inventory file (above, a LAN Web server is used), in the example named inventory.txt. inventory.txt file content is a simple list of URLs (one per line), for example:
https://www.binaryemotions.com/rs-default-media/verona.san-zeno.jpg
https://www.binaryemotions.com/rs-default-media/verona.mpeg
Plug the USB stick where you saved the media.conf file into the Raspberry Pi and boot (remember to connect Raspberry Slideshow to the network via a wired Ethernet cable, first).
This way, the media list can be managed server-side: enable the media.refresh directive (see below) and just modify the inventory file hosted by your server. Inventory’s content can be eventually generated by a server-side scripting logic, if needed.
4. Fetch media from a Windows (Samba) share
Set up the media.conf file in order to specify a local network folder share location, username and password like the example below:
# Samba share.
smb.share: //192.168.0.210/share/TEST
smb.username: admin
smb.password: password
Use only alphanumeric chars for the username and password fields.
Plug the USB stick where you saved the media.conf file into the Raspberry Pi and boot.
All remote media will be copied into the Pi’s internal card and slided (remember to connect Raspberry Slideshow to the network via a wired Ethernet cable, first).
If you have issues, see the dedicated help FAQ.
5. Fetch media from your Dropbox account
For this feature to work you need to set up dropbox_uploader, first.
SSH in as root (see below)(login as pi and do sudo -i), then launch dropbox_uploader.sh and follow the instructions. The folder APPLICATIONS/YOUR_DROPBOX_APP_NAME/ will be created in your Dropbox space. On languages different than English, “APPLICATIONS” could be translated.
Finally run dropbox_uploader.sh info to verify the login token is correct. Delete the /root/.dropbox_uploader file if you need to start from scratch.
Set up the media.conf file in order to enable the Dropbox feature:
# Dropbox.
dropbox: enable
Plug the USB stick where you saved the media.conf file into the Raspberry Pi and boot: every file within APPLICATIONS/YOUR_DROPBOX_APP_NAME/ will be fetched and slided (remember of course to connect Raspberry Slideshow to the network via a wired Ethernet cable, first).
The refresh feature (use with 3., 4. and 5)
Raspberry Slideshow can refresh the media list (inventory linked media, network share and Dropbox 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 relative remote media only when it detects changes (i.e. addition or deletion of a file; depending on the remote target, a simple change in the file content cannot be seen – yes, it’s a limitation).
In this case, at the end of each playback cycle, a blank screen will be shown for a few seconds, which is needed to check for remote changes.
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 this to no: images playback will be continuous without the blanks.
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 (donors’ build only)
All the above functioning modes have been presented together with the use of a USB key as the way to input media into the Pi’s filesystem, which is the simplest possible use case for most users.
However, it’s also possible to load media files and the media.conf file via scp (you can use the same clients as when you connect via SSH).
Just put the files in /var/lib/rs/ and restart Systemd:
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 pi (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:/var/lib/rs/
While for *nix users this is trivial, for Windows users this step could be a pain, without the right tools. Usage of MobaXTerm or the Linux Subsystem for Windows is advised.
3. [on the Pi’s shell] Restart Raspberry Slideshow: sudo systemctl restart rs
Media file names must be alphanumerical without spaces – thanks to Clive Reynolds for the feedback.
Using sshfs
An advanced way of sharing files with Raspberry Slideshow, and make it play them, could be via sshfs. You can mount the system’s media folder (/var/lib/rs/) as an sshfs mount. Restart the Raspberry Slideshow service after a folder update.
Of course, if you only need to write the config file, just SSH in as root (sudo -i), then modify /var/lib/rs/media.conf with mc or another text editor. scp or sshfs are not required in this case.
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 and then USB contained images, followed by videos. So, images come first and then videos. This behaviour is by design and unmodifiable (please do not ask for).
- Accepted image formats are jpeg (.jpeg or .jpg), png, gif.
- Accepted video formats are the ones played by omxplayer, mostly mp4 files.
It does not work / I have issues/questions
Just have a look at FAQ page.
Here how to enable the DEBUG mode.
Images playback: remove black borders for your screen
Modify the file /boot/config.txt file this way:
disable_overscan=1
hdmi_group=1 OR hdmi_group=2
hdmi_mode=16 OR hdmi_mode=82
Refer to the official documentation for more.
Use mc -e /boot/config.txt via SSH (as root) or mount the SD-CARD into a running operating system and modify the file with a text editor. Thanks to Mark van der Linden, Brunner Armin, Guilherme Simões, René Lenga and Teemu Valkeapää.
Full version
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!
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.
Please note that I cannot anymore give email help: due to desperate lack of time I’m going to reply only to emails regarding bug reports.
Raspberry Digital Signage donation
RASPBERRY DIGITAL SIGNAGE
About | Download | Donation | Docs | FAQ | Changelog | Plugins | Ubuntu | Ports
The “release” (demo) build of Raspberry Digital Signage is 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 (web-based digital signage) and Raspberry Slideshow (image/video slideshow-based digital signage), which can be deployed on how many devices you wish!
Full Raspberry 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!