Deployment profile
TopBox: HAT taps POG422 and never drives it. Local HDMI is DyzineFrame TBX 1920×1080 with machine-specific hooks. HTTP :31234 also serves progressives (same feed a Win11 OHD can use). This display is not an OHD — OHD is Win11 3840×1080 overhead.
Separate from listen vs WiFi profile. Jumpers J3/J4 must match. UART HS: HAT XR owns OIS/M-S. Pi HS: Pi drives OIS_OUT / M-S_OUT (BCM10/11) idle low, never high-Z. Listen on Pi HS uses GPIO HS sense (BCM9 M-S_IN / BCM8 OIS_IN) plus XR UART RX — not XR GPIO1. Workshop, not field-published.
Identity
From P3 GAMESTATS
First cabinet at a new site: type the Location name and IIS Path. Apply writes this Pi’s Enrollment.csv + overlay. Dropbox SGVI catalog is still workshop-edited so the rest of the fleet sees the row.
Onsite POG-CC + Pi: type the POG Atlas asset (not GAMESTATS machine number), pick Location (or new site), set Heltec theme/volume, Apply. The Pi USB-pushes /asset /theme /volume to the Heltec (DF 4.0.1.4 + firmware 2801). Heltec Setup is Wi-Fi only. Restart DyzineFrame so HDMI/ads pick up a new asset. Dashed fields are read-only from P3. Grab GAMESTATS is idle-window only. TID is the 4-hex POG id; machine number is GAMESTATS config column 1. Position Number is the left-to-right seat. Linux user stays topbox. Apply upserts this cabinet’s Enrollment row. Unset asset skips IIS; asset with no location goes to /orphan/{asset}/.
Machine gameplay uses WireGuard+gretap (VPN). OIS uses the same 6 GHz Wi‑Fi with HMAC — not inside the VPN. CHANNEL is always both.
Apply
Save is draft only. Apply writes live /etc/ethergold env files. TopBox profiles also stamp DyzineFrame asset/bank (display_mode=TBX). OTA below does not use these buttons. No reboot. Listen stays running.
Software OTA
Live / Staging / Rollback stamps. Independent of Apply. Check for Updates rclone-pulls SGVI into Staging only (no restart). Promote applies Staging now (skip 03:00). Rollback restores the last snapshot. Update Now = rclone then promote on this Pi only. Restart DyzineFrame is HDMI Supervisor Restart (writes supervisor.cmd; does not reboot the Pi). Recover stack restarts listen/collector first (so progressives.csv can rewrite), waits briefly, then restarts DyzineFrame. Never a Pi reboot. Field publish is Chris + Publish-Sgvi; Pis never pull To Deploy.
DyzineFrame versions load after login.
EtherGold versions load after login.