Skip to main content

BrightSign Digital Signage Player

BrightSign is the dominant fixed-function digital-signage player in commercial AV — you find its small solid-state boxes driving retail videowalls, quick-service menu boards, hotel lobby screens, museum kiosks, and corporate signage. This driver connects to a BrightSign player on the LAN using its built-in Local Diagnostic Web Server (LDWS) REST API and covers the management surface: device info, health, time, on-screen snapshots, the player registry, and reboot / firmware operations.

Presentation-level playback control (change scene, jump to a specific state, play a specific asset) is normally driven by the presentation itself via BrightScript's UDP command interface, not through LDWS. That surface is per-project and script-specific — pair a generic_udp device alongside this driver when you need it.

Prerequisites

  • Local Diagnostic Web Server (LDWS / DWS) enabled on the player. On Series 5 players the DWS is off by default: enable it from the DWS UI (Applications → Settings → Enable local web server) or push a BSN.Cloud policy that turns it on.
  • The DWS admin password. On a factory-fresh player the password is the printed serial number until it's changed via the DWS UI or a BSN.Cloud policy. If a policy has rotated it, obtain the current value before adding the device.
  • TCP 80 reachable from the GEM host to the player (or 443 if HTTPS has been enabled on the DWS — off by default).
  • BrightSign OS 8.x or newer for the full /api/v1 surface used here. Older OS 7.x has a subset — get_info and reboot still work but snapshot and parts of the registry API won't be present.

Setup

  1. Confirm LDWS is reachable by loading http://<player-ip>/ in a browser. The DWS home page appears after a basic/digest auth prompt.
  2. In GEM admin, add a device with the BrightSign Digital Signage Player driver under an AV or Display subsystem. Each GEM device is one BrightSign player.
  3. Set device attributes:
    • ip — player IP or hostname.
    • password — DWS admin password (stored encrypted).
    • username — leave at the default admin unless a BSN.Cloud policy renamed the account.
    • protocol / port — leave defaults (http / 80) unless HTTPS has been explicitly enabled on the DWS.
  4. Save and reload. On boot the driver GETs /api/v1/info to verify authentication and caches the model / serial / firmware for logging.
  5. Poke around with get_info / get_health / get_time to confirm connectivity.
  6. Optional: schedule a reboot command in a maintenance-window macro; long-running signage players benefit from a nightly reboot to keep memory clean.

BrightSign players are single-output devices in this driver — there are no zones. Do not create a zone for the player; use it directly for commands.

Attribute reference

Device

AttributeRequiredDescription
ipyesLAN IP / hostname of the BrightSign player.
passwordyesDWS admin password. Stored encrypted.
usernamenoDWS username. Defaults to admin.
portnoHTTP port for LDWS. Defaults to 80.
protocolnohttp (default) or https if TLS is enabled on the DWS.
status_intervalnoHow often to poll /api/v1/health to keep the connected flag current. Defaults to 60000 ms.

Commands

CommandArgsDescription
get_info/api/v1/info — model, serial, firmware, uptime, network info.
get_health/api/v1/health — running state and last error, if any.
get_time/api/v1/time — the player's wall-clock time.
get_storage/api/v1/storage — attached storage devices and free space.
get_registrysection, keyRead a registry value. With section+key returns the value; with section only returns the whole section; with neither returns the whole registry.
set_registrysection, key, valueWrite a registry value. The player normally needs a reboot for changes to take effect.
delete_registrysection, keyRemove a registry entry.
snapshotCapture the current on-screen frame and save it to static/snapshots/<device-id>-brightsign.jpg. Returns the served URL. Series 4 / 5 on OS 8.x+.
rebootPOST /api/v1/control/reboot — reboots the player.

Health polling

Every status_interval (default 60 s) the driver hits /api/v1/health to keep the device's connected flag current. The endpoint is cheap, and BrightSign players are stationary displays where a per-minute pulse is enough — no need to hammer the DWS. A non-active health response is logged but does not flip the device offline, because "active" varies across OS builds; only an actual transport failure (401 / connection refused / timeout) flips connected to false.

The registry, briefly

BrightSign's registry is a live key/value store the player exposes to BrightScript at runtime. Every provisioning setting the player understands — network overrides, time zone, DWS credentials, BSN.Cloud enrollment, custom project keys — lives under a two-level section / key scheme. The full key catalog is in BrightSign's Registry Reference document; a few common patterns:

  • set_registry section=networking key=hostname value=lobby-01 — rename the player.
  • set_registry section=timezone key=code value=America/New_York — force the time zone.
  • Custom presentation config — many BrightAuthor:connected projects read a custom section for feature flags. The presentation determines what keys it reads.

get_registry with no args dumps everything, which is a good way to audit what a player is currently configured with.

Snapshots

snapshot GETs /api/v1/snapshot?width=1280&height=720 on the player and writes the returned JPEG to static/snapshots/<device-id>-brightsign.jpg. Use the returned URL in a UI image widget or notification to see what the player is actually showing right now (useful for verifying content-freshness across a fleet at a glance).

Snapshot support depends on the player and OS build: Series 4 and Series 5 on OS 8.x+ have the endpoint; older HD / LS units don't. When the endpoint isn't present the driver surfaces snapshot not supported on this firmware rather than guessing.

Limitations

  • No presentation-level playback control in this driver. Scene changes, state jumps, and asset selection are per-project UDP commands defined by the BrightScript presentation itself; use generic_udp alongside this driver for those.
  • No firmware upload path yet. /api/v1/control/download-firmware exists but is not exposed as a command in this build; firmware updates are still done through BSN.Cloud or a USB stick.
  • No BSN.Cloud integration. This driver only talks to the local DWS on the player. The BSN.Cloud REST API is a separate surface and could be a future driver (brightsign_bsn_cloud).
  • No log tailing. LDWS exposes log downloads under /api/v1/logs/…; wiring those into a get_logs command is a straightforward future addition but not in this build.
  • UDP power control on some BrightSign models (Wake-on-LAN / soft off) is not exposed here — LDWS itself has no power-off endpoint; there is nothing to plug a driver command into.

Troubleshooting

  • Every command returns Request failed with status code 401. DWS password is wrong or was rotated by a BSN.Cloud policy. Load http://<ip>/ in a browser and sign in with the same credentials to confirm.
  • get_info returns invalid digest challenge. The player is behind a reverse proxy that stripped WWW-Authenticate. Talk to the player directly, or configure the proxy to pass Digest challenges through untouched.
  • snapshot returns snapshot not supported on this firmware. OS build predates the /api/v1/snapshot endpoint. Older HD / LS series units don't have it — upgrade OS to 8.x on Series 4/5, or accept that snapshot isn't available on legacy models.
  • set_registry succeeded but nothing changed on the player. Most registry keys apply on next boot. Call reboot after a batch of registry writes.
  • Player went offline after a BSN.Cloud password rotation. BSN.Cloud policies can silently change DWS credentials. Update the device's password attribute to match the new value and reload the device.
  • Device shows offline immediately after adding. LDWS is disabled on the player. Enable it from the DWS UI (Applications → Settings), then reload the device in GEM.
  • HTTPS on the player just returns errors. HTTPS is off on the DWS by default; only set protocol=https if you have explicitly enabled it in DWS settings.
  • Devices — adding the BrightSign player as a device.
  • Subsystems — the AV / Display subsystem the player lives under.
  • Commands — running snapshot, reboot, and the registry commands from the admin UI, macros, or automations.
  • Macros — a good place to wire the nightly reboot command to a scheduled trigger.
  • Mersive Solstice — the closest analog driver for a single-unit, HTTPS-with-auth commercial-AV device.