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.
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.
# 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
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:
Plug the USB stick where you saved the media.conf file into the Raspberry Pi and (re)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).
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:
Plug the USB stick where you saved the media.conf file into the Raspberry Pi and (re)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.
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 (re)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).
Check that the Pi is able to connect to the share and fetch the media: SSH in as root (see below) and try connecting “manually”:
mount //serverIP/shareName -ousername=YOUR_USERNAME,password=YOUR_PASSWORD,vers=2.0 /mnt
If the previous mount command raises an error, try understanding what’s going on from that error log and, most important, have a look at your Windows server’s logs. Otherwise, if no error is printed, you should be able to see the remote share in the output of the command:
mount | grep mnt
If this is your case, you should also be able to list your mounted folder’s media by using:
ls -l /mnt
If you can see your media files, it means that the system is able to mount the shared folder, and the error must be searched somewhere else:
a). if you are using the USB key as a medium to “inject” files into the Pi, make sure that the USB key is formatted as vFAT/NTFS or ext4 and of course that you have a set up the media.conf file correctly;
b). make sure that the files are saved in the root folder of the key (not inside directories);
c). make sure that the files downloaded by Raspberry Slideshow during its functioning have a size greater than zero (which issue means there are errors during the transfer). You can accomplish this by SSH’ing in and have a look at $TEMP_MEDIA_FOLDER_SAMBA, which by default is /tmp/imgs3.
For this feature to work you need to set up dropbox_uploader, first.
SSH in as root (see below), 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 (re)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).
On Credentials, click Configure Consent Screen -> External -> Create -> give application name, user support email (yours), developer email (yours) -> Save
On OAuth Consent screen, add your email in Test users
On Credentials, Create credentials -> ID client OAuth -> desktop application -> Create
ID client and Client secret are going to be used in the following steps, keep them saved
Configure rclone
SSH in Raspberry Slideshow operating system as root (see below), then launch:
apt install rclone; rclone config
rclone will start a menu; select the following options:
New Remote (n); give it the name GoogleDrive
Select Google Drive (it should be entry 13)
Enter your created app’s CLIENT ID and SECRET
Scope: Read Only Access
root_folder_id and service_account_file: leave them blank
Edit advanced config? No
Remote config, use auto config? No
Now you will be requested to click a link and to Enter Your verification code from this link (browse from your host machine of course, where you are using SSH from)
Configure this as a team drive? No
Confirm (y) and quit (q)
Finally run rclone ls GoogleDrive: to verify the login token is correct
Set up the media.conf file in order to enable the Google Drive feature:
# Google Drive.
gdrive: enable
gdrive.folder: FOLDER_NAME_WHERE_TO_SLIDE_MEDIA_FROM
Plug the USB stick where you saved the media.conf file into the Raspberry Pi and (re)boot: every file within FOLDER_NAME_WHERE_TO_SLIDE_MEDIA_FROM/ in your Google Drive instance will be fetched and slided (remember of course to connect Raspberry Slideshow to the network via a wired Ethernet cable, first).
Config file created by rclone: /root/.config/rclone/rclone.conf.
Instagram media feature has got some strict limitations (due to Instagram policies) regarding concurrency and rate limit.
At one time, Raspberry Slideshow‘s Instagram feature must be the only application that consumes requests, i.e. neither the Instagram browser interface, nor a mobile app must be running in parallel, and making calls often within short time is prone to cause a Too Many Request Instagram error. If this was not tedious enough, sometimes Instagram will detect some “Suspicious activity” and let you complete a CAPTCHA when logging into your account :-/
Trying to make this feature useful, Instagram-downloaded media differs from all the other runtime fetched ones: it’s never deleted but only updated when Raspberry Slideshow‘s Instagram functionality is started. In my tests, only profiles with a few media and only one update a day seem to work flawlessly.
That said, enable the feature configuring the following lines in media.conf:
You have to be logged into Instagram in order to be able to fetch profile‘s media. profile can be yours or someone else’s.
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.
All the above functioning modes have been detailed 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.
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, sudo systemctl restart rs.
Of course, if you only need to write the config file, just SSH in as root, then modify /var/lib/rs/media.conf with nano, mc or another text editor. scp or sshfs are not required in this case. Then restart the Raspberry Slideshow service after a folder update, sudo systemctl restart rs.
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;
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 // 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.
More than twelve thousand installations all over the world put Binary Emotions’ operating systems as market leaders for your inexpensive digital signage.
Stay tuned
In order to stay tuned with the operating systems’ updates, please follow me on LinkedIn: I always make a post when a new release is out.
This website uses cookies to improve your experience AcceptRead More
Privacy & Cookies Policy
Privacy Overview
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.