Skip to main content

Signagelive Zero Touch Installation for ChromeOS Devices

Giuseppe (Joe) avatar
Written by Giuseppe (Joe)
Updated today

This article provides a guide on how to install and configure Signagelive on ChromeOS devices using the Zero Touch Installation feature. This feature allows for the remote and automated registration, activation, and full configuration of Chrome players, significantly streamlining the migration process for a large number of devices.

What is Zero Touch Installation?

Zero Touch Installation is designed to remotely configure settings for newly migrated Signagelive players and deliver these settings automatically as part of the player's configuration using HTTP requests with JSON payloads. While Signagelive can already be installed remotely on Chrome devices managed via Chrome CDM, this feature automates the subsequent steps of registration, activation, and configuration.

Key Benefits

  • Automated Configuration: Remotely configure player settings, eliminating the need for manual intervention on each device.

  • Streamlined Migration: This feature simplifies the process of migrating a large number of Chrome players from a competing CMS to Signagelive.

  • Efficiency: Automates player activation through webhooks, allowing partners to integrate with existing APIs for activation.

Supported Configurations for Chrome Players

Zero Touch Installation allows you to remotely configure the following settings for Chrome players, which are typically set locally via the player's settings screen:

  • Reported Timezone: Set the timezone for the player.

  • Display Settings: Configure display settings, including unified desktop and multi-monitor setups.

  • Layout Fit / Resize: Control how content is scaled to fit the display area.

  • Kiosk Mode Settings: Manage interactive kiosk mode functionalities.

How it Works

Using a specific Network API endpoint, users can configure settings for a player or a group of players on their network by using HTTP requests with JSON payloads containing the desired settings.

  1. JSON Settings Object: Settings are sent to the API as a JSON object.

  2. Validation: The API validates the incoming JSON settings against a predefined schema for the specific player type (e.g., Chrome) to ensure accuracy and prevent errors. This validation process is dynamic and allows for different rules for various player types, with schemas stored in the Signagelive database.

  3. Configuration Delivery: Once validated, the settings are appended to the player's configuration and delivered to the player.

  4. Automatic Application: Supported players automatically apply these settings to ensure local settings match the remotely configured ones.

Example of a Chrome Player Configuration with Settings:

JSON

{ "change_id": 108, "last_modified": "2023-01-03T17:07:29Z", ..., "settings": { "timeZone": "Europe/London", "layoutFit": "fill", "displaySettings": { "displayConfigurationMode": "simple", "unifiedDesktopEnabled": true, "displayRotation": 0, "displays": [], "layout": [] }, "interactiveKiosk": { "enabled": false, "options": { "idleIntervalInSeconds": 15, "trigger": { "key": "t", "type": "KeyboardEvent" } } } } }

Configuring Specific Settings

  • Timezone: The timezone will be sent to the player with the value being just the timezone ID. The player will need to find the timezone object from the TimezoneCollection model by matching the ID and then set and store the complete object against the timeZone property when saving and applying the settings.

  • Layout Fit: The layoutFit setting will be sent to the player with the value being the ID only. When saving and applying the settings, the player must find the object from the LayoutFitOptionsCollection model by matching the ID and then set and store the complete object against the layoutFit property.

  • Kiosk Mode: The kiosk mode setting is already formatted exactly as it is saved in the settings.json file, so you only need to replace the value of modules.interactiveKiosk with the provided object and save the settings.

  • Display Settings: Display settings require more detailed configuration. There is a displayConfigurationMode setting that takes two options: simple and advanced.

    • Simple Mode: (displayConfigurationMode: "simple") This mode allows for basic configuration, and when applied, the player will load default display properties and layout using Chrome display APIs. It will only update the unified desktop setting to match unifiedDesktopEnabled and the rotation of all displays to match the displayRotation property.

    • Advanced Mode: (displayConfigurationMode: "advanced") This mode provides all options available via the Settings UI, offering additional flexibility to adjust resolution and position for each monitor. This mode requires knowing the IDs of the connected monitors and their relative positioning. The player will perform simple validation to ensure provided display IDs are available before attempting to apply the settings.

Applying Rotation Settings to Players via Zero Touch

Rotation settings for displays can be applied to Chrome players using the Zero Touch Installation feature as part of the displaySettings object.

For a simple display configuration, you can set the displayRotation property, which will apply the specified rotation to all connected displays.

Example JSON snippet for simple rotation:

JSON

"displaySettings": { "displayConfigurationMode": "simple", "unifiedDesktopEnabled": true, "displayRotation": 0, // Options: 0, 90, 180, 270 "displays": [], "layout": [] }

For an advanced display configuration, you can specify rotation for individual displays within the displays array. Each display object will have its own rotation property.

Example JSON snippet for advanced display rotation:

JSON

"displaySettings": { "displayConfigurationMode": "advanced", "unifiedDesktopEnabled": true, "displays": [ { "id": "xxxx1", "rotation": 0, // Options: 0, 90, 180, 270 "bounds": { "left": 0, "top": 0, "width": 1920, "height": 1080 }, "isPrimary": true }, { "id": "xxxx2", "rotation": 0, // Options: 0, 90, 180, 270 "bounds": { "left": 1920, "top": 0, "width": 1920, "height": 1080 }, "isPrimary": false } ], "layout": [ { "id": "xxxx1", "parentId": "", "position": "left", "offset": 0 }, { "id": "xxxx2", "parentId": "xxxx1", "position": "right", "offset": 0 } ] }

The available values for displayRotation and individual display rotation are 0, 90, 180, and 270 degrees.

Accessing the API

The Network API endpoints for managing player settings are:

  • GET networks/{networkid}/players/{id}/settings: Retrieves settings for a player.

  • POST networks/{networkid}/players/{id}/settings: Configures settings for a player.

The Network API is secured and accessible only via HTTPS, requiring proper authentication and authorisation with specific claims and permissions.

Did this answer your question?