# 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 drop weather / GPS / clock overlays onto the broadcast — 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 From the router's terminal (SSH or the LuCI terminal): ```sh wget -qO- https://streamhelpers.com/irl-dashboard/install.sh | sh ``` 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. 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 - **Network / Modem** — per-uplink monitor, band locking, rescan, modem reboot, connection logging (optionally uploaded to a collector of your own), USB-power warnings - **GPS** — live map and track, plus map / satellite / radar and speed overlays - **Weather & Clock** — styleable overlays (border, background, map layers) for the broadcast - **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 - **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. - **Links** — your platform dashboards, one tap each ## Security - **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. ## Files - [`install.sh`](install.sh) — the installer - [`install.txt`](install.txt) — plain-text quick guide - [`irl-dashboard.tar.gz`](irl-dashboard.tar.gz) — the dashboard web app - [`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). Another fine product of [Blue Soup Enterprises](https://bluesoup.biz/).