# BrightSign Digital Signage CMS Setup

> Use a BrightSign player with ScreenTinker: one autorun.zip from your own server, dual output, BrightWall sync, CEC panel power and real reboots.

Source: https://screentinker.com/guides/brightsign-digital-signage

## Digital signage on BrightSign players

A BrightSign is the most capable player on this list: real reboots, CEC panel power, dual outputs and frame-accurate video wall sync. Setup is one archive on the storage root and a power cycle.

### What runs on the player

The [web player](https://screentinker.com/player), unmodified, inside an `roHtmlWidget` — with a small BrightScript host around it that owns the widget, keeps the identity, and executes the handful of things a page cannot do for itself.

This is not a port. A Series 5 player ran the ordinary player through 4,723 items over 12.4 hours, averaging 9.4 seconds against a 10-second slot. So the question was never whether the page runs; it was the four jobs the host exists for: rebuilding the widget when a reload would not come back, recovering from a dead server, keeping identity in the registry where it survives a content update, and reaching BrightScript-only capabilities on the page’s behalf.

### One file, from your own server

Open the [downloads page](https://screentinker.com/download/) on your instance and download `autorun.zip`.

**Take it from your own server, not from a release page.** The archive has the server address stamped into its bytes when your instance builds it, so the copy you download is already pointed at you — nothing to edit, and no chance of imaging a batch of players against the wrong instance, which is a mistake that looks exactly like a pairing bug.

### Install

Put the single file on the root of the player’s storage — a microSD card, or internal flash over SFTP — and power-cycle. The player unpacks it in place, renames it so it never extracts twice, and reboots into the player.

Two rules the format imposes, both of which fail silently if broken:

- **Do not unzip it yourself and do not nest it in a folder.** The player extracts to the storage root; a wrapper directory puts the host script somewhere the player never looks, and the card appears to do nothing at all.

- **Do not put an `autorun.brs` beside the zip.** Its presence stops the archive being processed. The host script belongs inside the archive, which is where ours is.

Needs BrightSign OS 7.0.60 or newer for the in-place unpack.

**No card slot, or a dead one?** A player boots the host from internal flash just as happily — confirmed on a unit whose microSD interface is physically dead. Push the file to `/storage/flash` over SFTP once SSH is enabled on the player, and reboot.

### Pairing

The player shows a six-digit code. Enter it under **Add Display** in the dashboard.

Identity is kept in the player’s registry rather than in browser storage, so it survives reboots, content updates and a change of server origin. The hardware serial is the stable id, which means two players imaged from the same card never collide.

### Provisioning a batch

A `screentinker.json` on the card sets the server URL, the sync backend and the output mode, and it wins over the registry and the built-in default. That is how a batch gets imaged without touching each box:

```
{ "server_url": "https://signage.example.com", "sync_backend": "auto", "output_mode": "single" }
```

### Two displays from one player

`output_mode` is `single`, `dual` or `clone`. **dual** loads a second widget that the server hands its own playlist — two independent screens, one player. **clone** puts the same content on both outputs.

Confirmed multi-output: **XC2055** (dual HDMI) and **XC4055** (quad). **Do not trust a series-level spec blurb here.** The XT5 family description credits XT245, XT1145 and XT2145 with “dual HDMI outputs”, but an XT245 in hand is single-output — the phrase appears to cover HDMI in plus out. Check the individual model before enabling `dual`. An unsupported model keeps working as a normal single-screen player rather than failing to start.

### Video wall sync: ours or BrightSign’s

Both, chosen per group. Our protocol is clock-derived, leaderless, accurate to the second, and works across a mixed estate — BrightSign, Android, web and Tizen screens in one synchronised group. BrightSign’s own BrightWall sync is frame-accurate but BrightSign-only.

Set a group to `auto` and native sync is used when every member is a BrightSign, ours otherwise. Three conditions force a fallback, and each is *reported* rather than applied quietly: a non-BrightSign member, members on different subnets (it is multicast and does not cross networks), or the elected leader being offline. A group that half-syncs is worse than one that syncs to the second everywhere — and it would be invisible from the dashboard, because the BrightSigns would look perfect while the odd panel drifted alone.

### What the dashboard can do here that it cannot do to a browser

| Command | Browser player | BrightSign |
| --- | --- | --- |
| Screen off / on | Black overlay; the panel stays lit | **CEC** — the display actually sleeps |
| Reboot | Ignored | **A real reboot** |
| Set volume | — | Applied to current and future media |
| Refresh | Page reload | The host rebuilds the widget |

That last row is not a detail. A page-initiated reload does not reliably bring an `roHtmlWidget` back: on one deploy every connected player reloaded and returned, and the BrightSign was the only screen that never came back. So the page here never reloads itself — it asks the host, and the host tears the widget down and builds a new one.

On top of that the host retries a failed load with backoff, falls back to a local page that names the server and keeps probing it, and runs a watchdog: the page beats every 30 seconds and three missed beats rebuild the widget. That covers the failure a load error never reports — a page that loaded fine and then wedged.

### Which players

Validated here on **Series 5** — XT245 and HD1026, on BrightSign OS 9 and 10 — and listed as [certified hardware](https://screentinker.com/certified-hardware). Series 6 players run the same package the same way; we have not had one on the bench, so treat that as expected rather than tested, and tell us how it goes.

A player paired before this package existed is still recognised, by its BrightSign user agent. You do not have to re-pair a fleet to adopt it.

### Related guides

- [Download a player for any platform](https://screentinker.com/download/)

- [LG webOS panels](https://screentinker.com/guides/lg-webos-digital-signage.html)

- [Android TV and Fire TV](https://screentinker.com/guides/digital-signage-android-tv.html)

- [Certified hardware](https://screentinker.com/certified-hardware)
