# IRL Dashboard A single-screen control panel for IRL streaming that runs **on the router in your backpack** — with **SRTLA modem bonding**. Bond every SIM and Wi-Fi uplink into one resilient stream, control your encoder, watch your bitrate and signal, and build live GPS, weather, API, ticker, and custom overlays — all from one page you pull up on your phone mid-stream. No laptop, no cloud service, keeps working on cellular. Built for the new **GL.iNet Mudi 7 (GL-E5800)** — a quad-core ARM router with the horsepower to bond several 5G modems and run the whole dashboard at once. The dashboard runs on any OpenWRT / GL.iNet router; the bonding sender is a native binary built for the Mudi 7 (aarch64). ## Install IRL Dashboard is currently invite only. Every invited person receives a unique installation link that expires after one successful package download. The invite page provides the private command to run from SSH or the LuCI terminal. To request an invitation, email **invite@streamhelpers.com** with your use case, who referred you, and your level of expertise with streaming technology. This mailbox is not for technical support, and no technical support is currently offered. Requests without those details, including single-line emails, are deleted. Then open `http://YOUR-ROUTER-IP/streaming/` and finish setup in the browser — the first visit lands on the Settings screen. Every setting is optional; leave one blank and the matching tab hides itself. Allow roughly 25 MB free on `/overlay`. The installer: - installs PHP and downloads the dashboard into `/www/streaming`; - adds a `location /streaming/` block to the router's existing nginx server (with an automatic backup + rollback if nginx rejects the change or fails to restart); - on the Mudi 7 (aarch64), installs the SRTLA bonding sender (`srtla_send`), `srtla-bond.sh`, a watchdog cron and enlarged UDP socket buffers; - grants the web user passwordless sudo for a few specific binaries only (`gl_modem`, `ubus`, `dmesg`, `srtla-bond.sh`). Re-run it any time to update; it never overwrites your settings (those live in `/etc/irl-dashboard/settings.json`, outside the web root). ## Modem bonding (SRTLA) The Bonding tab turns every modem, tethered phone and Wi-Fi uplink into **one** stream. It's automatic — plug an uplink in and it joins the bond; lose service and it drops out. When one link stutters, the others carry it. ``` Director Mini (SRT) → router (srtla_send, bonds all uplinks) → internet → srtla_rec → Restreamer → YouTube / Twitch / Kick ``` The bonded stream is reassembled on a machine with a public address — the **receiver** — shipped as a Docker package you run on any always-on box: **https://streamhelpers.com/irl-dashboard/receiver/** Set the Bonding tab's *Receiver host* / *Receiver port* to that box, add the Director Mini as an SRT Caller to the router, and press **Start bonding**. The tab shows every uplink, live throughput, and a timestamped connection log. ## The tabs - **Bonding** — SRTLA modem bonding: auto-bonded uplinks, live throughput, buffer tuning, timestamped log - **Director Mini** — scenes, GFX, stream targets, screen brightness, start/stop timer, BRB & Security quick actions - **Restreamer** — embedded datarhei Restreamer UI + live bitrate readout. The preview is fetched by your browser straight from the Restreamer server, so a player that never starts raises a plain explanation: server down, router off the tailnet, or this device off the tailnet - **Network / Modem** — per-uplink monitor, band locking, rescan, modem reboot, connection logging (optionally uploaded to a collector of your own), USB-power warnings. Connection log, internal modem, WiFi options and repeater health all fold away and remember how you left them - **GPS** — live map and track, plus map / satellite / radar and speed overlays - **Weather & Clock** — styleable overlays (border, background, map layers) for the broadcast - **Theme parks** — off until you enable it. Live wait times, show times and dining from [ThemeParks.wiki](https://www.themeparks.wiki/): browse the destination directory, pick a park, choose what to list and which details each row carries, then show it as a ticker, a scroller, a static list or one at a time. The encoder URL never changes, so you can switch park mid-trip without touching the encoder. It also teaches the stopwatch what you are queueing for, from the GPS fix - **Overlays** — a true 16:9 visual designer with nested live-API feeds, per-field styling and filtering, scrolling tickers, complete design import/export, on-air dashboard switches, and an optional single encoder URL for every graphic - **DJI** — pair a DJI camera over Bluetooth and send it to an RTMP video destination. The Bluetooth stack and the control tool are both installed for you; if you plug the adapter in later, the tab offers to install the stack on the spot. The Go Live screen carries a **Connect my camera** button that runs the whole chain — adapter, scan, start — and names the stage that failed - **Failover** — GL.iNet multi-WAN failover status and controls - **Chat** — your YouTube live chat, read and sent from the router. A background collector keeps it complete while the page is closed and catches up by itself after a connection drop, so no messages are lost. Renames the live stream too. Premium Chat can instead connect supported platform accounts through StreamHelpers with subscription-managed, hosted credentials; it is rendered natively in the dashboard rather than embedded from another site. The Director Mini picture can sit behind the chat and go full screen, with a live/bitrate/reachable strip, so one phone shows the shot, the chat and the connection at once - **Links** — your platform dashboards, one tap each ## Security - Downloads are invite only. Invitation tokens are kept in the private invite store so administrators can retrieve commands, while SHA-256 hashes are used for lookup. Direct artifact access is blocked, and the invitation is atomically consumed after one completed package response. - **Set a login** under *Access* in Settings. Without one, anyone who can reach the dashboard has full control — including rebooting your modem and restarting your bond. The password is stored hashed; the settings form is CSRF-protected. - Keep it on your LAN / VPN. **Do not port-forward it.** - `settings.json` holds API keys in plain text on the router, kept outside the web root at mode `600`. - Overlay pages are intentionally unauthenticated so the encoder can load them as browser sources. ## Invite administration On the web server, copy `invite-config.example.php` to `invite-config.php`, set its plain-text administrator password, and keep its data directory, package, and installer paths outside the web root. Visit `/irl-dashboard/invites.php` to add an invited person, record their use case, referrer, and experience, and generate their one-time install command and invitation URL. The same page can retrieve a command, revoke, reactivate, archive, or permanently delete an invitation. Reactivation always rotates the token. Successful package downloads are counted per invitation and in a lifetime total that is not reduced when records are deleted. ## Files - `install.sh` — supplied through a private invitation - [`install.txt`](install.txt) — plain-text quick guide - `irl-dashboard.tar.gz` — protected one-time dashboard package - [`bin/`](bin/) — the aarch64 binaries: bonding (`srtla_send`, `daemonize`, `srtla-bond.sh`) and `djictl` for the DJI camera - [`receiver/`](receiver/) — the SRTLA receiver Docker package - [`docs/`](docs/) — operations, overlay, architecture, deployment, recovery, and release reference --- Provided free and **as-is**, with no warranty and no support. See the [disclaimer](https://streamhelpers.com/legal.html). `srtla_send` / `srtla_rec` are built from the upstream [BELABOX/srtla](https://github.com/BELABOX/srtla) project, and `djictl` from [xaionaro-go/djictl](https://github.com/xaionaro-go/djictl) (CC0). Theme park data is supplied by [ThemeParks.wiki](https://www.themeparks.wiki/about), a free community-run API — please keep the on-screen credit, or mention them on stream. Another fine product of [Blue Soup Enterprises](https://bluesoup.biz/).