STAGEVIS

Docs — troubleshooting

Troubleshooting

When something won't connect at a venue, it's almost always the network. Here are the fixes, in the order you hit them while setting up.

Phone can't reach the Mac after scanning the QR

Nothing connects after the Local Network prompt

macOS 15 and later asks whether STAGEVIS may use the local network. If it was denied, phones cannot connect and nothing in the app can undo that. Open System Settings → Privacy & Security → Local Network, switch STAGEVIS on, then quit and reopen the app. Camera and Microphone are in the same place if you denied those.

The phone browser says the connection is not private

Expected: it appears the first time each phone opens this Mac's camera page, and again after the Mac's network address changes (another venue or router) or the phone's browser data is cleared. Browsers only allow camera access on secure pages, and the Mac serves the camera page with its own certificate. Safari: Show Details → visit this website → Visit Website. Chrome: Advanced → Proceed. If the page never loads, the phone is not on the Mac's network or port 8443 is blocked (see the ports table below).

The QR points at the wrong network (Ethernet, Wi-Fi, VPN)

The pairing QR carries one address for the Mac: the interface that carries the Mac's default route (otherwise the first of en0, en1, en2…), skipping VPN addresses (Tailscale and similar) and 169.254.x.x. A Mac on Ethernet and Wi-Fi at once, or with a VPN up, can put an address on the QR that the phones cannot reach. Open Settings → Network interface and pick the interface the phones are on (the default is Automatic); the QR and the web certificate follow immediately. Or turn off the other interface (or the VPN) while you pair, then reopen the pairing card. If the Mac is wired, put the phones on a Wi-Fi that bridges to that same wired network.

The network changed (new Wi-Fi, wake from sleep, IP changed)

When the Mac's network address or Bonjour name changes, STAGEVIS refreshes the pairing codes and rebuilds the web camera certificate for the new address on its own. A small Rescan chip appears next to the code: scan the QR again on each phone, because the old code points at the old address. With no usable Wi-Fi or Ethernet connection the card shows No network instead of a code. If port 8443 is taken by another program, the dot turns red and STAGEVIS retries by itself; Copy Diagnostics shows the reason.

Phone says the Mac certificate changed

The Android camera shows “Mac certificate changed - re-scan the QR” and stops retrying. The phone pins the Mac's TLS public key from the QR, and the Mac now presents a different one. This happens only if STAGEVIS's certificate key was deleted or corrupted (for example Application Support/StageVis/WebCamera/ was wiped), or the phone was paired with an older QR that pinned the whole certificate. An ordinary IP or Wi-Fi change keeps the key, so phones paired with a current QR reconnect on their own. Fix: tap Re-pair on the phone and scan the QR in STAGEVIS again.

Android camera app

These notes are for phones running the STAGEVIS Camera app (the direct APK download, not the browser page). The app is not on Google Play.

Too many cameras for the Wi-Fi

A browser phone on the default Balanced quality sends up to about 2.5 Mbps of video, so four phones need roughly 10 Mbps of upload from the Wi-Fi, in a room where the audience shares it. The Android app and a phone set to Native quality have no such ceiling. If rows stutter or drop, put phones on Balanced, use USB or the Mac's own camera for fixed shots (wired, no Wi-Fi), or run the show on its own router. On the free tier a third live camera is refused outright (“Camera limit — enter a license to go beyond 2”).

The phone page says “This QR code has changed” or “The operator removed this camera”

QR scans but pairing errors or expires

The pairing QR (Android and Web) refreshes itself every few minutes. If the phone says the code is expired or invalid, scan again: the pairing card always shows the current one. If pairing fails on a Wi-Fi blip, scan the same code again.

Phone shows connected but the camera row says NO FRAMES

The phone joined but isn't sending video — almost always camera permission denied on the phone, or the camera app sitting in the background. Check the phone's camera permission, bring the app to the front, and keep the screen on while streaming.

Everything is black in the preview

Local LiveKit server keeps failing

STAGEVIS restarts its built-in media server by itself, waiting a little longer each time. If it keeps failing, the app stops retrying and shows a Retry chip in the top bar of the main window and in Settings → LOCAL SERVER — usually the cause is another program occupying the same network port. Quit the other program (or reboot the Mac), then click Retry. The message reads “Port 7880 is used by another program”: run lsof -nP -iTCP:7880 -sTCP:LISTEN in Terminal to see which one. STAGEVIS only adopts a listener that identifies itself as livekit-server and accepts this install's key.

An orange dot appears in the preview's top bar

The orange dot is the persistence-health indicator: one of STAGEVIS's saved files (settings, paired cameras, presets) could not be read or written, so changes may not survive a relaunch. Hover the dot for the first problem; Settings → DIAGNOSTICS lists every persistence issue with its file name. A corrupt file is set aside and the app starts from defaults; a file written by a newer version is left untouched. Free disk space or fix folder permissions, then relaunch; if the dot stays, export a Support Bundle (see below).

Contact support

In the app: Help → Contact Support… opens an email to hello@stagevis.app with the app version and build in the subject. Then choose Help → Export Support Bundle…: it writes a zip (diagnostics report, the last 2000 lines of the server log, STAGEVIS crash logs, macOS crash reports of the last 30 days in macos-reports/, the last saved diagnostics snapshots in snapshots/ and the app event timeline in app-events-tail.log) and reveals it in Finder. Attach the zip to the email; nothing is sent automatically. After a crash or stall STAGEVIS also offers Send Report… (never during a live show); it builds the same bundle and opens an email, or copies the address when no mail app is set up.

Redacted automatically: hostnames, the names of web-guest cameras, your home folder path, public IP addresses, secrets, tokens and the per-Mac identifiers in crash reports. Not redacted: names of your own USB, RTSP and Android cameras, local network addresses (192.168.x.x and similar), app and macOS versions, and timestamps. Please do not attach the raw server log; the bundle already contains a redacted copy. If the export fails, Settings (DIAGNOSTICS) shows the reason; Help → Copy Diagnostics is the fallback.

Updates never interrupt a live show; install them afterwards from the Help menu or Settings. STAGEVIS must run from Applications, or updates can’t install. Versions and build dates: https://stagevis.app/releases/.

The wall stutters or the Mac gets hot

The output on the wall judders, lags the cameras, or the Mac's fans spin up hard (a MacBook Air has no fan and slows itself down when it gets hot).

The stage output is composed at the camera's resolution (720p or 1080p) and upscaled to the display, so a 4K wall shows an upscaled picture. How many cameras a given Mac carries has not been measured on every model yet: run the look you plan to use for five minutes at the venue before doors.

Wi-Fi says “no internet” on the phone

Phones often drop a Wi-Fi network that has no internet (a travel router with nothing plugged into it) and fall back to mobile data, which breaks the camera link. Stay connected when the phone asks, and turn mobile data off for the show. If the phone asks whether to stay on this network because it has no internet, say yes (on Android: Stay connected). The camera page and the video only need the Mac on the same Wi-Fi, not the internet.

Ports (for firewall rules / managed networks)

On a managed network, these ports need to be open between the Mac and the phones:

PortProtocolUsed for
7880TCPCamera signalling (internal, loopback only; phones use 8443)
7881TCPVideo fallback path
7882UDPVideo (primary path)
8443TCPEncrypted pairing, browser camera page and signalling (Android app, web guests, iPhone)

If UDP 7882 is blocked, video falls back to TCP with higher latency; if both are blocked, there is no video. Browser phones need 8443 plus 7881/7882. Port 7880 is bound to the Mac's loopback address only and is never reachable from the network.

UDP blocked (some venue and hotel networks): video then travels over TCP 7881. It still works, but expect more delay and more stutter with several cameras, and nothing at all if 7881 is blocked too. Ask the network tech to open UDP 7882 and TCP 7881 and 8443 between the Mac and the phones, or run the show on your own router, and test it at the venue before doors.

mDNS / hostname discovery fails

The pairing payload prefers the Mac's .local hostname; some networks drop mDNS between clients, so pairing works only sometimes. There is nothing to configure: the QR also carries the LAN address as a fallback. If it still fails, the network is isolating clients (see the guest network entry at the top).

STAGEVIS · hello@stagevis.app · stagevis.app