• ing.marcoburatto@gmail.com

Author Archive

Raspberry Slideshow 15.0 has been released

Raspberry Slideshow is an operating system for the Raspberry Pi microcomputer lineup used for digital signage when you need images’ or videos’ slideshows.

It plays all media contained in a USB key, fetched from a network share, from a webserver, from a folder of your Dropbox account and loaded via scp as well.

The operating system can refresh the media list in order to slide images and videos according to any remote change (addition or deletion of a media file). An optional photos’ rotation based on embedded EXIF informations is available.

Version 15.0 changelog (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).

 

You can download the operating system and have a look at its manual in the download page.

root

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.

root

Raspberry Digital Signage FAQ

RASPBERRY DIGITAL SIGNAGE

About | Download | Donation | Docs | FAQ | Changelog | Plugins

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:

apt update;
apt install -y linux-wlan-ng firmware-linux-free dahdi-firmware-nonfree firmware-atheros firmware-bnx2
apt install -y firmware-ipw2x00 zd1211-firmware firmware-ivtv firmware-iwlwifi firmware-libertas
apt install -y firmware-linux-nonfree firmware-myricom firmware-netxen firmware-bnx2x firmware-brcm80211 firmware-intelwimax
apt install -y firmware-qlogic firmware-ralink firmware-realtek libertas-firmware

 
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 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: 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:

chown -R rds-www:rds-www /rds/var/www/mySite

 
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:

SetEnvIf Request_URI ^/mySite.* noauth=1

 
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/.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.

if(navigator.onLine) { // true|false
// …
}

 
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/.xinitrc, before the main cycle.

root

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! 🙂

root

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! 🙂

root

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.

root

Raspberry Slideshow changelog

RASPBERRY SLIDESHOW

About | Download and use | Donation | Faq | Changelog

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.

 

Version 13.0

  • 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).
root

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 enabled;
  • optional automatic photos rotation basing on EXIF informations;
  • media retrieval from network shares (Windows shares/Samba) feature enabled;
  • media retrieval from your Dropbox account feature enabled.

Donation page:

Once donation is done, I’ll e-mail you the full software downloading URL address within 12 hours.

Thanks to your support, Binary Emotions’ operating systems are growing year after year since 2012!

root

Download Raspberry Slideshow // documentation

RASPBERRY SLIDESHOW

About | Download and use | Donation | Faq | Changelog

rs-15.0-release.zip md5: eeac8c1af53efac813d13f83bd064120

Detailed write instructions are available here (long story short: you can write Raspberry Slideshow as any other operating system for the Pi). 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 and get human help.

For web-based signaging, 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.

# STATIC CONTENT:

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 (donors’ build only)
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 (donors’ build only)
For this feature to work you need to set up dropbox_uploader, first.
SSH in as root (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 (donors’ build only)
An optional photos rotation based on their EXIF informations is available; enable in /etc/rs.conf via SSH as root (refer to the FAQ page). This will increase the boot time.

 

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

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.
In case of problems, please do not contact me unless you have enabled the DEBUG mode and you have the output of /var/log/rs.log by hand.

 

No black borders on screen / 1080p
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.

root

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 signaging) and its plugins and Raspberry Slideshow (image/video slideshow-based digital signaging), which can be deployed on how many devices you wish!

Also, updates for one year are guaranteed – just drop me an email when you see a major update.

 

Personal or Professional

The operating systems you receive with each bundle are identical, while the support differs: in the Professional version a best-effort e-mail help is included, while no e-mail help is available for the Personal version (please don’t ask for, I’m a one-man-band who really cannot reply to so many people…).

Also, updates for three years are guaranteed for the Professional version – just drop me an email when you see a major update.

Binary Emotions bundle Professional is thus recommended, but not mandatory, if you intend to use a solution based on my software for your clients.

 

Donation methods

Please donate via one of the following PayPal buttons; double check that your PayPal e-mail address is valid. Once donation is done, I’ll e-mail you the full software downloading URL address within 12 hours.

 

Personal bundle

Please donate €17.90 via the following PayPal button:

 

Professional bundle

Please donate €29.90 via the following PayPal button:

root