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/v1surface used here. Older OS 7.x has a subset —get_infoandrebootstill work butsnapshotand parts of the registry API won't be present.
Setup
- Confirm LDWS is reachable by loading
http://<player-ip>/in a browser. The DWS home page appears after a basic/digest auth prompt. - 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.
- Set device attributes:
ip— player IP or hostname.password— DWS admin password (stored encrypted).username— leave at the defaultadminunless a BSN.Cloud policy renamed the account.protocol/port— leave defaults (http/80) unless HTTPS has been explicitly enabled on the DWS.
- Save and reload. On boot the driver GETs
/api/v1/infoto verify authentication and caches the model / serial / firmware for logging. - Poke around with
get_info/get_health/get_timeto confirm connectivity. - Optional: schedule a
rebootcommand 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
| Attribute | Required | Description |
|---|---|---|
ip | yes | LAN IP / hostname of the BrightSign player. |
password | yes | DWS admin password. Stored encrypted. |
username | no | DWS username. Defaults to admin. |
port | no | HTTP port for LDWS. Defaults to 80. |
protocol | no | http (default) or https if TLS is enabled on the DWS. |
status_interval | no | How often to poll /api/v1/health to keep the connected flag current. Defaults to 60000 ms. |
Commands
| Command | Args | Description |
|---|---|---|
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_registry | section, key | Read a registry value. With section+key returns the value; with section only returns the whole section; with neither returns the whole registry. |
set_registry | section, key, value | Write a registry value. The player normally needs a reboot for changes to take effect. |
delete_registry | section, key | Remove a registry entry. |
snapshot | — | Capture 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+. |
reboot | — | POST /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
customsection 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_udpalongside this driver for those. - No firmware upload path yet.
/api/v1/control/download-firmwareexists 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 aget_logscommand 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. Loadhttp://<ip>/in a browser and sign in with the same credentials to confirm. get_inforeturnsinvalid digest challenge. The player is behind a reverse proxy that strippedWWW-Authenticate. Talk to the player directly, or configure the proxy to pass Digest challenges through untouched.snapshotreturnssnapshot not supported on this firmware. OS build predates the/api/v1/snapshotendpoint. 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_registrysucceeded but nothing changed on the player. Most registry keys apply on next boot. Callrebootafter 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
passwordattribute 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=httpsif you have explicitly enabled it in DWS settings.
Related documentation
- 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
rebootcommand to a scheduled trigger. - Mersive Solstice — the closest analog driver for a single-unit, HTTPS-with-auth commercial-AV device.