Admin login
Recording — one file per member, timecoded, Premiere XML on stop
min — the parts are joined back into one file per take and checked when the recording stops
loading…
Ultra-low latency — apps on the server's UDP hub (raw 5 ms audio): the hub's buffer for each voice, its arrival jitter and loss, and whether the normal members hear him through the room right now (while he talks)
Audio sync — a device whose receive buffer grew hears everyone late; sync starts its receive side fresh
Each card shows the device's receive buffer (⟲ … ms) at the top right — click the number to sync that device. Auto sync is decided here on the server, by these numbers only — devices never sync by themselves.
BondCam recording — the streams recorded here in their full quality (no re-encoding): parts while live, one MP4 per stream at the stop
Playback transcoding — lower qualities for Playback, made only while someone watches and deleted when they stop
No BondCam connected — phones show here when they CONNECT or go live (bonded video, device control, file transfers).
TALLY—
BondCam — one row per phone: connected (CONNECT), its stream — bonded over all its networks (one MPEG-TS per channel) or LOCAL straight from the phone · CONTROL = everything the phone can do, from here
Off = as before. On: channels leave together (≈ 1 frame); a phone that cannot make the delay glitches alone — the others are never held back. Per channel: trim (clap test), or leave it out.
UDP forward — the server listens on a UDP port and passes every packet straight on to a PC (BondCam LOCAL "UDP" → this server → the vMix PC) · no buffering, < 1 ms, its own thread
| Name | Listen UDP | → Destination (mixer PC IP) | Port | On | Now |
|---|
How to use it · lowest latency
Set up: here e.g. CAM1, listen 6000 → 192.168.51.20 port 6000, Save. On the phone: BondCam → LOCAL → destination UDP →
Firewall: Windows — the SisServer.exe rule covers every port; Ubuntu —
Lowest latency: the forward itself adds well under 1 ms — what you see is the phone's encoder and vMix's buffer. ① Server and vMix PC on wired Ethernet, same switch; the phone on 5 GHz Wi-Fi close to the access point (or USB-Ethernet). ② Unicast only (multicast floods Wi-Fi and is refused here). ③ In vMix keep the input's buffer at its minimum and raise it only if the picture breaks. ④ On the phone: LOCAL low-latency mode, short keyframe interval (1 s), a bitrate the Wi-Fi carries easily (8–12 Mb/s for 1080p). ⑤ No VPN / NAT between server and vMix. ⑥ Over a lossy link plain UDP has no repair — there use bonded video or SRT instead.
this server's IP : 6000.
In vMix on 192.168.51.20: Add Input → Stream / SRT → type UDP, port 6000 (some versions: udp://@:6000). One sender per forward — a second phone on the same port is ignored until the first one has been silent 2 s; use one port per camera.Firewall: Windows — the SisServer.exe rule covers every port; Ubuntu —
sudo ufw allow 6000/udp. On the vMix PC allow inbound UDP 6000.Lowest latency: the forward itself adds well under 1 ms — what you see is the phone's encoder and vMix's buffer. ① Server and vMix PC on wired Ethernet, same switch; the phone on 5 GHz Wi-Fi close to the access point (or USB-Ethernet). ② Unicast only (multicast floods Wi-Fi and is refused here). ③ In vMix keep the input's buffer at its minimum and raise it only if the picture breaks. ④ On the phone: LOCAL low-latency mode, short keyframe interval (1 s), a bitrate the Wi-Fi carries easily (8–12 Mb/s for 1080p). ⑤ No VPN / NAT between server and vMix. ⑥ Over a lossy link plain UDP has no repair — there use bonded video or SRT instead.
File transfers — BondCam "Transfer files": phone → server over all networks
Monitors — the phones running BroadMon now
| Operator | Mixer | Input | Tally | Call / channel | Watching | Licence | Phone | |
|---|---|---|---|---|---|---|---|---|
| — | ||||||||
Identify: the phone flashes its screen and torch and vibrates for 6 s. Tally comes from Settings → Tally.
SRT relay — one SRT call to the mixer, many phones: vMix takes only one caller per SRT output, this server is that caller and passes every packet straight on (~1 ms)
Phones call UDP port
Latency to the phones (ms)
| Name (stream ID) | Source — the server calls it, or it calls the server | On | Now |
|---|
The server calls (caller): vMix → Settings → Outputs → SRT on an output, type Listener, a port (e.g. 9000), latency 60 — then here
srt://VMIX-PC:9000 (add ?passphrase=… if vMix has one).
The encoder calls the server (listener — ATEM, Kiloview, OBS, BondCam, anything that can only call): here srt://:9010?mode=listener (one port per relay, not the phones' port; optional &passphrase=…, &streamid=…), on the encoder srt://server address:9010. In the profile below a source PGM | relay:PGM becomes srt://server address:port?streamid=PGM in the QR. Nothing else may call that vMix output — the relay takes its one caller.Monitor profile & QR — one scan sets up a camera operator's monitor: intercom login, call + channel, return feed, tally
Return feed sources
Audio
SRT latency (ms)
Torch on PGM
Tally
Operator (login)
Call
Channel
Input number
Server address
Port
No Bond Gateway connected — a StreamSet Bond Gateway PC shows here once it is started (its uplinks, LAN devices, connections and UDP flows, as this server sees them).
Port forwards: a public port belongs to the gateway that set it up first (also while it is offline); the others are told to pick another.
🗣 Interpretation offActive calls 0 / total online 0
Listeners need no login: they open a link or scan its QR and tap their language. The links run on their own port (plain HTTP — no certificate warning) where nothing else of the server is reachable. A link is open only while it is On; the port is closed when no link is on.
Speakers' page — interpreters log in with their own account (Users → role Interpretation → Channels…: "Hears" = top row, "Talks to" = bottom row) and see only what you chose for them
—Listener links — one call each: tick its channels, set the limits, print the QR
loading…
Max = listeners at most on that link (1 … 5000). Per address = at most from one internet address (1 … 1000): a venue Wi-Fi behind one router, and many mobile phones (carrier NAT), share one address — keep it high for the internet. New link = a new address at once: the old link and its printed QR stop working.
PGM video — the picture of an SRT relay stream (Status → BroadMon → SRT relay) on the speakers' and the listeners' pages: the relay's own H.264 copied into the browser's video player, about 0.3–1 s
—
Original = the relay's stream as it is (full quality, no re-encoding, its full bitrate to every viewer). 720p / 480p = one smaller copy (the GPU when one works, else the CPU) — less internet for many phones. Speakers and listeners get the same stream. PGM sound is off unless ticked (the speakers hear the floor on the intercom). An iPhone needs iOS 17.1 or later.
Calls — who is in the interpretation now: speakers (on the speakers' page in that call, on air in a channel) and listeners (the links and the logged-in listeners)
—
Guide — pictures that explain the page (JPEG), shown when a listener / a speaker opens it; each can tick "Show this guide next time" off
Listeners' guide — the public links and the logged-in listeners · tap the pictures in the order to show
Speakers' guide — the speakers' page
Upload the pictures with + Pictures (up to 60, 8 MB each). ✕ on a picture deletes it from both.
Server
CPU/RAM
Audio traffic
♪ Music player stopped
—
0:00
0:00
Play into — tap the channels (any number, any call); the members of those channels hear it like anyone in their channel
Playlist
Create user
User: hears / talks in the channels a call admin assigns (never changes them; "sees joined channels" shows the extra ones too). Call admin: sees every channel of their calls, can move / mute / kick. Panel: logs into this web panel only (never the apps) — you tick which tabs it sees (read-only) and what it may change. Video: BondCam only — bonded video, CONNECT, file transfer, playback; no intercom, no calls, no panel. Bonding: Bond Gateway only — connects a gateway (bonded internet) and logs into a gateway's remote panel; nothing else. Interpretation: listens in a browser at /listen to the channels you choose (one tap per channel) — nothing else. Admin: everything, including this panel.
Create many users — prefix + number, one password for all
Connect QR for one user, or a zip of PNGs for several
| Name | Display | Role | Sees joined channels · panel access | Announce · ULL | Status | Now in |
|---|
Licence — for this server PC; limits apply only to what starts next (nobody connected is cut off)
loading…
LiveKit (audio engine)
Drops everyone for ~2 s; phones reconnect by themselves.
Connection
Trusted HTTPS for browsers — the panel, the speakers' and the listeners' pages from the internet with no certificate warning: https://your-domain/ (the apps keep port 8443 and its own certificate) off
On
Domain
its DNS record must point to this server's public IP
Certificate
E-mail (optional)
Ports
HTTPS HTTP forward both on the router (TCP) to this PC; 80 is Let's Encrypt's check, then it sends visitors on to https://
Certificate (PEM, the full chain) and its private key (PEM, without a password):
Other servers — so a device can be sent to one of them from its card in Status
| Name | Address | Port | Username | Password |
|---|
Leave username and password empty and the device keeps the login it is using now. They are stored in this server's config file in plain text, like the rest.
Needs a username and password on the entry. Off: the device gets the server only and follows its own rule — same channel name if it exists there, else where it was last time, else the first by name.
Windows firewall
Settings (audio-engine settings apply immediately; the HTTPS port needs a server restart)
Server name
Public host / IP
Public IP (override — normally empty: the Public host's DNS address is used)
HTTPS port
Production overlay HTTP port (vMix / OBS browser inputs; 0 = off) — only the overlay pages, applied at once
Map tiles — CARTO API key (the overlay / Playback map; CARTO requires a key since 2026 — free at carto.com/basemaps, the tiles say "API KEY REQUIRED" without one)
Map tiles — other provider (optional: a full tile URL with {z} {x} {y}, {s} for a,b,c,d, {key} for the key above; empty = CARTO dark)
Audio UDP port
Audio TCP fallback port
TURN relay UDP port (0 = off)
Link bonding UDP port (0 = off) — the apps take it from the server, nothing to set on them
Without a Public host: discover public IP via STUN
Engine log level
Recording (multitrack)
Every member is recorded to his own file — one folder per member, a new file on every (re)connect.
Files carry a broadcast-wave timecode and gaps are filled with silence, so the tracks stay in sync; on stop the
server writes a Final Cut 7 XML you can import straight into Premiere Pro, with as many audio
tracks as there were people recording at once.
Folder (on the server)
Format
Premiere XML on stop
Timeline frame rate
Split long recordings
min, joined into one file per take and checked on stop
BondCam recordings folder
The BondCam streams recorded on this server (Status → Video → BondCam recording). Empty = the default folder. If the chosen folder cannot be written (a network share or disk gone), recording continues in the default folder by itself.
Sizes: WAV ≈ 345 MB per hour and member, MP3 ≈ 56 MB. Start / stop recording on the Status tab.
Messages
Chats of the apps: every user's SERVER thread with the admins and the channel chats of every call — the last 500 messages per chat are kept on this server (data/chat.json).
Connect QR — for the phone app
The app scans this (Settings → Connect → Scan QR) and fills in server, port and login. One user: the QR shows in the pop-up; several: their PNGs download as one zip.
Tally — vMix · OBS · ATEM: the BondCam on air gets a red frame, the one on preview a green one · several mixers: one tab each
The tick on a tab switches that mixer on / off — a mixer that is off is not asked anything (no connection). Each mixer has its own inputs from 1: a BondCam channel follows the mixer that maps it below; a BroadMon phone follows the mixer picked for it in Status → BroadMon (Mixer 1 when none).
Name
Mixer
Address
Port
OBS websocket password
MEDIA TIME — the clip playing on air and its time left (BroadMon). Empty = from the tally mixer.
From
Address
Port
OBS websocket password
On tally input
RECORDING — the REC counter. Empty = from the tally mixer.
From
Address
Port
OBS websocket password
Backup — export / import
"Everything" = every setting (all tabs: audio, video, BondCam, Internet bonding, BroadMon, SRT relay, tally, TLS, other servers) + users and panel accounts (with passwords) + calls/channels + certificate + production overlay layouts, overlay pictures and the gateways' port claims — a complete copy for a fresh server. Not in it: recordings, logs, update packages and the licence (it belongs to its PC). Keep it private.
Import replaces what is ticked with the file's contents (the current ones are overwritten); the server then starts again by itself so that every setting applies (about 10 s).
Maintenance
Clear log empties the server log files. Reset live state forgets who is online / their status lines and rebuilds it from the audio engine — harmless, nobody is disconnected.
My password
Android app
| Device | Runs | Update state |
|---|
The phone downloads the APK over its own connection, checks it, and opens Android's installer — the user taps Install once (Android does not let apps install silently). The first time, Android asks to allow installs from this app. Build every APK with the same signing key, or Android refuses it as an update. The server and the desktop app are updated by hand (install.bat of each); the settings backups below are taken at the first start of a new server version.
Bond Gateway
Upload the gateway packages once; every gateway (0.9.0 or newer) checks here daily and shows Update on its page — or press Update next to a gateway on the Status tab. The gateway downloads the file over the bond, checks its SHA-256 and installs it; it is back in about half a minute.
Linux (Ubuntu box: streamset-bondgw_<version>_amd64.deb)
Windows (StreamSet-BondGateway-Setup-<version>.exe)
| Gateway | System | Runs | Newest here |
|---|
Settings backups — taken at the first start of a new server version (last 10)
—