Pearl System API Guide

Epiphan Pearl-2
Epiphan Pearl Mini
Epiphan Pearl Nano

Release 4.12.2
June 7, 2021

UG124-03

Terms and conditions
This document, the Epiphan web site, and the information contained therein, including but not limited to the text, videos andimages as well as Epiphan System Inc.’s trademarks, trade names and logos are the property of Epiphan Systems Inc. andits affiliates and licensors, and are protected from unauthorized copying and dissemination by Canadian copyright law, UnitedStates copyright law, trademark law, international conventions and other intellectual property laws.
Epiphan, Epiphan Video, Epiphan Systems, Epiphan Systems Inc., and Epiphan logos are trademarks or registeredtrademarks of Epiphan Systems Inc., in certain countries. All Epiphan product names and logos are trademarks or registeredtrademarks of Epiphan. All other company and product names and logos may be trademarks or registered trademarks of theirrespective owners in certain countries.
Copyright © 2024 Epiphan Systems Inc. All Rights Reserved.
THE SOFTWARE LICENSE AND LIMITED WARRANTY FOR THE ACCOMPANYING PRODUCT ARE SET FORTH IN THE
INFORMATION PACKET OR PRODUCT INSTALLATION SOFTWARE PACKAGE THAT SHIPPED WITH THE PRODUCTAND ARE INCORPORATED HEREIN BY REFERENCE. IF YOU ARE UNABLE TO LOCATE THE SOFTWARE LICENSES
OR LIMITED WARRANTY, CONTACT YOUR EPIPHAN REPRESENTATIVE FOR A COPY.
PRODUCT DESCRIPTIONS AND SPECIFICATIONS REGARDING THE PRODUCTS IN THIS MANUAL ARE SUBJECTTO CHANGE WITHOUT NOTICE. EPIPHAN PERIODICALLY ADDS OR UPDATES THE INFORMATION AND
DOCUMENTS ON ITS WEB SITE WITHOUT NOTICE. ALL STATEMENTS, INFORMATION AND RECOMMENDATIONSARE BELIEVED TO BE ACCURATE AT TIME OF WRITING BUT ARE PRESENTED WITHOUT WARRANTY OF ANY
KIND, EXPRESS OR IMPLIED. USERS MUST TAKE FULL RESPONSIBILITY FOR THEIR APPLICATION OF ANY
PRODUCTS.
LIMITATION OF LIABILITYUNDER NO CIRCUMSTANCES SHALL EPIPHAN BE LIABLE FOR ANY INCIDENTAL, SPECIAL, CONSEQUENTIAL,
EXEMPLARY OR OTHER INDIRECT DAMAGES THAT RESULT FROM THE USE OF, OR THE INABILITY TO USE, THISPRODUCT OR THE INFORMATION CONTAINED IN THIS DOCUMENT OR PROVIDED ON EPIPHAN’S WEB SITE, EVENIF EPIPHAN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. IN NO EVENT SHALL EPIPHAN’S TOTAL
LIABILITY TO YOU FOR ALL DAMAGES, LOSSES, AND CAUSES OF ACTION RESULTING FROM YOUR USE OF THISPRODUCT, WHETHER IN CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE) OR OTHERWISE,
EXCEED THE AMOUNTS YOU PAID TO EPIPHAN DURING THE MOST RECENT THREE-MONTH PERIOD INCONNECTION WITH AMOUNTS WHICH YOU PAID FOR USING THIS PRODUCT.
INFORMATION AND DOCUMENTS, INCLUDING PRODUCT SPECIFICATIONS, PROVIDED IN THIS DOCUMENT OR
THE EPIPHAN WEB SITE ARE PROVIDED “AS IS”. SPECIFICALLY, BUT NOT WITHOUT LIMITATION, EPIPHAN DOES
NOT WARRANT THAT: (i) THE INFORMATION IS CORRECT, ACCURATE, RELIABLE OR COMPLETE; (ii) THE
FUNCTIONS CONTAINED ON THE EPIPHAN WEB SITE WILL BE UNINTERRUPTED OR ERROR-FREE; (iii) DEFECTS
WILL BE CORRECTED, OR (iv) THIS WEB SITE OR THE SERVER(S) THAT MAKES IT AVAILABLE ARE FREE OF
VIRUSES OR OTHER HARMFUL COMPONENTS. EPIPHAN SPECIFICALLY DISCLAIMS ALL REPRESENTATIONS,WARRANTIES, AND CONDITIONS, EITHER EXPRESS, IMPLIED, STATUTORY, BY USAGE OF TRADE OR
OTHERWISE INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, TITLE, SATISFACTORY QUALITY OR FITNESS FOR A PARTICULAR PURPOSE.
For additional terms and conditions, see additional sections in this document.

ii

Thank you for choosing Epiphan!
At Epiphan Video (“Epiphan”), building reliable video systems with pro features that perform above yourexpectations is our mission.
We value your feedback! Email us your suggestions and let us know how you think we're doing and where you'd
like to see our products improve: info@epiphan.com

Warranty
All Epiphan Video systems have a 100% return to depot warranty for one year from the date of purchase.

Technical support
Epiphan’s products are backed by our professional support team. You can reach our team several ways:l

Email support@epiphan.com

lLive chat from our support site https://www.epiphan.com/support/lPhone toll free at 1-877-599-6581 or call +1-613-599-6581

Gather as much information about your problem as you can before you contact us so we can help you better,
including:l

A description of the probleml

Details about your video or audio source (type, connection, resolution, refresh rate, etc.)l

Product serial numberlProduct firmware version (using the admin interface)l

Product LED lights

iii

Table of contents
Thank you for choosing Epiphan!

iii

Start here1

API integrations

2

About RS-232 / serial port commands

3

Connect and configure the RS-232 port

5

Controlling your Pearl system with RS-232

5

Global variable RS-232 commands for custom layouts

8

About HTTP/HTTPS commands
Global variable HTTP commands for custom layouts

10
13

Configuration keys for third party APIs

16

What's new and release history

27

Software license

28

iv

Pearl API User Guide

Start here

Start here
Welcome, and thank you for buying an Epiphan Video Pearl system. This API guide provides the information you
need to successfully set up and operate Pearl-2™, Pearl Mini™,Pearl Nexus™, and Pearl Nano™ using the APIs,
including:l

RS-232 APIl

HTTP/HTTPS API

The API integrations section contains what you need to know about using these APIs with your Pearl system.
The Configuration keys for third party APIs section provides the detailed API keys.
For firmware compatibility and change history, see What's new and release history.
Throughout this API guide, the term Pearl system is used to refer to Pearl-2, Pearl Mini, Pearl Nexus, and Pearl
Nano collectively. Specific references are used when it's necessary to distinguish between the different models.
This guide assumes that all feature add-ons for Pearl-2 are activated. Features or tasks that only apply when afeature add-on is activated is indicated in the text.
Examples of third party control systems built using Pearl API are:l

Epiphan Pearl Crestron module available at https://www.epiphan.com/pearl-video-capture-for-crestronsystems/lEpiphan Pearl Q-SYS plugin, details of which can be found at https://www.qsys.com/alliancespartnerships/epiphan-video/1

Pearl API User Guide

API integrations

API integrations
We offer HTTP/HTTPS and RS-232 APIs for integrators wanting to control a Pearl system using third party tools.
Topics include:lAbout RS-232 / serial port commandslAbout HTTP/HTTPS commands

For third party API configuration keys, see Configuration keys for third party APIs.
For firmware compatibility and change history, see What's new and release history.

2

Pearl API User Guide

About RS-232 / serial port commands

About RS-232 / serial port commands
Your Pearl system has an RS-232 / serial port control interface for integration with existing control room andboard room equipment.

Important considerationslEach command sent over RS-232 must be terminated with a line feed (LF) character (ASCII code 10).
Make sure that your software adds the line feed to each command.

lEnsure your terminal program is configured for UTF-8, which is required if any data includes non ASCII
characters.

l

For values with spaces, enclose the value in quotation marks. For empty values, use empty quotation
marks with nothing between.

l

You must always follow a SET command in RS-232 with the SAVECFG command. Otherwise the new
configuration setting(s) will not take effect. See the SET examples that follow.

l

The publish_enabled on/off command does not work on multiple publish destinations and only
starts/stops the first instance.

l

Pearl Mini and Pearl Nano require an RS-232 to USB serial adapter cable (not included).

lSince Pearl Nano is a single-channel encoder, the channel index number is always 1. The layout identifieris also always 1.

lPearl Nano doesn't support multiple channels, multiple layouts, recorders, touch screen, and the Motion
JPEG codec. Commands related to these are either ignored (for example, you cannot delete the channel
or create a new layout on Pearl Nano), or applied to only a single target item, such as the single channel
or layout on Pearl Nano.

For a complete list of supported SET and GET parameters, see Configuration keys for third party APIs. To
connect the RS-232 cable and configure RS-232, see Connect and configure the RS-232 port
The following examples show how to use RS-232 commands to control your Pearl system:

To start recording on channel 2:
START.2

To stop recording on channel 2:
STOP.2To start the first stream on channel 1:
For streaming, you must define the channel and the logical stream. Pearl Nano only has one channel. The first
logical stream created is /stream0/ and the second logical stream is /stream1/

3

Pearl API User Guide

About RS-232 / serial port commands

Start stream, channel 1, logical stream 0
SET.1:0.publish_enabled=on

To stop the first stream on channel 1:
For streaming, you must define the channel and the logical stream. Pearl Nano only has one channel. The first
logical stream created is /stream0/ and the second logical stream is /stream1/
Stop stream, channel 1, logical stream 0
SET.1:0.publish_enabled=

To start recording on all channels and recorders:
START

To get the value of the frame size (resolution) for channel 1:
GET.1.framesize

To set the frame size (resolution) on channel 1, enclose the parameter in quotes topreserve the spaces:
SET.1.framesize="640 x 480"
SAVECFGTo enable broadcasting audio on channel 2:
SET.2.audio=on
SAVECFGTo disable broadcasting audio on channel 2:
SET.2.audio=""
SAVECFG

4

Pearl API User Guide

Connect and configure the RS-232 port

Connect and configure the RS-232 port
To connect your control equipment to Pearl-2, you need a standard RS-232. For Pearl Mini, Pearl Nexusand
Pearl Nano, use a null-modem cable and a USB to RS-232 serial adapter cable (not included). Only certain
adapter chipsets are supported. We recommend this adapter cable from Startech.

Connect the serial port cable
1. Attach the RS-232 cable to the control interface.
2. For Pearl-2, connect the RS-232 cable to the back of the system.
3. For Pearl Mini, Pearl Nexus and Pearl Nano, connect the USB to RS-232 serial adapter to the null-modem
cable and then connect the USB to RS-232 serial adapter to any of the USB ports on the system.
The only configuration available for the serial port is flow control. Flow control changes the rate of data transfer
over the cable. Some communication settings are static and cannot be changed. The static settings are:l

Baud rate set at 19200

l

Parity set to nonelStop bits set to one

Configure serial port flow control
1. Login to the Admin panel as admin, go to: http://<Pearl_ipAddress>/admin
2. From the Configuration menu, click Serial Port . The serial port configuration page opens.
3. Select Hardware, Software, or None from the drop-down menu.
Table 1 Serial Port Flow Control Options
Label

Description / Options

Hardware

A hardware handshake is used for flow control, which is also called RTS / CTS flow control. See
the manual for your control terminal to check if a hardware handshake is needed.

SoftwareA software handshake that uses XON/XOFF characters to control the flow of data. See themanual for your control terminal to check if a software handshake is needed.

None

No flow control is used. Only select this if your control terminal doesn't use a handshake.

4. Click Apply.

Controlling your Pearl system with RS-232
You can use the null-modem cable and your control terminal software to issue commands to your Pearl system,
such as when to start or stop recording, and to retrieve or set the value of certain parameters.

5

Pearl API User Guide

Controlling your Pearl system with RS-232

Each command sent over RS 232 must be terminated with a line feed (LF) character (ASCII code10). Make sure that your software adds the line feed to each command.
Some commands require a channel or recorder name as an argument. In those commands, the channel orrecorder name is separated from the command name by a period. The channel name value can be either thename or the index of the recorder or channel. Use of the index is recommended.
A channel's index number is located in the Channels Menu using the Admin panel. The channel index number
turns red to indicate it is recording. For example, to address this channel using RS-232 commands, use the index
1.

For recorders, combine the recorder's number with the prefix m. In the following example, the second recorder'sindex is 2. To address this recorder using RS-232 commands, use the index m2.

The following table describes the supported RS-232 commands.
Table 2 Supported RS-232 Commands
Command Name

Description

Recording Commands
Starts recording for the specified channel or recorder. This can alternatively be
accomplished with the following set commands:
START.<channel>
START.<recorder>

SET.<channel>.rec_enabled=on
SAVECFG
If the channel is already recording, the current recording is continued.

START

Starts recording for all channels and recorders.

6Pearl API User Guide

Command NameControlling your Pearl system with RS-232

Description
There is no RS-232 command to restart recording. If recording isalready active when the start command is issued, the recording
continues.

STOP.<channel>

Stops recording for the specified channel or recorder. This can alternatively be
accomplished with the following set commands:

STOP.<recorder>

SET.<channel>.rec_enabled=""SAVECFG

STOP

Stops recording for all channels and recorders.

Configuration Commands (see Configuration keys for third party APIs for available keys)
GET.<channel>.<key>Gets the saved value of a given parameter for the specified channel or recorder.
GET.<recorder>.<key>
SET.<channel>.<key>
SET.<recorder>.<key>

Sets the value of a given parameter for the specified channel or recorder. The value
is not saved until the SAVECFG command is sent.

Global Variable Commands
VAR.GET.<name>1

Gets the specified global variable, where <name> is the unique name for eachvariable.
Saves the global variable modified by the SET command, where <name> is theunique name for each variable and <value> is the text/character content stored ineach variable.

VAR.SET.
<name>2=<value>

Example:VAR.SET.gpsvar0=N103 68201 W765 29712
where <name> is gpsvar0 and <value> is N103 68201 W765 29712.

Status Commands
Reports the recording status of the specified channel or recorder.
STATUS.<channel>
STATUS.<recorder>

Status is one of:lll

RUNNINGSTOPPEDUNINITIALIZEDReports the recording status of each channel and recorder.
STATUS
Status is one of:7

Pearl API User Guide

Command Name

Global variable RS-232 commands for custom layouts

Descriptionlll

RUNNINGSTOPPEDUNINITIALIZEDFREESPACE

Reports the free storage space, in bytes.

RECTIME.<channel>
RECTIME.<recorder>

Reports the elapsed recording time in seconds for the current file on the specified
channel or recorder.

RECTIME

Reports the elapsed recording time in seconds for the current file on each channel.

1Variable <name> can be up to 32 alphanumerical characters long including underscores. Name must start witha letter or underscore.
2If the equal sign "=" is omitted, VAR.SET assigns an empty value.

Pearl API returns a status change message whenever changes are made.
Table 3 RS-232 Status Changed Messages
Command Name

Description
Provides the status of the recording service for the channel as either:ll

STATUS.<channel> <status>lRunning
StoppedUninitialized

The Uninitialized status is sent when there is an internal error. Check thesystem for more details.

Global variable RS-232 commands for custom layouts
You can use RS-232 commands to create global variables embedded in a custom layout as responsive text
overlay elements. For information about text overlays and adding a global variable into a custom layout, see theuser guide for your Pearl system.
Important considerationslEach system variable must have its own unique name.

lSystem variable names and variable values are case sensitive.

lEach variable name must start with a letter or underscore and can be up to 32 alphanumeric characters
length, including underscores.

lSetting an empty variable name clears the variable value.

lEnsure your terminal program is configured for UTF-8; otherwise, any special characters used in the RS232 global variable command will cause the RS-232 command string to be ignored.

8

Pearl API User Guide

Global variable RS-232 commands for custom layoutsl

There is a limit of 1024 total unique system variables per system.

lSystem variables can be used in text labels across any number of channels.

lSystem variables are considered volatile data and are erased when the Pearl system reboots.

lYou can set only one variable at a time using the RS-232 SET command.

l

Quotes are not ignored. For example, the following RS-232 SET commands are different:l

VAR.SET.myname=some valuel

VAR.SET.myname="some value"

RS-232 GET / SET variables – syntax and examples
A get command retrieves a variable using the syntax VAR.SET.<name>, where <name> is the unique name foreach variable up to 32 alphanumerical characters long including underscores. Name must start with a letter orunderscore.
RS-232 GET example:
Example: VAR.gpsvar1
A set command saves a variable value using the syntax VAR.SET.<name>=<value>, where <name> is theunique variable name, and <value> can be up to 32 alphanumerical characters including underscores.
RS-232 SET example:
Example: VAR.SET.gpsvar1=N103 68201 W765 29712
If <value> contains spaces, quotes must not be used.
To erase a previously set variable, set the value with an empty space
If the equal sign "=" is omitted, VAR.SET assigns an empty value.

9Pearl API User Guide

About HTTP/HTTPS commands

About HTTP/HTTPS commands
Your Pearl system has an HTTP API interface. You can swap the HTTP for HTTPS in the URL without affecting
the API commands. The HTTP/HTTPS API is used for configuration and control by third party applications or
scripts that send commands as a series of URLs. Commands are sent to one of two URLs and specify the target
configuration item.
Some commands require a channel or recorder name as an argument. A channel's index is found by looking at
the Channels list in the Admin panel. In the following example, the channel with index 1 is currently recording (itsindex number is red). To address this channel using HTTP commands, use the index channel1.

Since Pearl Nano is a single-channel encoder, the channel index number is always 1.
For recorders, combine the recorder's number with the prefix m, as in channelm. In the following example, thesecond recorder's index is 2. To access this recorder using http commands, use the index channelm2.

10Pearl API User Guide

About HTTP/HTTPS commands

Sample Get configuration settings:
http://<address>/admin/channel<N>/get_params.cgi?keyor
https://<address>/admin/channel<N>/get_params.cgi?key

For recorders, add 'm' before the recorder number (i.e. channelm1 for recorder 1), for example:
http://<address>/admin/channelm<N>/get_params.cgi?key

Sample Set configuration settings:
http://<address>/admin/channel<N>/set_params.cgi?key=valueor
https://<address>/admin/channel<N>/set_params.cgi?key=value

For recorders, add 'm' before the recorder number (i.e. channelm1 for recorder 1), for example:
http://<address>/admin/channelm<N>/set_params.cgi?key
Where <address> is the IP address of the Pearl system, channel<N> is the channel number (i.e. channel2 forchannel number two), and channelm<N> is for recorders (i.e. channelm2 for recorder two), key is theconfiguration key for the item being checked or changed (see Configuration keys for third party APIs), and value
is the value to set for the configuration item.
The following examples show how to use wget to exercise some of the supported HTTP/HTTPS commands. You
can substitute https for http in the urls.
For values with spaces, encode space as %20. i.e.: set_params.cgi?framesize=640%20x%20480
The examples assume a system IP address of 192.30.23.45 and admin password is pass123.
To get the type of stream being published and frame size for channel 1:
wget --http-user=admin --http-passwd=pass123 http://192.30.23.45/admin/channel1/get_params.cgi?publish_type&framesize
To set the publish stream type to RTMP Push (6) and at the title “System Stream” for channel 2:

11Pearl API User Guide

About HTTP/HTTPS commands

wget --http-user=admin --http-passwd=pass123 http://192.30.23.45/admin/channel2/set_params.cgi?publish_type=6&title=System%20Stream
To start the first stream on channel 1:
For streaming, you must define the channel and the logical stream. The first logical stream created is /stream0/
and the second logical stream is /stream1/
wget --http-user=admin --http-passwd=pass123 http://192.30.23.45/admin/channel1/stream0/set_params.cgi?publish_enabled=on
To stop the first stream on channel 1:
For streaming, you must define the channel and the logical stream. The first logical stream created is /stream0/
and the second logical stream is /stream1/
wget --http-user=admin --http-passwd=pass123 http://192.30.23.45/admin/channel1/stream0/set_params.cgi?publish_enabled=
To start recording on channel 1:
wget --http-user=admin --http-passwd=pass123 http://192.30.23.45/admin/channel1/set_params.cgi?rec_enabled=on
To stop recording on channel 1:
wget --http-user=admin --http-passwd=pass123 http://192.30.23.45/admin/channel1/set_params.cgi?rec_enabled=""To start recording on recorder 2:
wget --http-user=admin --http-passwd=pass123 http://192.30.23.45/admin/channelm2/set_params.cgi?rec_enabled=on

Pearl Nano doesn't support multiple channels, multiple layouts, recorders, touch screen, and the
Motion JPEG codec. Commands related to these are either ignored (for example, you cannot delete
the channel or create a new layout on Pearl Nano), or applied to only a single target item, such as
the single channel or layout on Pearl Nano.

Multiple requests
You can include multiple key/value pairs in a single command by separating the statements with &. For example,
the key for product name is product_name and the key for firmware version is firmware_version.
The command to request both the product name and the firmware version is:12Pearl API User Guide

Global variable HTTP commands for custom layouts

http://<address>/admin/channel1/get_params.cgi?product_name&firmware_version
To turn off publishing (i.e. set to 0) and set the bitrate (vbitrate) to 256,000:
http://<address>/admin/channel1/set_params.cgi?publish_type=0&vbitrate=256K

You can substitute https for http in the urls.

Third party applications like wget
If you’re using a third party application like wget to send commands to your Pearl system, always include theadmin username and password when viewing or setting configuration items.
Specify your Pearl system’s IP address, password and the key(s) or value(s) you want to query using thefollowing syntax. Note that your system may require use of single quotes around the password to handle special
characters such as exclamation marks. You can substitute https for http in the urls.
get_param using wget:
wget --http-user=admin --http-passwd=<password> http://<address>/admin/channel<N>/get_params.cgi?<key>[&<key>]

set_param using wget:
wget --http-user=admin --http-passwd=<password> http://<address>/admin/channel<N>/set_params.cgi?<key>=<value>[&<key>=<value>]
Where <address> is the IP address of the Pearl system, channel<N> is the channel number (i.e. channel2 forchannel number two), key is the configuration key for the item being checked or changed (see Configuration keys
for third party APIs), and value is the value to set for the configuration item.

Global variable HTTP commands for custom layouts
Pearl API can create global variables using HTTP commands embedded in a custom layout as responsive text
overlay elements. For information about text overlays and adding a global variables to a custom layout, see theuser guide for your Pearl system. You cannot substitute https for http in the global variable HTTP commands.
Important considerations for global custom layout variableslEach system variable must have its own unique namelSystem variable names and variable values are case sensitive

13

Pearl API User Guide

Global variable HTTP commands for custom layoutslEach variable name must start with a letter or underscore sign and is followed by any combination ofletters, digits and underscore characters [A-Za-z_0-9]{0,32} to a limit of 32 total characters (note thatsaving an empty string to a variable will clear the variable value)lThere is a limit of 1024 total unique system variables per system.

lSystem variables can be used in text labels across any number of channels.

lSystem variable commands can be issued at a frequency of 5 per second, and up to 6 variables may be
set in a single command (for example, variables "gpsvar1", "gpsvar2" and "gpsvar3" can be updated in asingle command, five times per second). After issuing a set command, all channels using the specified
variable(s) are updated. The frequency of commands issued is not influenced by the number of channels
on your Pearl system.

lSystem variables are considered volatile data and are erased when your Pearl system reboots.

Set variables – syntax and example
A set command saves a value to a variable, where <address> is the IP address of the Pearl system, name is theunique name for each variable, and value is the text/character content stored in each variable.
You can set multiple variables at the same time by separating each variable with an "&".
To "set" variables, use the following syntax:
http://<address>/admin/set_variables.cgi?name1=value1[&nameN=valueN]
For values with spaces, encode space as %20. (i.e.: set_variables.cgi?name1=640%20x%20480)
To erase a previously set variable, simply set the variable's name with an empty space.

Example: "http://192.168.0.129/admin/set_variables.cgi?gpsvar1=N103%2068201%20W765%2029712&gpsvar2=S490%2018731%
20E756%2019890&gpsvar3=N123%2046891%20W345%2065431&gpsvar4=S767%2033410%20E770%2004513"
sets:"gpsvar1" to "N103 68201 W765 29712""gpsvar2" to "S490 18731 E756 19890""gpsvar3" to "N123 46891 W345 65431""gpsvar4" to "S767 33410 E770 04513"

Get variables – syntax and example
A get command returns the value of a variable called name. You can return multiple variables at the same timeby separating each variable with an "&".
To "get" a variable or a list of specific variablesx:

14Pearl API User Guide

Global variable HTTP commands for custom layouts

http://<address>/admin/get_variables.cgi?name1[&nameN]

Example: "http://192.168.0.129/admin/get_variables.cgi?gpsvar1"
returns:"gpsvar1=N103 68201 W765 29712"
To "get" a list of all variables saved to the Pearl system:
http://<address>/admin/get_variables.cgi

Example: "http://192.168.0.129/admin/get_variables.cgi"
returns:"gpsvar1=N103 68201 W765 29712
gpsvar2=S490 18731 E756 19890
gpsvar3=N123 46891 W345 65431
gpsvar4=S767 33410 E770 04513"

15

Pearl API User Guide

Configuration keys for third party APIs

Configuration keys for third party
APIs
Using HTTP/HTTPS or RS-232, you can send query and configuration commands to your Pearl system. For the
RS-232 and HTTP/HTTPS syntax and important considerations, see About RS-232 / serial port commands andAbout HTTP/HTTPS commands.
Using a "SET" command in RS-232 must always follow with the "SAVECFG" command for the new
configuration setting(s) to take effect.
When setting keys to values with spaces, use the following syntax.
For RS-232, enclose in quotes:
SET.2.framesize="640 x 480"
For HTTP/HTTPS, encode each space:%20: set_params.cgi?framesize=640%20x%20480
Since Pearl Nano is a single-channel encoder, the channel index number is always 1. Pearl Nano
doesn't support multiple channels, multiple layouts, recorders, touch screen, and the Motion JPEG
codec. Commands related to these are either ignored (for example, you cannot delete the channel orcreate a new layout on Pearl Nano), or applied to only a single target item, such as the single
channel or layout on Pearl Nano. Commands related to touch screen settings are not supported.

The following categories of API keys are supported:lSystem-level settings keys (read-only)l

System-level settings keys (read/write)l

System-level custom layout keys (read/write)l

Touch screen settings keys (read/write)l

Recording configuration keysl

HTTP server configuration keyslIP-based access control configuration keyslBroadcast configuration keyslChannel encoder configuration keyslChannel layout configuration keys

16

Pearl API User Guide

Configuration keys for third party APIsl

Audio configuration keyslStream publishing configuration keysl

RTSP Announce configuration keys (Publish type 2)l

RTP/UDP configuration keys (Publish type 3)lMPEG-TS configuration keys (Publish types 4 and 5)l

RTMP push configuration keys (Publish type 6 and 7)lContent metadata configuration keys

You can also see the list of supported keys when you browse to the following URL, where <address> is the IP
address of your Pearl system:
http://<address>/admin/http_api.cgi

System-level settings keys (read-only)
The following read-only system-level setting keys are supported. The channel number can be omitted from thecommand when requesting the value for these keys.
Table 4 Supported Read-Only System-level Settings configuration keys
Key

ValuesDescription

firmware_version

String, including thetext FIRMWARE_
VERSION=.

The system’s firmware version.
The value is read-only.

mac_address

String

The system’s mac address. Useful for debugging.
The value is read-only.

product_name

String

The product’s name.
Useful to confirm you are communicating with the right product orfor debugging purposes.
The value is read-only.

vendorEpiphan Video

Name of the vendor.
The value is always “Epiphan Video”.
The value is read-only.

System-level settings keys (read/write)
The following read/write system-level setting keys are supported. The channel number can be omitted from thecommand when requesting the value for these keys.

17

Pearl API User Guide

Configuration keys for third party APIs

Table 5 Supported Read/Write System-level Settings configuration keys
Key

ValuesDescription

frmcheck_enabledonempty string ("")

Enables or disables automatic firmware update checking.
To enable firmware update checking, set to on.
To disable firmware update checking, set to an empty string ("").

description

stringTo give this system a name in the Epiphan discovery utility,
specify a description string.

System-level custom layout keys (read/write)
The following read/write system-level custom layout keys are supported.
Table 6 Supported read/write system-level custom layout keys
Key

ValuesDescription

nameAny combination ofletters, digits andunderscorecharacters [A-Za-z_09]{0,32} to a limit of
32 total characters

Each unique name key contains a variable value. Used for
dynamic overlay text in custom layouts, see About
HTTP/HTTPS commands. For details on how to add a text
overlay, see the user guide for your Pearl system.

Touch screen settings keys (read/write)
The following configuration keys are supported for modifying the touch screen configuration. The channel
number can be omitted from the command when requesting or setting the value for these keys.
Table 7 Supported Touch Screen Settings configuration keys
Key

ValuesDescription

touchscreen_backlightinteger( 0...255)

Specify the touchscreen backlight level.

touchscreen_enabledonempty string ("")

Enables or disables the touch screen.
To enable the touch screen, set to on.
To disable the touch screen, set to an empty string ("").

touchscreen_infoonempty string ("")

Enables or disables system information from the touch screen.
To enable system info from the touch screen, set to on.
To disable system info from the touch screen, set to an empty
string ("").

touchscreen_preview

onempty string ("")

Enables or disables channel preview on the touch screen.
To enable preview on the touch screen, set to on.

18

Pearl API User Guide

Configuration keys for third party APIs

Key

ValuesDescription
To disable preview on the touch screen, set to an empty string("").

touchscreen_recordctl

onempty string ("")

Enables or disables recording control from the touch screen.
To enable recording from the touch screen, set to on.
To disable recording from the touch screen, set to an empty
string ("").

touchscreen_settingsonempty string ("")

Enables or disables settings changes from the touch screen.
To enable settings changes from the touch screen, set to on.
To disable settings changes from the touch screen, set to an
empty string ("").

touchscreen_timeout

integer

Specify the time in seconds before the touchsreen times out.
For no timeout, use 0.

Recording configuration keys
The following recording settings are supported. Specify the channel or recorder you want to configure.
Table 8 Supported Recording configuration keys
Key

ValuesDescription

rec_enabledonempty string ("")

Enables or disables recording.
To enable recording, set to on.
To disable recording, set to an empty string ("").

rec_format

avi
mov
mp4
mp4f
ts

Specifies the format of the saved file. (mp4 is used for the
progressive mp4 file format, mp4f for fragmented)

rec_prefix

stringSpecifies a prefix for the recorded filenames.

rec_sizelimit

integer

Specifies the file size limit, in kilobytes (kB).

rec_timelimit

string (no quotes)
hh:mm:ssSpecifies the time limit before a new recording file is created.
For example, for 3 hour recordings, use 3:00:00

HTTP server configuration keys
The following settings are supported for configuration of the local HTTP server on your Pearl system.

19

Pearl API User Guide

Configuration keys for third party APIs

Table 9 Supported HTTP Server configuration keys
Key

ValuesDescription

http_port

integer

Specifies the HTTP server port.

http_sport

integer

Specifies the HTTP server SSL port (HTTPS port).

http_usesslonempty string ("")

Enables or disables HTTPS (SSL Server)
To enable SSL, set to on.
To disable SSL, set to an empty string ("").

IP-based access control configuration keys
The following settings are supported for configuring allowed and denied IP addresses for the Pearl system (notindividual channels). For more information about creating Allow and Deny lists to restrict user access, see theuser guide for your Pearl system.
Table 10 Supported IP-Based Access configuration keys
Key

ValuesDescription

allowips

string: commaseparated list of
IP addresses and/or
ranges.
empty string("")

Specifies the IP addresses to permit access.
To restrict access, provide a list of permitted IP addresses.
To clear allowed IP restriction, set to an empty string ("").

denyipsstring: commaseparated list of
IP addresses and/or
ranges.
empty string("")

Specifies the IP addresses to deny access.
To restrict access, provide a list of denied IP addresses.
To clear denied IP restriction, set to an empty string ("").

Key

ValuesDescription

share_archiveon
empty string ("")

Enables sharing of recorded files via UPnP.
To enable sharing files over UPnP, set to on.
To disable sharing files over UPnP, set to an empty string ("").

share_
livestreams

onempty string ("")

Enables sharing of the live stream via UPnP.
To enable stream sharing over UPnP, set to on.
To disable stream sharing over UPnP, set to an empty string ("").

server_namestringSpecifies the UPnP server name.
To use the system name, set to an empty string ("").

20

Pearl API User Guide

Configuration keys for third party APIs

Broadcast configuration keys
The following settings for streaming to viewers (broadcasting) are supported, including stream access control
settings.
Table 11 Supported Broadcast configuration keys
Key

ValuesDescription

bcast_disabledonempty string ("")

Enables or disables the broadcast.
To disable broadcast, set to on.
To enable broadcast, set to empty string ("").

rtsp_port

1000...65535,
but not 5557

Specifies the port for RTSP streaming. Note port 5557 is used for
network discovery and cannot be used for streaming.

streamport

1000...65535,
but not 5557

Specifies the port used for streaming. Note port 5557 is used for
network discovery and cannot be used for streaming.

ac_overrideonempty string ("")

Overrides the global stream access settings or uses global
stream access settings.
To use global stream access settings, set to empty string ("").
To override global stream access settings and use local viewer
access permtions, set to on.

ac_viewerpwd

stringSpecifies the password for Viewers.

ac_allowips

integer

Displays a list of the allowed IP addresses for live streams

ac_denyips

integer

Displays a list of the denied IP addresses for live streams

Channel encoder configuration keys
The following encoder settings are supported for each channel. For more information on individual encoding
parameters, see the user guide for your Pearl system. For Pearl Nano, the channel index number is always 1.
Table 12 Supported channel encoder configuration keys
Key

ValuesDescription

autoframesizeonempty string ("")

Enables or disables use of the current signal’s resolution as theframe size. Is switched to off if a frame size is manuallyspecified.
To use current signal’s frame size, set to on.
To specify frame size directly, set to empty string ("").

codec

h.264
mjpeg

Specifies the stream codec.

fpslimit

1-60

Specifies the frame per second limit.

21

Pearl API User Guide

Key

Configuration keys for third party APIs

ValuesDescription
Set to your desired limit.

framesize

slicemode

vbitratewxh

Specifies the frame (width by height) size in pixels.

for example:
640x480, 720x400,
1024x768,
1920x1080

Set to desired size. Choose from the list in the UI or set acustom value of your choosing up to the maximum output
resolution supported by the Pearl system.

onempty string ("")

Enables or disables H.264 slicing for RTP. To enable slicing,
set to on. To disable slicing, set to empty string ("").

Integer

Gets or changes the video bitrate in kbps.

vbufmode

1 (low delay)
2 (storage)

Specifies the broadcast compression level.
For low delay when streaming, specify 1.
For best results or recording, set to 2.

vencpreset

0 (Software)
5 (Hardware
Accelerated)

Specifies a video encoding preset.
For software, set to 0.
For hardware acceleration (recommended), set to 5

vkeyframeinterval

integerInterval time in seconds between key frames in the encoded
stream.

vprofile

66
77
100

Specifies the h.264 video profiles.
For Baseline profile, select 66.
For Main profile, select 77.
For High profile, select 100.

qvalue0...100

Specifies quality for M-JPEG videos.

Channel layout configuration keys
To work with layouts, you need to know the integer identifier of the layout. To find the layout's identifier, select thelayout using the Admin panel and look for the identifier in the browser's url. For Pearl Nano, the layout identifier isalways 1.

22

Pearl API User Guide

Configuration keys for third party APIs

Table 13 Supported channel layout configuration keys
Key

ValuesDescription

active_layout

integer

Specifies which layout is currently active for the specified
channel.

Audio configuration keys
The following audio configuration keys are supported. For more information about audio encoding settings, see
the user guide for your Pearl system.
Table 14 Supported Audio configuration keys
Key

ValuesDescription

audio

on
empty string ("")

Enables or disables audio for the stream.
To enable audio, set to on.
To disable audio, set to an empty string ("").

audiobitrate

32
64
96
112
128
160
192

Specifies the audio bitrate for the stream.
Not applicable for PCM audio codecs.

audiochannels

1 (mono)2 (stereo)

Specifies the number of audio channels.
For mono, set to 1.
For stereo, set to 2.

CODECS:
pcm_s161e (PCM)
libmp3lame (MP3)libfacc (AAC)

Specifies an audio code preset in the format CODEC;RATE.

audiopreset

i.e. libfaac;22050

RATES:

23

Pearl API User Guide

Key

Configuration keys for third party APIs

ValuesDescription

16000 (AAC only)
22050
44100
48000

Stream publishing configuration keys
The system supports the following stream publishing settings. For more information about streaming, see theuser guide for your Pearl system.
Table 15 Supported Stream Publishing configuration keys
Keypublish_enabledpublish_type

Valueson
off / any other value

0 (do not publish)
2 (RTSP Announce)
3 (multicast
RTP/UDP)4 (multicast MPEG-TS
over UDP)
5 (multicast MPEG-TS
over RTP/UDP)
6 (RTMP push)

Description
Starts or stops streaming to CDN servers (RTSP, RTMP typestreaming).
To turn streaming on, set to on.
To turn streaming off, set to off or to any other value.

Specifies the type of stream publishing, if any.

RTSP Announce configuration keys (Publish type 2)
The following settings are supported when the publish type is set to RTSP Announce. For more information on
RTSP and these settings, see the user guide for your Pearl system.
Table 16 Supported RTSP Announce configuration keys
Key

ValuesDescription

rtsp_url

stringSpecifies the RTSP server announce URL.

rtsp_transport

tcp
udp or empty string ("")

Specifies the RTSP transport, either tcp or udp.
Use udp or "" for udp transport
Use tcp for tcp transport.

24

Pearl API User Guide

Configuration keys for third party APIs

Key

ValuesDescription

rtsp_username

stringSpecifies the username for the RTSP server.

rtsp_password

stringSpecifies the password for the RTSP server.

RTP/UDP configuration keys (Publish type 3)
The following settings are supported when the publish type is set to RTP/UDP. For more information on
RTP/UDP and these settings, see the user guide for your Pearl system.
Table 17 Supported RTP/UDP configuration keys
Key

ValuesDescription

unicast_address

string (IP address)

Specifies the unicast/multicast address.

unicast_aport

1000...65535,
but not 5557

Specifies the UDP port for RTP/UDP audio streaming. Note port
5557 is used for network discovery and cannot be used for
streaming.

unicast_vport

1000...65535,
but not 5557

Specifies the UDP port for RTP/UDP video streaming. Note port
5557 is used for network discovery and cannot be used for
streaming.

MPEG-TS configuration keys (Publish types 4 and 5)
The following settings are supported when the publish type is set to MPEG-TS and for associated Session
Announcement Protocol (SAP) distribution. For more information on MPEG-TS and these settings, see the user
guide for your Pearl system.
Table 18 Supported MPEG-TS and SAP configuration keys
Key

ValuesDescription

unicast_address

string (IP address)

Specifies the unicast/multicast address.

unicast_mport

1000...65535,
but not 5557

Specifies the UDP port for MPEG-TS streaming. Note port 5557
is used for network discovery and cannot be used for streaming.

sap

on
empty string ("")

Enables sharing of recorded files via SAP.
To enable sharing files over SAP, set to on.
To disable sharing files over SAP, set to an empty string ("").

sap_channel_no

integer

Specifies the SAP channel number.

sap_group

stringSpecifies the SAP group name.

sap_ipstringSpecify the SAP annoucement IP.

25

Pearl API User Guide

Configuration keys for third party APIs

RTMP push configuration keys (Publish type 6 and 7)
The following settings are supported when the publish type is set to RTMP Push. For more information on RTMP/
RTMPS and these settings, see the user guide for your Pearl system.
Table 19 Supported RTMP Push Configuration Keys
Key

ValuesDescription

rtmp_url

stringSpecifies the RTMP server URL.

rtmp_stream

stringSpecifies the RTMP stream name, as configured with the CDN.

rtmp_username

stringSpecifies the username for the RTMP server.

rtmp_password

stringSpecifies the password for the RTMP server.

Content metadata configuration keys
The following keys are available for configuration of the content's metadata.
Table 20 Supported Content Metadata Configuration Keys
Key

ValuesDescription

authorstringSpecifies the name of the author for the stream/recording. Referto description above on handling white space (spaces) in thestring.

comment

stringSpecifies a comment for the stream/recording. Refer todescription above on handling white space (spaces) in the string.

copyright

stringSpecifies the copyright for the streaming/recording. Refer todescription above on handling white space (spaces) in the string.

stringSpecifies the title for the stream/recording. Refer to description
above on handling white space (spaces) in the string. (This string
can be displayed by certain viewing applications by looking at thestream's metadata information.)

title

26

What's new and release history
Release 4.12.1 revision 3
To comply with security mandates, Pearl system firmware update 4.14.2 introduced password requirements for theadmin, operator, and viewer user accounts. If no passwords are currently assigned to the user accounts on Pearl and afactory reset or default configuration preset is applied after upgrading the firmware, connection to Pearl will fail. Assign
passwords to Pearl's admin, operator, and viewer user accounts then update your API scripts to supply the appropriate
username and password. If passwords are already set up and included in your API scripts, no additional action isrequired.
Assign passwords to the user accounts on Pearl using the Admin panel or run the following HTTP API commands:
POST http://{{host}}/api/system/access/passwords
Authorization: Basic {{username}}:{{password}}Content-Type: application/json
Accept: application/json{"admin": "","operator": "","viewer": ""}Release 4.12.1 revision 2
Added Pearl Nano support. No API commands were added or modified. Pertinent Pearl Nano considerations include:l

Pearl Nano's channel index number is always 1. The layout identifier is also always 1.

lPearl Nano doesn't support multiple channels, multiple layouts, recorders, touch screen, and the Motion JPEG
codec. Commands related to these are either ignored (for example, you cannot delete the channel or create a newlayout on Pearl Nano), or applied to only a single target item, such as the single channel or layout on Pearl Nano.

Release 4.12.1
The initial publication of the Pearl System API Guide aligns with Pearl-2 and Pearl Mini firmware release 4.12.1 and iscompatible with subsequent firmware releases of those products until otherwise noted. There are no API changes todocument from the previous release of the Pearl firmware.

Software license
ATTENTION: THE SOFTWARE AND DOCUMENTATION PROVIDED UNDER THIS AGREEMENT ARE BEING LICENSED TO YOU
BY EPIPHAN SYSTEMS INC. ("LICENSOR") AND ARE NOT BEING SOLD. THIS AGREEMENT CONTAINS LIMITATIONS ON
REPRESENTATIONS, WARRANTIES, CONDITIONS, REMEDIES, AND LIABILITIES THAT ARE APPLICABLE TO THE
SOFTWARE AND DOCUMENTATION.
Epiphan Systems Inc.
Software License
IMPORTANT: BEFORE DOWNLOADING, INSTALLING, OR USING THE SOFTWARE AND DOCUMENTATION, PLEASECAREFULLY READ THIS AGREEMENT WHICH CONTAINS THE TERMS AND CONDITIONS UNDER WHICH YOU ARE
ACQUIRING A LICENSE TO USE THE SOFTWARE AND DOCUMENTATION. IF YOU DO NOT ACCEPT THE TERMS AND
CONDITIONS OF THIS AGREEMENT PLEASE DO NOT DOWNLOAD, INSTALL, OR USE THE SOFTWARE AND
DOCUMENTATION AND PROMPTLY RETURN OR DESTROY THE SOFTWARE AND DOCUMENTATION. IF YOUDOWNLOAD, INSTALL, OR USE THE SOFTWARE AND/OR DOCUMENTATION, YOU WILL HAVE ACCEPTED AND AGREEDTO THESE TERMS AND CONDITIONS. THE SOFTWARE, HARDWARE AND DOCUMENTATION ARE ALSO PROTECTED BYCOPYRIGHT LAWS AND INTERNATIONAL COPYRIGHT TREATIES, AS WELL AS OTHER INTELLECTUAL PROPERTY
LAWS. IF YOU ARE AN AGENT OR EMPLOYEE OF AN ENTITY, YOU REPRESENT AND WARRANT THAT (I) THE
INDIVIDUAL ACCEPTING THIS AGREEMENT IS DULY AUTHORIZED TO ACCEPT THIS AGREEMENT ON SUCH ENTITY'SBEHALF AND TO BIND SUCH ENTITY, AND (II) SUCH ENTITY HAS FULL POWER, CORPORATE OR OTHERWISE, TO
ENTER INTO THIS AGREEMENT AND PERFORM ITS OBLIGATIONS UNDER THIS AGREEMENT.
1. Definitions: In this Agreement:"Agreement" means this Epiphan Systems Inc. Software License;"API" means an application programming interface;"Documentation" means the technical publications delivered to You with the Software relating to the installation and operation of the
Software and/or Hardware, such as reference, user, installation and technical guides and release notes;"Epiphan" means Epiphan Systems Inc;
"Epiphan Hardware Product" means an Epiphan hardware product (including enclosure and mechanical parts, circuitry and electricaland electronic components contained therein) purchased by You, which is intended to be used in conjunction with the licensed
Software and Documentation;"License Key" means a series of computer-generated characters used for the purpose of controlling the operation of Epiphan
Hardware Products and/or related Software;"Software" means the Licensor binary and/or bytecode software and/or firmware programs that are (i) specified in Your Order or thatare included with or in the Epiphan Hardware Products specified in Your Order, (ii) are made available to You for download after
acceptance of this Agreement, (iii) are packaged with this Agreement, (iv) pre-installed on Epiphan Hardware Products, (v) embed thisAgreement in their installer(s) and which are installed after acceptance of this Agreement, or (vi) embed this Agreement in theirproduct documentation. Software also includes the related Documentation;"You" or "Your" means the individual acquiring the Software license or any entity on whose behalf such individual is acting. In the caseof an entity, "You" includes any entity that by majority voting interest controls, is controlled by, or is under common control with You;
and"Your Order" means (i) the web forms provided by Epiphan or its applicable reseller or distributor for ordering Epiphan Hardware
Products and related Software licenses, or (ii) written documents executed by Epiphan, or one of its resellers or distributors, and You
in respect to Your purchases of Epiphan Hardware Products and/or related Software licenses.
2. Grant of Software License: Subject to the terms and conditions of this Agreement, including payment of any applicable fees
specified in Your Order, Licensor grants You a non-exclusive, non-transferable, non-sublicensable, internal license to use the numberof copies of the Software specified in Your Order and to use the Software functions specified in Your Order solely for operation on the
Epiphan Hardware Products for which such Software has been designed as specified in the Documentation for such Software. If thenumber of copies of Software is not specified in Your Order, then the number of copies shall be a reasonable number of copies. You
acknowledge and agree that the ability to use certain Software functions is controlled by a Licensing Key and that You will not be able
to use such functions unless You have paid the applicable fees charged by Epiphan for the right to use such functions and to receive a
Licensing Key to enable such functions. For functions that are controlled by a Licensing String You shall only use that Licensing Stringwith the copy of the Software for which it was issued and You shall not use that copy of the Licensing String with any other copies of theSoftware that You may have or make. All copies of the Software made by You shall include all trademarks, copyright notices, restricted
rights legends, proprietary markings and the like exactly as they appear on the copy of the Software originally provided to You. No
other rights in the Software or Documentation are granted to You.
3. Open Source Software: Binary, bytecode and source code versions of certain open source software packages may be embeddedin or distributed with the Software ("Open Source Software"). If a separate license agreement for an item of open source software is:delivered to You with the Software; included in the download package for the Software; referenced in any material (including theDocumentation) that is included in the download or distribution package for the Software; or listed at www.epiphan.com/opensource,then such open source software shall be Open Source Software and such separate license agreement shall govern Your use of that
item or version of such open source software. The Open Source Software may include free software (i.e. software licensed under the
GNU Lesser General Public License or other free software licenses) for which the applicable free software license may also requirethat the source code for such free software be made available to those receiving only executable versions of such free software. If thesource code for any free software distributed with the Software is not provided with the Software, then upon request, within a three (3)year period from the original receipt of the binary or bytecode version of such Open Source Software from Licensor, for a fee that shallnot exceed Licensor's costs associated with the shipping of the source code for such free software, Licensor will provide a copy of thesource code for such free software to You.
4. Restrictions: The terms set forth in this Section 4 are additional conditions to the licenses granted in Section 2. Your right to use theSoftware is conditioned upon Your timely payment of the full amount of fees due for: (i) the Epiphan Hardware Product(s) on which You
want to use the Software; (ii) all support agreements You have entered into with Licensor or any of its distributors and/or resellers; (iii)
licensed Software and Documentation.
You shall not reverse engineer, disassemble, reverse translate, decompile or in any other manner decode any Epiphan Hardware
Product or Software except to the extent the Software is distributed with any Open Source Software that prohibits the imposition ofsuch a restriction or to the extent the foregoing restriction is expressly prohibited by applicable law notwithstanding a contractual
obligation to the contrary. You acknowledge and agree that no rights in respect to the source code of the Software are granted to You.
You acknowledge and agree that the rights in respect to use of the Software and Documentation are granted only for use inconjunction with Epiphan Hardware Products. You shall not distribute, lease, rent, grant a security interest in, assign, or otherwisetransfer the Software except as expressly provided in this Agreement. You shall not modify or create any derivatives works of the
Software or merge all or any part of the Software with another program. Notwithstanding the foregoing, You may call public APIs madeavailable by Epiphan in the Software from applications developed by or on Your behalf provided that such applications do not embedany of the Software other than the minimum linkage materials required to call separately running instances of the Software. You shallnot use the Software or make the Software available to any third parties as part of any service bureau, time sharing service, application
service provider offering, software-as-a-service offering or any other managed service offering. You shall not disclose any
performance, benchmarking, or feature-related information about the Software. You further agree not to disclose, transfer or otherwise
provide to any third party any portion of the Software, except as expressly permitted herein.
Some Epiphan Hardware Products and Software embed third-party APIs that integrate with third-party party services (“Third-Party
Services”) to allow users of such Epiphan Hardware Products and Software to interact with such Third-Party Services for various
capabilities offered by such Third-Party Services, such as, and without limitation, authentication, uploading and downloading of video
content and other features made available by such Third-Party Services. If You access or use any Third-Party Service and/or related
APIs using an Epiphan Hardware Product and/or the Software then You shall comply with all of the terms and conditions for such
Third-Party Service and/or related APIs.
5. Disclaimer of Warranties: EXCEPT FOR ANY WARRANTIES THAT MAY BE PROVIDED IN ANY COMMERCIAL
AGREEMENT EXECUTED BETWEEN YOU AND LICENSOR (OR BETWEEN YOU AND ONE OF LICENSOR’S RESELLERSOR DISTRIBUTORS), THE EPIPHAN HARDWARE PRODUCTS, SOFTWARE AND/OR DOCUMENTATION ARE PROVIDED“AS IS”, WITHOUT ANY REPRESENTATIONS, CONDITIONS, AND/OR WARRANTIES OF ANY KIND. WITHOUT LIMITATION,
LICENSOR AND ITS AFFILIATES AND ITS AND THEIR LICENSORS, SUPPLIERS, SUBCONTRACTORS, RESELLERS AND
DISTRIBUTORS DISCLAIM ANY AND ALL IMPLIED REPRESENTATIONS, CONDITIONS AND/OR WARRANTIES OF
MERCHANTABILITY, MERCHANTABLE QUALITY, NON-INFRINGEMENT, DURABILITY, COMPATIBILITY, TITLE,
SATISFACTORY QUALITY AND/OR FITNESS FOR A PARTICULAR PURPOSE WHETHER ARISING BY STATUTE, COURSE
OF DEALING, USAGE OF TRADE OR OTHERWISE. EXCEPT AS OTHERWISE EXPRESSLY PROVIDED IN ANYCOMMERCIAL AGREEMENT EXECUTED BETWEEN YOU AND LICENSOR (OR BETWEEN YOU AND ONE OF LICENSOR’SRESELLERS OR DISTRIBUTORS), THE ENTIRE RISK OF THE USE OF THE EPIPHAN HARDWARE PRODUCTS,
SOFTWARE AND/OR DOCUMENTATION SHALL BE BORNE BY YOU. EXCEPT AS OTHERWISE EXPRESSLY PROVIDED IN
ANY COMMERCIAL AGREEMENT EXECUTED BETWEEN YOU AND LICENSOR (OR BETWEEN YOU AND ONE OF
LICENSOR’S RESELLERS OR DISTRIBUTORS), NEITHER LICENSOR NOR ANY OF ITS AFFILIATES NOR ANY OF ITS OR
THEIR LICENSORS, SUPPLIERS, SUBCONTRACTORS, RESELLERS AND/OR DISTRIBUTORS MAKE ANY
REPRESENTATIONS OR PROVIDE ANY CONDITIONS AND/OR WARRANTIES ABOUT THE SUITABILITY OF THE EPIPHAN
HARDWARE PRODUCTS, SOFTWARE, SERVICES AND/OR DOCUMENTATION. NEITHER LICENSOR NOR ANY OF ITS
AFFILIATES NOR ANY ITS OR THEIR LICENSORS, SUPPLIERS, SUBCONTRACTORS, RESELLERS AND/OR
DISTRIBUTORS MAKE ANY REPRESENTATIONS OR PROVIDE ANY CONDITIONS AND/OR WARRANTIES WHATSOEVERABOUT ANY INFORMATION AND/OR DATA THAT MAY BE PROCESSED BY OR MADE AVAILABLE USING ANY EPIPHAN

HARDWARE PRODUCT AND/OR SOFTWARE OR ABOUT ANY THIRD-PARTY SERVICE THAT MAY BE ACCESSIBLE
USING ANY EPIPHAN HARDWARE PRODUCT AND/OR SOFTWARE.
6. LIMITATION OF LIABILITY: NEITHER LICENSOR NOR ANY OF ITS AFFILIATES NOR ANY OF ITS OR THEIR
LICENSORS, SUPPLIERS, SUBCONTRACTORS, RESELLERS AND/OR DISTRIBUTORS SHALL HAVE ANY LIABILITY TO
YOU OR ANY OTHER PERSON OR ENTITY FOR ANY DAMAGES ARISING FROM THIS AGREEMENT, RELATING TO THE
HARDWARE, SOFTWARE OR DOCUMENTATION, OR RELATING TO ANY SERVICES PROVIDED TO YOU BY LICENSOR(INCLUDING ITS AFFILIATES AND ITS AND THEIR LICENSORS, SUPPLIERS, SUBCONTRACTORS, RESELLERS AND/OR
DISTRIBUTORS) IN RELATION TO THE EPIPHAN HARDWARE PRODUCTS, SERVICES, SOFTWARE AND/OR
DOCUMENTATION FOR ANY INDIRECT, RELIANCE, INCIDENTAL, SPECIAL, PUNITIVE, EXEMPLARY OR
CONSEQUENTIAL DAMAGES, INCLUDING, BUT NOT LIMITED TO, LOSS OF REVENUE OR PROFIT, LOSS OF ORDAMAGE TO DATA, BUSINESS INTERRUPTION, LOSS OF DATA, REPLACEMENT OR RECOVERY COSTS, OR OTHERCOMMERCIAL OR ECONOMIC LOSS, WHETHER ARISING FROM CONTRACT, EQUITY, TORT (INCLUDING NEGLIGENCE
OR STRICT LIABILITY) OR ANY OTHER THEORY OF LIABILITY, EVEN IF LICENSOR (INCLUDING ITS AFFILIATES AND ITS
AND THEIR LICENSORS, SUPPLIERS, SUBCONTRACTORS, RESELLERS AND/OR DISTRIBUTORS) HAVE BEEN
ADVISED OF THE POSSIBILITY OF SUCH DAMAGES, OR THEY ARE FORESEEABLE. THE LIMITATIONS IN THIS SECTION
SHALL APPLY WHETHER OR NOT THE ALLEGED BREACH OR DEFAULT IS A BREACH OF A FUNDAMENTAL CONDITIONOR TERM OR FUNDAMENTAL BREACH. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF
LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES, SO THESE LIMITATIONS MAY NOT APPLY TO YOU. IN NO
EVENT SHALL THE TOTAL CUMULATIVE LIABILITY OF LICENSOR (INCLUDING ITS AFFILIATES AND ITS AND THEIR
LICENSORS, SUPPLIERS, SUBCONTRACTORS, RESELLERS AND DISTRIBUTORS) TO YOU OR ANY OTHER PERSONOR ENTITY FOR ANY DAMAGES ARISING FROM THIS AGREEMENT, RELATING TO THE EPIPHAN HARDWARE
PRODUCTS, SOFTWARE, DOCUMENTATION AND/OR RELATING TO ANY SERVICES PROVIDED TO YOU BY LICENSOR(INCLUDING ITS AFFILIATES AND ITS AND THEIR LICENSORS, SUPPLIERS, SUBCONTRACTORS, RESELLERS AND
DISTRIBUTORS) IN RELATION TO THE EPIPHAN HARDWARE PRODUCTS, SOFTWARE AND/OR DOCUMENTATION,
EXCEED THE LICENSE FEES PAID BY YOU FOR THE SOFTWARE.
NOTWITHSTANDING ANY OTHER PROVISION IN THIS AGREEMENT, NEITHER LICENSOR NOR ANY OF ITS AFFILIATESOR ITS OR THEIR LICENSORS, SUPPLIERS, SUBCONTRACTORS, RESELLERS AND/OR DISTRIBUTORS SHALL HAVEANY LIABILITY TO YOU OR ANY OTHER PERSON OR ENTITY WHATSOEVER IN RESPECT TO ANY DIRECT, INDIRECT,RELIANCE, INCIDENTAL, SPECIAL, PUNITIVE, EXEMPLARY OR CONSEQUENTIAL DAMAGES, INCLUDING, BUT NOT
LIMITED TO, LOSS OF REVENUE OR PROFIT, LOSS OF OR DAMAGE TO DATA, BUSINESS INTERRUPTION, LOSS OF
DATA, REPLACEMENT OR RECOVERY COSTS, OR OTHER COMMERCIAL OR ECONOMIC LOSS, ARISING FROM ORRELATING TO ANY INFORMATION AND/OR DATA THAT MAY BE PROCESSED BY OR MADE AVAILABLE USING ANYEPIPHAN HARDWARE PRODUCT AND/OR SOFTWARE OR ARISING FROM OR RELATING TO ANY THIRD-PARTYSERVICE THAT MAY BE ACCESSIBLE USING ANY EPIPHAN HARDWARE PRODUCT AND/OR SOFTWARE.
THE DISCLAIMER OF REPRESENTATIONS, WARRANTIES AND CONDITIONS AND LIMITATION OF LIABILITYCONSTITUTE AN ESSENTIAL PART OF THIS AGREEMENT. YOU ACKNOWLEDGE THAT BUT FOR THE DISCLAIMER OF
REPRESENTATIONS, WARRANTIES AND CONDITIONS AND LIMITATION OF LIABILITY, NEITHER LICENSOR NOR ANY
OF ITS AFFILIATES OR ITS OR THEIR LICENSORS, SUPPLIERS, RESELLERS OR DISTRIBUTORS WOULD GRANT THE
RIGHTS GRANTED IN THIS AGREEMENT.
7. Term and Termination: This Agreement shall continue for as long as You use the Software, however, it may be terminated sooner
as provided in this Section 7. You may terminate this Agreement by destroying all copies of the Software and Documentation underYour control and providing certification of such destruction to Licensor or by returning the Software to Licensor. Licensor may
terminate this Agreement immediately by providing You with written notice if: (a) You are in material breach of any provision of thisAgreement, which breach, if capable of being cured, is not cured within thirty (30) days after Licensor gives You written notice thereof;or (b) You have committed a non-curable material breach of this Agreement. Upon termination You shall destroy all copies of the
Software and Documentation. In addition to this Section, the Sections entitled Definitions, Disclaimer of Warranties, Limitation of
Liability, Title, Indemnities, High-Risk Activities, Intellectual Property, and General shall continue in force even after any termination ofthis Agreement. No termination of this Agreement will entitle You to a refund of any amounts paid by You to Licensor or any reseller or
distributor or affect any obligations You may have to pay any outstanding amounts owing to Licensor or any reseller or distributor.
Upon any termination of this Agreement, Your license to the Software and Documentation will terminate and You shall destroy all
copies of the Software and Documentation under Your control and certify such destruction to Licensor.
8. Support and Updates: This Agreement does not grant You the right to any updates or enhancements of the Software or the right toreceive any technical support for the Software. Such updates and other technical support services, if available, may be purchased
separately from Licensor or one of Licensor’s resellers or distributors. Use of any updates or enhancements to the Software provided
pursuant to any technical support You may procure from Licensor or one of Licensor’s resellers or distributors shall be governed by theterms and conditions of this Agreement. Licensor reserves the right at any time not to release or to discontinue the release of any
Software and to alter prices, features, specifications, capabilities, functions, licensing terms, release dates, general availability or othercharacteristics of the Software.

9. Title: All right, title, and interest (including all intellectual property rights) in, to, and under the Software (including all copies thereof)
shall remain with Licensor and its licensors.
10. Indemnities: You shall indemnify, defend and hold Licensor, its affiliates, its and their licensors, suppliers, subcontractors,
resellers and/or distributors and all of the directors, officers, employees of all of the foregoing (collectively the “Indemnified Parties”)
harmless from and against any damages, losses, liabilities, expenses, costs, claims, demands, actions, suits and/or proceedings
incurred by the Indemnified Parties as a result of (i) Your use of the Epiphan Hardware Products, Software and/or Documentation, (ii)any use of the Epiphan Hardware Products, Software and/or Documentation on Your behalf, (iii) the use of the Epiphan Hardware
Products, Software and/or Documentation by anyone to whom You give the Epiphan Hardware Products, Software and/orDocumentation, and/or (iv) the use of the Epiphan Hardware Products, Software and/or Documentation on behalf of anyone to whom
You give the Epiphan Hardware Products, Software and/or Documentation, including, without limitation, in all of the foregoing cases,
any damages, losses, liabilities, expenses, costs, claims, demands, actions, suits and/or proceedings arising from or relating to any
information and/or data that may be processed by or made available using any Epiphan Hardware Product and/or Software or arisingfrom or relating to any Third-Party Service that may be accessible using any Epiphan Hardware Product and/or Software (collectively,
each matter falling within any of the foregoing, a “Claim”), including, without limitation, indemnifying, defending and holding theIndemnified Parties harmless from and against any settlements agreed by You in connection with any Claims and/or any damages,
costs or other amounts (including reasonable attorneys' fees) awarded to a third party against any of the Indemnified Parties by a court
or tribunal of competent jurisdiction in respect to any Claim. If You do not timely defend against or resist a Claim after notice from
Licensor, Licensor shall be entitled to investigate, defend, compromise, settle, or otherwise dispose of the Claim, and incur costs inconnection therewith, at Your expense, in such manner as Licensor deems in its best interests until a reasonable time after You
comply with its obligations under this Section 10. You shall not enter into a settlement of any Claim without the Licensor’s writtenconsent unless such settlement is solely for monetary payment by You and contains an express, complete, unconditional release of allof the Indemnified Parties and which does not impose any obligations or restrictions on any of the Indemnified Parties.
11. High-Risk Activities: The Software and Epiphan Hardware Products are not fault-tolerant and are not designed, manufactured orintended for use in or in conjunction with on-line control equipment in hazardous environments requiring fail-safe performance, such as
in the operation of nuclear facilities, aircraft navigation systems, air traffic control, or direct life support machines. Licensor, its
licensors, suppliers, subcontractors, resellers and distributors specifically disclaim any express or implied representations, warranties
and/or conditions for such uses.
12. U.S. Government End-Users: The Software and Documentation are each a "commercial item" as that term is defined at FAR
2.101, consisting of "commercial computer software" and "commercial computer software documentation" as such terms are defined in
FAR 12.212, and are provided to the U.S. Government only as commercial end items. Government end users acquire the rights set out
in this Agreement for the Software, Epiphan Hardware Products and Documentation consistent with: (i) for acquisition by or on behalfof civilian agencies, the terms set forth in FAR12.212; or (ii) for acquisition by or on behalf of units of the Department of Defense, theterms set forth in DFARS 227.7202. Use of the Epiphan Hardware Products, Software and Documentation is further restricted by theterms and conditions of this Agreement and the applicable commercial purchase agreement for the Epiphan Hardware Products. For
the purposes of any applicable government use, the Epiphan Hardware Products, Software and Documentation were developed
exclusively at private expense, and are trade secrets of Epiphan Systems Inc. for the purpose of any Freedom of Information
legislation or any other disclosure statute, regulation or provision.
13. Export Restrictions: The Epiphan Hardware Products, Software, Documentation and related information are subject to export andimport restrictions. By downloading, installing, or using the Software, Epiphan Hardware Products, Documentation and/or related
information, You are representing and warranting that You are not located in, are not under the control of, and are not a national orresident of any country to which the export of the Epiphan Hardware Products, Software, Documentation and/or related information
would be prohibited by the laws and/or regulations of Canada or the United States. You are also representing and warranting that You
are not an individual to whom the export of the Epiphan Hardware Products, Software, Documentation or related information would beprohibited by the laws and/or regulations of Canada or the United States. You shall comply with the export laws and regulations ofCanada and the United States that are applicable to the Epiphan Hardware Products, Software, Documentation and related
information and You shall also comply with any local laws and/or regulations in Your jurisdiction that may impact Your right to export,
import, or use the Epiphan Hardware Products, Software, Documentation or related information, and You represent and warrant that
You have complied with any such applicable laws and/or regulations. The Epiphan Hardware Products, Software, Documentation andrelated information shall not be used for any purposes prohibited by export laws and/or regulations, including, without limitation,
nuclear, chemical, or biological weapons proliferation. You shall be responsible for procuring all required permissions for any
subsequent export, import, or use of the Epiphan Hardware Products, Software, Documentation or related information.
14. Intellectual Property: Epiphan, Epiphan Systems and Epiphan Video are tradenames, trademarks or registered trademarks of
Epiphan Systems Inc. in certain countries. All Licensor product names and logos are trademarks or registered trademarks of Epiphan
Systems Inc. in certain countries. All other company and product names and logos are trademarks or registered trademarks of theirrespective owners in certain countries. You shall not disclose, transfer or otherwise provide to any third party any portion of the
Software, except as expressly permitted in this Agreement.
15. General: This Agreement is the entire agreement between You and Licensor in respect to the Software, superseding any otheragreements or discussions, oral or written. The terms and conditions of this Agreement shall prevail over any pre-printed terms on any

quotes, orders, purchase orders, or purchase order acknowledgements, and shall prevail over any other communications between theparties in relation to the Software. You may not assign this Agreement whether voluntarily, by operation of law, or otherwise without
Licensor's prior written consent. Licensor may assign this Agreement at any time without notice. The failure of a party to claim a breachof any term of this Agreement shall not constitute a waiver of such breach or the right of such party to enforce any subsequent breachof such term. If any provision of this Agreement is held to be unenforceable or illegal, such decision shall not affect the validity or
enforceability of such provisions under other circumstances or the remaining provisions of this Agreement and such remaining
provisions shall be reformed only to the extent necessary to make them enforceable under such circumstances. This Agreement shallbe governed by the laws of the Province of Ontario and the laws of Canada applicable therein. No choice or conflict of laws rules of any
jurisdiction shall apply to this Agreement. You shall only be entitled to bring any action or proceeding arising out of or relating to thisAgreement, the Epiphan Hardware Products, Software, Documentation or any services provided in respect to the Epiphan Hardware
Products, Software and/or Documentation in a court in Ottawa, Ontario, Canada, and You consent to the jurisdiction of such courts forany such action or proceeding. You waive all rights that You may have or that may hereafter arise to contest the jurisdiction of suchcourts for any action or proceeding brought by You. You hereby waive any right You may have to request a jury trial with respect to any
action brought by You in connection with this Agreement, the Epiphan Hardware Products or Software or any services provided in
respect to the Epiphan Hardware Products or Software. The application of the United Nations Convention on Contracts for theInternational Sale of Goods to this Agreement is expressly excluded.
August 2020
© 2006-2024. Epiphan Systems Inc. All Rights Reserved.
Other Jurisdictional Issues
Epiphan makes no representation that its products or information in this document or its web site is appropriate or available for use inyour jurisdiction. Those who choose to access the Epiphan web site or use Epiphan products do so on their own initiative and are
responsible for compliance with local laws, if and to the extent local laws are applicable
Submissions to Epiphan and Affiliated Servers
Any information, including but not limited to remarks, suggestions, ideas, graphics, or other submissions, communicated to Epiphan
through their Epiphan web site is the exclusive property of Epiphan. Epiphan is entitled to use any information submitted for any
purpose, without restriction (except as stated in Epiphan's Privacy Statement) or compensation to the person sending the submission.
The user acknowledges the originality of any submission communicated to Epiphan and accepts responsibility for its accuracy,
appropriateness, and legality.
Third Parties and Links to Third-Party Web Sites
Mention of non-Epiphan Systems Inc. products or services on their website, or this document site is for informational purposes anddoes not constitute an endorsement or recommendation.
This document may contain links to non-Epiphan web sites. These links are provided to you as a convenience, and Epiphan is not
responsible for the content of any linked web site. Any outside web site accessed from the Epiphan web site is independent from
Epiphan, and Epiphan has no control over the content of that web site. In addition, a link to any non-Epiphan web site does not imply
that Epiphan endorses or accepts any responsibility for the content or use of such a web site.
In no event shall any reference to any third party or third party product or service be construed as an approval or endorsement by
Epiphan of that third party or of any product or service provided by a third party.
Miscellaneous
It is the user's responsibility to ascertain whether any information downloaded from the Epiphan web site or other websites is free ofviruses, worms, trojan horses, or other items of a potentially destructive nature.
Enforcement of Terms and Conditions
These Terms and Conditions for use of this document and the associated Epiphan Product are governed and interpreted pursuant to
the laws of the province of Ontario, Canada, notwithstanding any principles of conflicts of law.
All disputes arising out of or relating to these Terms and Conditions shall be finally resolved by arbitration conducted in the English
language in Ottawa, Ontario, Canada under the commercial arbitration rules of the Canada. The parties shall appoint as sole arbitratora retired judge who presided in the province of Ontario. The parties shall bear equally the cost of the arbitration (except that theprevailing party shall be entitled to an award of reasonable attorneys' fees incurred in connection with the arbitration in such an amountas may be determined by the arbitrator). All decisions of the arbitrator shall be final and binding on both parties and enforceable in any
court of competent jurisdiction. Notwithstanding this, application may be made to any court for a judicial acceptance of the award ororder of enforcement. Notwithstanding the foregoing, Epiphan shall be entitled to seek injunctive relief, security, or other equitable
remedies from any court of competent jurisdiction.

If any part of these terms is unlawful, void, or unenforceable, that part will be deemed severable and will not affect the validity andenforceability of the remaining provisions. Epiphan may, at its sole discretion and without notice, revise these terms at any time by
updating this posting.
Copyright © 2024 Epiphan Systems Inc.
All Rights Reserved.

© and ™ 2024, Epiphan Systems, Inc