Updating Icareus Playout

Updating Icareus Playout

Updating Icareus Playout 6

Introduction

When updating Icareus Playout 6 to a newer version, for example from version 6.0.2.6 to 6.1.0.0, it's not necessary to install a new Operating System (OS). A successful update process involves copying new software to the target system, reviewing the current status of the system,  checking the old Dongle Id, putting the system to be updated offline, making a backup of the old installation, updating the OS configuration, updating Playout software and testing output. The update process assumes you have a terminal connection to the server and have a root or sudo user on Linux.

This document provides for a way to return to the old version you're updating from by using Linux terminal commands on the server.

Idea
In the case that you're running on a virtual server or have some other way of making a snapshot of the current state of your server - that you can restore at will - you can use that method instead.

Copy new version of Icareus Playout to server, check MD5 digests and extract zip archives

In order to update, you need to have a copy of the new version of Icareus Playout. In the case of 6.1.0.0, you should have received an installation folder 6-1-0-0 from Icareus. 
Copy the installation folder to the server, for example into location /root/Downloads/6-1-0-0. If copying from a Windows PC, you can use for example the FileZilla client to copy the files.
When the files have been copied see page Operating System Configuration on how to check the MD5 digests of the files. When the installation folder has been successfully copied to the server, unzip all the zip files.
As mentioned on the OS configuration page the commands needed are:
  1. cd /root/Downloads/6-1-0-0
  2. md5sum -c md5sum-6.1.0.0.txt
  3. bash unzip-all.sh

Check old install folder

In addition to the new install folder, you should have the old version's install folder available in case you have to revert to the old version. In the case that Playout version 6.0.2.6 is currently installed, copy the folder 6-0-2-6 to /root/Downloads/6-0-2-6, if it is not yet there. After this run the commands
  1. cd /root/Downloads/6-0-2-6
  2. md5sum -c md5sum-6.0.2.6.txt
If all the files are OK, you can proceed. You can copy the unzip-all.sh script from the new directory to the old install directory, in case it is needed later.
  1. cp /root/Downloads/6-1-0-0/unzip-all.sh .

Review current system status and disk space

Before updating, check that the old version is working and that the system operates normally.
If there's some problems on the system before starting the update, the update might fail.

Login to Playout Web and check that the user interface works normally.
Use the command htop to check if any process is using a lot of CPU.
If using TS output, use a transport stream analyzer (TS analyzer) to check that the server output is OK.
In case other important features are used, make sure they still work before you update.

Idea
You can do the same review after Playout has been updated.

Check how much disk space Playout software and data uses currently:
  1. du -hcs /opt/playout
Output can be for example
  1. 1.9G    /opt/playout
  2. 1.9G    total
To make a backup of the /opt/playout directory, make sure there's more than enough disk space available on the server.

Check the disk space on the server use the command:
  1. df -h
The output might include something like:
  1. Filesystem      Size  Used Avail Use% Mounted on
  2. ...
  3. /dev/sda1        56G   53G  4.0G  93% /
  4. ...
Idea
Don't delete the folder of the currently running version at this point, in case it is needed (see below).
If the available disk space is low, you can for example delete old files from /root/Downloads.

Check the old Dongle ID

The license of Icareus Playout is valid only on a machine with the same Dongle Id.

To find the old (current) dongle id, open Playout Web, go to Server > Info and make a note of the Dongle Id number.

It's possible that the Dongle Id will be different in the new version of Playout. There was a change in version 6.0.4.1 where previously, Playout would look for the eth0 - eth3 network interface cards (NICs) and generate a dongle id based on those, and this required interface names to be changed. The 6.0.4.1 and newer versions don't require renaming interfaces. They generate the dongle id by first looking for NICs whose names start with en (ethernet), e.g. enp2s0. If there's no interface whose name starts with en, the eth ones will be used and the old dongle id will still be valid.

To find the new Dongle Id, run the program get-dongle-id using the command:
  1. /root/Downloads/6-1-0-0/playout-6.1.0.0-el8/get-dongle-id 
The output should be for example
  1. Dongle id: 668443018

Warning
If the dongle id is not the same as the old dongle id, please request a new license file from Icareus, e.g. by email.
It can be helpful if you provide the old license file as an attachment, you can copy it from the location /etc/playout/playout.lic on the server.

Put the system to be updated offline

Most Playout servers operate in 1+1 mode with one main and one backup server.
In the case of a redundant setup (see Playout redundancy), the server which is being updated should be offline and the other server should be live.
Info
Usually it's a good idea to first update a backup server and if the update is successful, put the backup system live and later update the main system.
Warning
For a redundant setup, do not use Playout Web to do any configuration changes while the servers are running different versions!

Backing up the current configuration

It's a good idea to make a backup of the current configuration, in case the update fails for some reason.
Info
Keep a copy of the old installation folder of Icareus Playout available, e.g. 6-0-2-6.
First, login to Playout Web, go to Server > Export Settings and download a zip of the current Playout database configuration.

Second, make a copy of /opt/playout and of /etc/playout.
Info
For the copy to succeed all the relevant services have to be shut down at this point. Otherwise the data can change while the files are being copied, resulting in a corrupt copy.

To stop the postgresql service and Playout services issue the commands:
  1. stopall.sh
  2. /opt/playout/webconsole/stopwebconsole.sh
  3. systemctl stop postgresql
You can verify that everything stopped using commands:
  1. systemctl status postgresql
  2. statusall.sh
  3. /opt/playout/webconsole/statuswebconsole.sh 
Now that services are stopped we can copy the Playout directories. If the target directories exist, delete or rename them (e.g. use command mv /opt/old-playout /opt/really-old-playout).
  1. cp -pr /opt/playout /opt/old-playout
  2. cp -pr /etc/playout /etc/old-playout
To be certain that the copying was successful you can use a diff command to check that the directories have the same content:
  1. diff -qr /opt/playout/ /opt/old-playout/
If there's no output the copy was successful.
After copying, start postgresql again.
  1. systemctl start postgresql

Update Operating System configuration

As Icareus Playout is already running on the target system, this document assumes that Operating System Configuration has been done previously. A newer version of Icareus Playout 6 might require some dependencies to be updated. The new playout-api service requires a newer version of Java and both playout-api and playout-webconsole require newer versions of Node.js. The API uses TCP port 80 and in addition 8081, so this port needs to be open for browser access. The API also has a low level helper service playout-api-worker, that uses port 8082/tcp. This is new in Playout 6.1.0.0.

Allow access to TCP ports 80, 8081, 8082

The new Playout API uses TCP ports 80 and 8081 and the worker uses port 8082. Please open the server's TCP ports in case you are using a firewall. In case that the server's own firewall is running, you can use commands such as
  1. firewall-cmd --permanent --zone=public --add-port=8081/tcp
  2. firewall-cmd --permanent --zone=public --add-port=8082/tcp
  3. firewall-cmd --reload
to open this port.
You can check if firewalld is running using the command:
  1. systemctl status firewalld
Once the Playout RPMs have been installed (see below) there is also a command
  1. /opt/playout/bin/setup-firewall.sh
that will open the needed ports from the server's internal firewall.

Update java

The playout-api (and/or playout-web) depend on the exact version of Java that comes in the installation folder.
You can find the java version that is running on your server using the command:
  1. java -version
For Playout 6.1.0.0, the required version is exactly
  1. openjdk version "1.8.0_442"
  2. OpenJDK Runtime Environment (build 1.8.0_442-b06)
  3. OpenJDK 64-Bit Server VM (build 25.442-b06, mixed mode)
Here the _442 patch level / suffix of the version 1.8.0 is required.
When the older version 6.0.2.6 is running, the output is:
  1. openjdk version "1.8.0_382"
  2. OpenJDK Runtime Environment (build 1.8.0_382-b05)
  3. OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)
To update the Java version, first change to the rpms subfolder of the install folder:
  1. cd /root/Downloads/6-1-0-0/rpms-6.1.0.0-el8
Update the java and tzdata packages (the --force installs the packages even if the same version is already installed):
  1. bash install-rpms.sh
Verify the java version is now 1.8.0_442.
  1. java -version
Output should of course be:
  1. openjdk version "1.8.0_442"
  2. OpenJDK Runtime Environment (build 1.8.0_442-b06)
  3. OpenJDK 64-Bit Server VM (build 25.442-b06, mixed mode)

Install new versions of Node.js

The webconsole of Playout 6.0.2.6 used the node version v12.18.2.
For Playout 6.1.0.0, 2 different versions are used: v12.22.12 for Playout webconsole and v22.13.0 for the new Playout API service.
Change to the nodejs directory and run the install node script:
  1. cd /root/Downloads/6-1-0-0/nodejs-6.1.0.0
  2. bash install-node.sh 
You will see some output of files being copied and then the text "Please login again to activate Node.js". You can ignore "login again".
The new node versions are installed under /opt, you can see that using the command:
  1. ls -l /opt
Output should include the 3 different versions:
  1. drwxr-xr-x  6 root root       108 Dec 12  2024 node-v12.18.2-linux-x64
  2. drwxr-xr-x  6 root root       108 Sep 23 11:52 node-v12.22.12-linux-x64
  3. drwxr-xr-x  6 root root       108 Sep 23 11:52 node-v22.13.0-linux-x64

Updating Playout software

Updating Playout back end services

Info
At this point it is good to have a new license file available if it's necessary (see above Check the old dongle id).

Change to the playout installation directory and run the update.sh script (not the install.sh script!).
  1. cd /root/Downloads/6-1-0-0/playout-6.1.0.0-el8
  2. bash update.sh
You should see a lot of output which you can ignore, e.g. 
  1. ...
  2. INSERT 0 1
  3. psql:/opt/playout/share/update.sql:1518: ERROR:  table "epg_export_event" does not exist
  4. CREATE TABLE
  5. INSERT 0 1
  6. ...
After this check that the Playout RPMs were installed. In the case that some dependency is missing, it is possible that some Playout RPM could not be installed.
For this reason run the command:
  1. rpm -qa | grep playout | sort
The output should look like e.g., with about 28 packages installed.

  1. playout-admin-6.1.0.0-1.el8.x86_64
  2. playout-api-worker-6.1.0.0-1.el8.x86_64
  3. playout-av-input-6.1.0.0-1.el8.x86_64
  4. playout-base-6.1.0.0-1.el8.x86_64
  5. ...

The output should have only services that have the version number 6.1.0.0. You should remove the Playout packages that don't have this version. You can find them using the command:
  1. rpm -qa | grep playout | grep -v 6.1.0.0
The output might be:
  1. playout-scripts-6.0.2.6-1.el8.x86_64
  2. playout-dektec-6.0.2.6-1.el8.x86_64
  3. playout-management-console-6.0.2.6-1.noarch
In the case that packages with the old version exist, remove them using rpm -e:
  1. rpm -e playout-scripts playout-dektec playout-management-console

Installing / Updating Playout API back end service

Playout API is a relatively new back end service of Playout which listens to a specific IP address and TCP port 8081. The Playout webconsole front end uses port 80 and this port 8081 to talk to the back end, so these ports need to be reachable from where the users are using Playout web.
Playout API has a similar spoolers.json file as the webconsole. The webconsole is accessed using a specific IP number which is configured in the file /opt/playout/webconsole/config/spoolers.json. It listens to the first address specified in the file. To see the file contents use a command such as:
  1. cat /opt/playout/webconsole/config/spoolers.json
The content might in the case of only one server, be something like:
  1. [{"name":"master","address":"192.168.1.95","type":"master"}]
Make a note of this IP number, because Playout API will use the same IP number in its spoolers.json file.
To install the API, use commands:
  1. cd /root/Downloads/6-1-0-0/api-6.1.0.0
  2. bash install-api.sh
You will see a lot of files being copied and then this prompt:
  1. Enter IP number of admin interface:
Enter the same IP as you saw in the old spoolers.json file, for example 192.168.1.95.
The output should look something like:
  1. Admin interface IP is 192.168.1.95
  2. Admin interface IP configured.
  3. To change the admin interface IP of Playout API edit the following files:
  4. /opt/playout/api/config/spoolers.json
  5. /opt/playout/api/config/replicate.conf
  6. daemon reloaded
  7. service enabled
  8. service started
  9. ● playout-api.service - Icareus Playout JSON API
  10.    Loaded: loaded (/usr/lib/systemd/system/playout-api.service; enabled; vendor preset: disabled)
  11.    Active: active (running) since Tue 2025-09-23 14:31:20 EEST; 16ms ago
  12.      Docs: https://helpdesk.icareus.com/
  13.  Main PID: 344789 (node)
  14.     Tasks: 6 (limit: 48904)
  15.    Memory: 2.5M
  16.    CGroup: /system.slice/playout-api.service
  17.            └─344789 /opt/node-v22.13.0-linux-x64/bin/node /opt/playout/api/server.js
  18. Sep 23 14:31:20 playout-server systemd[1]: Started Icareus Playout JSON API.
  19. Done
You can compare the new /opt/playout/api/config/spoolers.json file with the old /opt/playout/webconsole/config/spoolers.json.
If they are different, you can copy the files from the webconsole to the API, and restart the API
  1. sudo cp -p /opt/playout/webconsole/config/spoolers.json /opt/playout/api/config/ 
  2. sudo cp -p /opt/playout/webconsole/config/replicate.conf /opt/playout/api/config/ 
  3. systemctl restart playout-api


Updating Playout Webconsole

Change to the webconsole directory and run the update script:
  1. cd /root/Downloads/6-1-0-0/webconsole-6.1.0.0-el8
  2. bash update-webconsole.sh
Again, many files are copied, so please wait.
Once done copying, you should see output such as:
  1. webconsole copied
  2. daemon reloaded
  3. service enabled
  4. service started
  5. ● playout-webconsole.service - Icareus Playout Web Console
  6.    Loaded: loaded (/usr/lib/systemd/system/playout-webconsole.service; enabled; vendor preset: disabled)
  7.    Active: active (running) since Tue 2025-09-23 14:43:38 EEST; 27ms ago
  8.      Docs: https://helpdesk.icareus.com/
  9.  Main PID: 346297 (node)
  10.     Tasks: 1 (limit: 48904)
  11.    Memory: 476.0K
  12.    CGroup: /system.slice/playout-webconsole.service
  13.            └─346297 /opt/node-v12.22.12-linux-x64/bin/node /opt/playout/webconsole/server.js
  14. Sep 23 14:43:38 playout-server systemd[1]: Started Icareus Playout Web Console.
  15. Done

Now you should log in to Playout Web just like on the old version. Enter the management IP in your web browser, press Ctrl+F5 to refresh the page. Login to web by typing the username and password.

Info
The browser uses TCP ports 80 and 8081 to talk to the Playout server's back end.

Once logged in, go to Server > Info. You should see the new Server Version, the new Dongle Id and some Supported Features at the bottom. If these are missing there's an issue with the license.

In the case that the Dongle Id has changed, please update the new license that you should have received from Icareus by now (see above).
In the case go to Server > Update License, choose Select file and navigate to find the new .lic file and click Open. On success you should see the message License updated. Click OK and check Server > Info again.

Idea
If everything works as expected, the update has been performed successfully. In the case of a redundant setup, put the updated system live and proceed to update the other system(s).

If the system doesn't work as expected and you're not able to solve the issue, please send a ticket to production@icareus.com about it, including information of what doesn't work etc.
Optionally, revert to the old version. In that case, see instructions below.


In case of malfunction: reverting back to the old version

In the case that there's some critical error with the new installation, for example that key functionality doesn't work or output is entirely wrong, it's possible to revert to the old version.

Warning
The following instructions undoes the update and returns the system to the old version you were running before the update.

Extract old packages

First change to the old install folder:
  1. cd /root/Downloads/6-0-2-6
If the old version's zip files have not yet been extracted do:
  1. bash unzip-all.sh

Restore old Java version

  1. cd rocky8-rpms/
  2. rpm -Uvh --force *.rpmj
  3. java -version
Output should be
  1. openjdk version "1.8.0_382"
  2. OpenJDK Runtime Environment (build 1.8.0_382-b05)
  3. OpenJDK 64-Bit Server VM (build 25.382-b05, mixed mode)

Restore the old version's playout RPMs

  1. /root/Downloads/6-0-2-6/playout-6.0.2.6-rocky8
  2. bash update.sh

Remove remaining new RPMs and run update one more time

Check what playout services are still installed that don't belong to version 6.0.2.6.
  1. rpm -qa | grep playout | grep -v 6.0.2.6
Based on the output, user rpm -e to remove the ones that have the new version, e.g.
  1. rpm -e playout-redundancy playout-epg-export playout-epg-monitor
Run the update once more to make sure all needed files are present.
  1. bash update.sh
Stop all Playout services.
  1. bash stopall.sh

Remove Playout API

Since Playout API did not exist in the old version, it can be completely removed.
Issue commands
  1. cd /root/Downloads/6-1-0-0/api-6.1.0.0-el8
  2. bash uninstall-api.sh

Uninstall webconsole

  1. cd /root/Downloads/6-1-0-0/webconsole-6.1.0.0-el8
  2. bash uninstall-webconsole.sh

Restore old playout files

To copy back the contents from our copy, we have to first stop all relevant services.
Execute commands:
  1. stopall.sh
  2. systemctl stop postgresql
You can remove everything from /opt/playout because all needed files are in the /opt/old-playout directory.
Warning
Warning: the following rm (remove) command removes a lot of files, so be careful at this point.
Execute:
  1. cd /opt/playout
  2. rm -rfv *
Now copy back the old files to /opt/playout
  1. cp -prv ../old-playout/* /opt/playout
Provided you made the backup at the start of the update process, you will see a lot of files being copied.

Restart old playout

Now you start postgresql and the playout services again.
  1. systemctl restart postgresql
  2. restartall.sh
  3. statusall.sh
If everything went OK, you will see:
  1. playout-admin:             active
  2. playout-meta-admin:        active
  3. playout-muxer:             active
  4. playout-eit:               active
  5. playout-eit-checker:       active
  6. playout-eit-update:        active
  7. playout-eit-update-worker: active
  8. playout-scheduler:         active
  9. playout-sim:               active
  10. playout-sipsi:             active
  11. playout-tunneling:         active
  12. playout-psig:              active
  13. playout-dsmcc-update:      active
  14. playout-ts-update:         active
You can now stop services again and restore /etc/playout contents.
  1. stopall.sh 
  2. cd /etc/playout
  3. mkdir new
  4. mv * new
  5. cp -pv ../old-playout/* .
  6. restartall.sh
  7. statusall.sh
The above commands restore the old license etc. and restart the Playout services again.

Reinstall old playout web

  1. cd /root/Downloads/6-0-2-6/webconsole-6.0.2.6-rocky8
  2. bash update-webconsole.sh
You should again see many files being copied and at the end something similar to
  1. webconsole copied
  2. 'webconsole/playout-webconsole.service' -> '/usr/lib/systemd/system/playout-webconsole.service'
  3. daemon reloaded
  4. Created symlink /etc/systemd/system/multi-user.target.wants/playout-webconsole.service → /usr/lib/systemd/system/playout-webconsole.service.
  5. service enabled
  6. warn:    --minUptime not set. Defaulting to: 1000ms
  7. warn:    --spinSleepTime not set. Your script will exit if it does not stay up for at least 1000ms
  8. info:    Forever processing file: /opt/playout/webconsole/server.js
  9. service started
  10. info:    Forever processes running
  11. data:        uid  command                               script                            forever pid    id logfile                 uptime      
  12. data:    [0] ihdW /opt/node-v12.18.2-linux-x64/bin/node /opt/playout/webconsole/server.js 576675  576710    /var/log/webconsole.log 0:0:0:0.037 
  13. Done

Login to playout web

Point your browser to the management IP. Press Ctrl+F5 to refresh the page. Login to web by typing the username and password.
Open Server > Info and check the information.
Server Version: 6.0.2.6
Check also the Dongle Id and that the Supported Features are visible.

Info
Once you got here successfully you have restored your old Playout installation.



OLD: Updating Icareus Playout 4 or 5

Updating old versions

If you're running Icareus Playout 4 or 5, no new updates of those versions are available, rather you should update to Playout 6 (or later). Please export your settings using PMC (Icareus Playout Management Console), provide them to Icareus and we will update the settings to Playout 6 (or later). You need to install a new Operating System (Rocky Linux 8 / Enterprise Linux 8 for Playout 6). Please contant Icareus about the update.

Old general Principles of Updating Icareus Playout

An existing Icareus Playout installation can be updated to a new version. This is usually done either because of requested new features or necessary bug fixes, or in the case that the operating system (OS) is upgraded, e.g. from CentOS 6 to CentOS 7.

When updating Icareus Playout Servers, it's a good practice to first update a backup/secondary server and check that the output is of the updated server is good and then put the backup server online while the primary server is updated. It's a good idea to export the configuration of the servers using Playout Management Console (PMC) prior to the update. New Icareus Playout Software can be obtained from Icareus, e.g. from our SFTP server upload.icareus.com. The update usually comes in the form of multiple zip files, one containing the Playout server software, others containing e.g. needed software packages that Playout depends on. Note that the configuration of the server requires the PMC or Web Console to have roughly the same version as the server software to be compatible, so usually a new PMC is needed to login to the updated Playout server. It is a good idea to check that the server's disk has enough space for the new software and backup of the old installation before doing any update. In the case that the minor version number (the second number in the version) changes, for example if Playout is updated from 4.4 to 4.6, a new license file is necessary for the software to run. When updating from the same minor version, e.g. 4.6.0.x to 4.6.7.x, a new license is not needed.

Old updating Playout software only (no OS upgrade)

Assuming we are updating to a Playout version 4.6.7.0 on CentOS 6, the Playout server software services (i.e. playout-muxer etc.) are provided in a zip file with the name playout-4.6.7.0-centos6.zip. The simplest possible update is to just unzip this file, change to the playout-4.6.7.0-centos6/update directory and running the full-update.sh script. If everything goes well, the services are stopped, the software is updated and the new services are started. The full update includes updating all the necessary database tables in the playout database and installing new RPMs with the new playout services.

A more safe way to perform the update is to first shut down all the playout services (which can be done with the script stopall.sh which exists in the update directory), shut down postgresql, copying the old playout directory to a backup, restarting the postgresql database and after this running the full update script.

In the case that the old version of Playout is many years old, for example version 4.4.1.12, then the whole update process is more complicated technically and also requires installing some new libraries.

Old updating Playout software due to an OS upgrade

Updating Playout while also doing an OS upgrade should preferrably be done so that Playout is first updated to the latest version on the old system (e.g. CentOS 6). Then the Playout configuration should be exported using PMC. After this the new OS, e.g. CentOS 7 can be installed on the same or some other server. After CentOS 7 has been installed and networking configured the Playout is installed on the server. This should be the same version of Playout that was running on the old OS, so that the configuration can be imported without errors.




    • Related Articles

    • Icareus Playout Products and Modules

      Foreword  Icareus Playout is a head-end platform targeted at broadcasters and operators to enhance their DVB networks to provide a better TV experience to their viewers. Icareus products included on the same product portfolio are: Icareus Playout EP ...
    • Managing Playout OS Services

      Introduction Icareus Playout runs several linux services for its features. Managing Playout OS Services Playout Services and Linux processes can be managed from both Playout Management Console and Linux console. In Linux console Icareus Playout is ...
    • Migration of older Playout versions to Playout 6

      Introduction Icareus Playout 4 runs on the CentOS 6 operating system, which reached end of life on November 30th, 2020. Because of this, Icareus developed Playout 5 which runs on CentOS 7 and Playout 6 which runs on CentOS 7 and on Rocky 8. It's ...
    • General Settings

      Introduction In this chapter we go through the server wide settings of Playout server. All  general configuration is done from Server -> Settings There may be other settings available from Server -> Settings -menu, but these always relate to a ...
    • Playout Redundancy

      Introduction to Playout Redundancy Icareus Playout can be installed as a redundant system with two to four hardware servers to ensure excellent service level. There are several redundancy architectures depending on the head-end and desired usage. ...