LOLS IRL speaks standard BELABOX compatible srtla, so your own receiver behaves exactly as our hosted relays do. Here is what to run, which ports matter, and the one mistake that stops a cellular link ever reaching your box.
You do not have to host anything: the free LOLS Cloud relays exist so that bonding works out of the box, or you can self-host your own receiver and depend on nobody. People choose to host for good reasons. You want the stream to land on infrastructure you control, you want a machine physically close to you that we do not have a relay near, you want no allowance to think about, or you simply prefer running your own things. Nothing in the app is tied to our servers, so switching is a hostname change and nothing else.
phone (wifi + cellular)
|
| srtla, UDP, one socket per network
v
srtla_rec listens on a public UDP port, reassembles the links
|
| plain SRT, UDP, on localhost
v
media server MediaMTX or equivalent
|
+--> OBS, or a restream on to Twitch / Kick / YouTube
Two pieces, and each has one job. srtla_rec, from the BELABOX project, is the part
that understands bonding: every link your phone opens registers with it as part of one group, and
it turns that group back into a single ordinary SRT stream. It then forwards that stream to an SRT
listener, which is where a media server takes over. MediaMTX is the usual choice and can hand the
stream to OBS, republish it, or record it, but anything that accepts SRT will do.
The receiver has to be reachable from every network your phone streams over, which in practice means a public address. A small VPS is plenty: this is packet forwarding, not transcoding, so megabits and a modest CPU matter far more than cores. Put it geographically near where you stream, for the same reason you pick the nearest relay: distance is delay you cannot get back, and it is paid again on every retransmission.
A receiver on your home LAN, at something like 192.168.1.50, is reachable from
your Wi-Fi and from nothing else. Your cellular link cannot route to a private address, so it
never registers and you are not bonded, you are streaming over Wi-Fi with extra steps, and the
stats will show you one link instead of two.
Either host on a machine with a public address, or forward the UDP port on your router to the box on your LAN and point the app at your router's public address. A dynamic DNS name saves you re-typing it every time your address changes.
| Port | What for |
|---|---|
| UDP, your srtla port, inbound from the internet | The only port the phone touches. 5000 is the convention. Each bonded link arrives from its own source address and port, so there is nothing per link to open or configure. |
| UDP, your SRT listener, local | Where srtla_rec forwards the
reassembled stream. MediaMTX listens for SRT on 8890 by default. This does not need to be
exposed to the internet unless you also want plain SRT clients to publish to it. |
| Whatever your media server serves | RTMP, RTSP, HLS or WebRTC out to OBS or to a viewer, entirely up to you and not part of the bonding path. |
Firewalls, cloud security groups and router forwarding rules very often default to TCP. An srtla registration sent at a TCP only rule disappears with no error anywhere, which looks identical to the receiver being down. If a link will not register, check the protocol on the rule before you check anything else.
srtla_rec passes the SRT stream id straight through, so what goes in the app's
Stream id field is whatever the server behind it expects. With MediaMTX that is
the publish form, a path and optionally credentials when authentication is on:
publish:mypath
publish:mypath:username:password
Turn authentication on if the port is open to the internet. An unauthenticated publish endpoint on a public address will eventually be found by somebody who is not you.
srtla_rec is listening on.srtla_rec logs a connection
registration per link, all under one group. Two links should give you two registrations in the
same group. If you only ever see one, the second network cannot reach the host: private address,
a TCP only firewall rule, or a VPN running on the phone.Stuck on a step, or want a second pair of eyes on a receiver that will not accept the second link? Ask in Discord or email support@lols.gg. Bring the region you are in, what the stats overlay shows and what the receiver logged, and it is usually a two message conversation.
Related: bonding in five minutes for the app side and how to read the indicators, using the free relays if you would rather not host, and all the guides.