Skip to content

Instantly share code, notes, and snippets.

@wolf001cmd
Last active January 2, 2025 20:32
Show Gist options
  • Save wolf001cmd/9d986a78dc6634915aceaa6264213185 to your computer and use it in GitHub Desktop.
Save wolf001cmd/9d986a78dc6634915aceaa6264213185 to your computer and use it in GitHub Desktop.
streaming backpack build

irl how to / backpack build

I've gone through a variety of products and options before settling on Belabox. My goal from the start was a small backpack I just turn on, without too much setup. I stream either from my workshop, or walks/hikes/road trips with my dog and it's been pretty reliable so far.

build_flow

I'm usually running 3-4 modems, and the DJI Osmo Action 4. The core is the encoder, running Belabox. For reliability I try to have redundancy with pretty much everything, spare cables, batteries, my phone is setup to stream, I've got a secondary obs instance, etc.

build

Additionally check out NOALBS which is a bot to control obs and auto switch, As well as StreamBuddy for chat, commands, and general stream/backpack control.

Table of Contents

Overview

pack

What is a backpack? It's 4 main parts, Camera, Internet, Encoder, Batteries, and of course something to put all that in. The camera and pack are really up to your preference, The reset is outlined below.

My backpack is built around Belabox which is a video encoder that can take a video feed ( HDMI / USB / RTMP ) and transmit it using bonded internet connections. See https://belabox.net/ for more information. Once setup, You pretty much just connect the power and hit start.

Streaming Apps

Before you commit to a backpack build like this. Try some of the streaming Apps linked below, or even the Twitch app.

These apps can mimic what my backpack does, by bonding your Wifi and Cell signals using SRTLA similar to how the Belabox does. To do that, You do need a Belabox cloud relay, or other cloud relay server that does SRTLA.

Moblin for ios

iOS Moblin

Moblin has some fun features, You can control DJI cams right through the app, and it can show chat on an apple watch. I've used it to run workshop streams with 2 DJI cams. Nice portable setup.

At first glance, there's a ton of icons along the bottom. Take time to learn them, and hide ones you're not using in Display -> Quick Buttons.

  • Streams
    • Create Custom
      • SRTLA
      • url: srtla://{your_region}.srt.belabox.net:5000
      • streamid: your_stream_id
    • After Create
      • Enable Background Streaming
      • Video Settings
        • I use 720/30fps but this is my backup
        • Generally I prefer 30fps for live content but to each their own
        • Ensure your fps is the same in OBS
        • Bitrate 5Mbps
        • Key Frame Auto or 2s
        • B-Frames On
      • Audio
        • Bitrate 128 Kbps
        • Set the same bitrate in obs
      • SRT(LA)
        • Latency 2000-2500
        • Adaptive Bitrate On
        • Other options tweak as needed
      • Twitch/Youtbue/Other configuration
      • Background Streaming On
  • Scenes
    • Like OBS you can have Scenes for stream
    • I have the following Setup
      • Back Camera
      • Front Camera
      • DJI Action 4 (wireless rtmp)
      • DJI Action 2 (wireless rtmp)
      • Screen Capture
      • Blank
  • Chat
    • Setup to your preferences
  • Camera
    • Setup to your preferences/phone
  • RTMP Server
    • Enable if using rtmp camera source
    • Add Stream for each camera
  • OBS Media Source
    • See obs section below

IRL Pro for Android

Android IRL Pro

For IRL Pro, First Download the app, duh. And get a cloud relay account. From there here are the settings to use.

  • Streamer
    • your chat name
    • chat options
    • any other things like streamlabs, SE, etc
  • Connections
    • url: srtla://{your_region}.srt.belabox.net:5000
    • streamid: your_stream_id
  • Video
    • Resolution / Framerate
      • Lowering will use less data, if bitrate is on auto
      • I use 720p with variable fps (max 30) but it is my backup, tinker with it
      • Ensure your fps is the same in OBS
    • HEVC On
    • Adaptive Framerate On
  • Audio
    • Play with Echo / Noise Suppressor
  • Display
    • Show Audio Levels
    • Show Grid
  • OBS Media Source
    • See obs section below

And like I say above, tinker with it. This setup will bond your Wifi and Cell data, and you can watch how much it's using. Find a balance between quality and bitrate that works. You can also pair this with a Wifi HotSpot to do more IRL stuff.

Highly recommended to start here and see if you like it before investing in all the gear. And anything you get to do the above would be reusabled ( batteries, wifi hotspot, data plan, tripods / mounting )

Stream buddy

Android Stream buddy

Chat app that allows you to map various actions, use browser sources, view the secret Belabox ui link, monitor bitrate, viewership, and more.

Realtime Chat

Realtime Chat for iOS or Android, Similar to Stream buddy with fewer features. Have not tried myself

Choosing Networks

There's not too much benifit to have multiple of the same modem on the same network. Because they will all have equally poor signal, and they're crammed together in the pack which is not ideal for radio signals. That said by using different modems and networks you can get broader coverage.

In the US, You probably want a modem on each major carrier AT&T, TMobile, and Verizon. You do not want to buy lines right from the big carriers though, Try to look for resellers and their promotions to save on costs. I generaly run a mix of 4G and 5G modems, 5G modems being more expensive and often the consumer devices are carrier locked.

Generally when streaming you're using 2-3 gigabytes per hour ( 5k bitrate target ). So if you have 3 plans with 10GB each that's maybe 10-15 hours a month of streaming. Most also allow you to top up, and many are month to month so tweak it based on your usage and needs. I'd suggest going more for deals than maxed out plans when you're just starting, That said some of the cheaper carriers can be goofy.

My Networks

I've used Mint Mobile, Tello, USMobile, AT&T Prepaid, Visible, and BoostMobile. Each reseller uses a different carrier network or networks, all with different pricing and options. Some plans do limit Hot Spot data so read carefully.

Modems will likely not use up their data evenly, as some networks will be stronger than others wherever you are.

All together I try to balance my networks ( for streaming ) for a base price target around $80 for 4 lines. So total cost for the backpack is around $100 a month once Belabox cloud and the streambuddy app are included.

Choosing Modems

Modems are the most annoying part to get working in my opinion. I've seen people use all of one brand, and other people like me use all different modems. I currently use 3 modems, with the option to hotspot my iphone and android if needed.

There basically are 3 types of modems to choose from USB, Ethernet, and Hotspot / Wireless. Some modems offer more than one connection option, which can muddle things.

Each modem will have different supported frequencies, And possibly different "CAT" ratings. More frequencies does not equal better as the antenna configuration and the modem's design also affect throughput.

Things to Note

  • Different Modems support Different Networks.
    • In the US most will support AT&T + TMobile
    • Verizon support is harder to find
  • Does the modem show up as a Hot Spot to the carrier?
    • This can be hard to tell until you get the modem and try it
    • HotSpots may be limited to less data by your carrier
  • QMI Modems
    • Belabox has added support for ModemManager
    • Supported modems will show up for configuration right in the Belabox UI
  • How easy are the modems to set up?
    • Look at their getting started guides
    • You should be able to change the subnet ( 192.168.1.1, 192.168.2.1, etc ) so the modems do not conflict
  • Ethernet Modems will usually require their own power
  • Hotspot / Wireless Modems usually have batteries
    • Another thing to charge
    • Most have annoying touch screens
    • Wifi is nice, use 2.4Ghz for cameras, 5Ghz if just hotspoting
  • How many ports does your battery have?
  • CHECK REVIEWS, some just outright are crap / don't work

Check the build flow at the top for my current arrangement. I have found the ethernet modems are a bit more reliable, but the LINOVISION does run a bit hot. Phone hotspots can also work in a pinch or as a backup.

Choosing Parts

build

Here's a known good reference sheet from Belabox users, FYI Some hardware is EU Specific.

https://github.com/BELABOX/tutorial/wiki/Peripherals,-accessories-and-power-banks

  • Intel Wifi cards have had issues for some users. Mine have been fine.

Power Usage

Be mindful of power usage and powering your build, Depending on my use case ( USB / RTMP / HDMI ) I'm averaging from 10-16 watts. The encoder alone will draw from 2 watts (usb/rtmp) to 4.5 watts (hdmi 4k60) in my testing with nothing powered from it. The rest is modems, camera, wifi, fans, etc.

The Orange PI does not have USB Power Delivery, So we only have 5 volts at 3 amps max. Generally used a powered usb hub with this encoder for stablity.

The Rock 5a does support USB Power Delivery, and you may not need a powered hub (depending on your connected devices).

Ideally I would recommend targeting under 10 watts per usb cable from your battery. With the goal simply being stability as power usage will fluctuate on the modems.

If you only want 1 cable to your battery, You can be crazy like me and wire up a USB PD trigger board with a few USB PD charging boards. So I can get 12-20 volts from the battery, and then power each device with whatever it needs.

Parts List

Please note I have been reusing hardware I had on hand, this can work or be modified for a variety of hardware. Check the choosing parts section above. Prices are at time of writing.

Type Tested Part Cost Notes
Encoder 🗸 Orange Pi 5 Plus 4GB $107
Encoder 🗸 OKDO Rock 5A 4GB $109 No HDMI
Modems 🗸 Quectel RM520N-GL $200+ USB, 4G/5G Verizon + Tmobile + AT&T, QMI, Needs carrier board, Complicated to setup
Modems 🗸 Quectel EC25-AFX $40? USB, 4G Verizon + Tmobile + AT&T, QMI, Needs carrier board, Complicated to setup
Modems 🗸 INSEEGO USB800 $80 USB, 4G AT&T, Very Reliable
Modems 🗸 INSEEGO M2000 $55? Wifi + USB, 4G/5G Tmobile + AT&T, bought used
Modems X NRadio C2000 $89 Ethernet, 4G Verizon + Tmobile + AT&T, WIFI, removed from shell, developed reliablity problems
Modems 🗸 Netgear LM1200 $150 Ethernet, 4G Verizon + Tmobile + AT&T, removed from shell
Modems Netgear LM1300 $90 Ethernet, 4G Verizon + Tmobile + AT&T, untested
Modems 🗸 Novatel USB730L $20? USB, 4G Verizon, bought used
Modems 🗸 ZTE MF833V $55 USB, 4G Tmobile + AT&T, There are QMI and Managed versions
Modems 🗸 LINOVISION IOT-R41 $175 Ethernet + USB, 4G Tmobile + AT&T, External Antenna
Wifi 🗸 Intel 8265 $15 Mini pcie
Wifi 🗸 Intel AX210 $15 Mini pcie, only works on my Rock 5A (other users report different)
Wifi 🗸 Intel 9260 $10 Mini pcie
Wifi 🗸 Intel 7265 $10 Mini pcie, only works on Orange Pi (other users report different)
Wifi 🗸 Realtek RTL8811CU $14 USB
Battery 🗸 NiteCore 10000 GEN II $60 10000mah, 2 port, 18W PD
Battery 🗸 NiteCore 10000 GEN III $65 10000mah, 2 port USB-C, Pass Through Charging, 18W PD
Battery 🗸 Charmast Slim $36 3.0 amp, 26800mah, 3 port, power resets when new devices are plugged in
Battery 🗸 Anker 313 $15 2.4 amp, 10000mah, 1 port, backup use
Battery 🗸 Anker 325 $37 2.4 amp, 20000mah, 2 port, not ideal as a primary
Battery 🗸 Anker 337 $59 3.0 amp, 26000mah, 3 port, overheated on me once, only micro usb charge
Cables USB C $10 Get a quality one for the camera, others can be cheaper. Try to buy appropriate lengths
Cables Cat 6 Slim / Short Ethernet $10 You don't need sheilding or high speed for these short runs
Storage SD Card 16GB+ $15 Get a Class 10 / V30 or greater
Storage EMMC 16GB+ $15 Buy the appropriate one for your encoder
Other Bongo Ties $9 Usefull for holding cam, arranging pack, etc
Other 30mm 5v fans $10 Not really for cooling the encoder, more to just circulate air in the pack
Other Cocoon Grid-IT $15 10.25" x 5.125" small, Great for organizing and arranging the pack
Other USB C 90 Degree $7 Helpful for routing cables
Other Wifi Antenna $7 If your mini pcie card did not come with them

So my setup with the Rock 5A is roughly $650 for the pack. But that includes the $175 Linovision and 4 modems, So you can probably figure something out closer to $450 with 3 more cost effective modems. And then you just need a camera or phone to feed it.

Project Boxes

DO NOT PRINT WITH PLA, Use PETG or other higher temperature materials.

Orange Pi

My Orange Pi enclosure is based off my nradio/lm1200 cases. Objective was smallest form factor while still having a rigid enough shell for a backpack enviornment. Includes spot for a 3007 fan, press fit.

https://www.printables.com/model/1078542-orange-pi-5-plus-case-v3

orange_pi_case

Rock 5A

The Rock 5A is the same size as a Raspberry Pi 4 so you can use the same cases. I'm using this one, I did edit the mesh slightly to better protect the SD Card. On the Rock 5A it sticks out wayyyyy too far.

https://www.printables.com/model/4074-malolos-screw-less-snap-fit-raspberry-pi-4-model-b

rock5a_build

NRadio C2000 & LM1200/1300

I also made a couple cases for modems to add fans and improve airflow. I also use it for a structure mount usb modems.

NRadio C2000

https://www.printables.com/model/665497-nradio-c2000-case-shell

Netgear LM1200/LM1300

https://www.printables.com/model/771215-netgear-lm1200-caseshell

Osmo Action 4 USB-C Cable Support

Cable Support to reduce cable strain on the Action 4 Cam. Found myself knocking around the camera cable a lot when livestreaming ergo this little block to help support it better.

https://www.printables.com/model/617365-osmo-action-4-usb-c-cable-support

Fan Grills

I'm using the stl below, and just using a hex infill pattern.

https://www.printables.com/model/431773-30mm-fan-guards/files

To install fans. You want to attach the fan cable to pins 4 and 6, it uses a raspberry pi-ish style layout. The normal orange pi fan header is tied to cpu temps and doesn't spin up often. On modems I just soldered onto 5v sources discovered with a multimeter.

opi5p_gpio

Setup

Action Camera Setup

You'll need to get the appropriate app for your camera. Generally want the following settings.

  • DJI - Rocksteady or Horizon stabilzation on
  • Reduce Brightness to save battery
  • Sounds Low/Off
  • Front screens - Disable to save battery

To Webcam stream on a DJI, connect a usb-c cable, select webcam when it pops up ( only works when encoder is powered on ).

  • Note the Action 2 does not support audio over USB.

To RTMP stream, connect to your camera in it's app ( may take a moment ), select livestream, select RTMP, select wifi and stream options, start streaming. Your Belabox must be on a wifi network with your camera for this.

rtmp://belabox.local:1935/publish/live

or

rtmp://your_belabox_ip_on_same_network:1935/publish/live

Also have a look at the cable support 3d print above if you're using a DJI Action 4.

HDMI Camera Setup

Plug it in...

Encoder Setup

Belabox has got a lot of nice features to it, be aware of this section specifically https://belabox.net/rk3588/#are-there-known-issues

The encoder supports HDMI, RTMP, USB injest which pretty much covers everything.

To get setup follow the guides from Belabox to flash your sd card using balenaetcher, After install pretty much just copy paste the settings they give you on their cloud site. Their cloud relay service is $10 a month to subscribe to on github. Additionally they allow remote access to your encoder which is super convenient.

https://belabox.net/rk3588/ https://cloud.belabox.net/ https://github.com/BELABOX/tutorial/wiki

To Start Stream, get your various connections working using their guides and the test pattern option. When ready select the appropriate option for your camera feed in the Encoder settings area and start stream.

For bitrate anything between 4k and 6k is probably good.

  • Note many settings are only saved when you click "start stream"

Modem And Sim Card Setup

Each modem and Sim card will have it's own process to setup.

For the sim cards, follow the steps from the chosen carrier. I have found putting it in a phone to activate is easiest. Then transfering it to the device you'd like to use ( be warned some carriers might lock to the device activating it, read carefully ). I have not tried ESim yet.

On the modem side you want each modem to have it's own subnet ( 192.168.1.1, 192.168.2.1, etc ) so the networking actually networks. Additionally on some modems you may need to set the APN to whatever is suggested by your carrier, if it doesn't auto detect. Do a search like "USMobile APN" or "Tello APN" and you should find what you need.

I also set all my modems to use google or cloudflare dns ( 8.8.8.8 and 1.1.1.1 respectively ) but that's not required.

Test your modems first on a PC to confirm setup, Then once validated connect to the Belabox.

OBS Setup

Esentially just add a media source using the SRT URL Belabox cloud provides, should look like the below. Be sure to select your region ( took me a while to notice that option ).

srt://{your_region}.srt.belabox.net:4001?streamid=your_stream_id&timeout=2000000
  • OBS Media Source
    • srt://{your_region}.srt.belabox.net:4001?streamid=your_stream_id
    • Network Buffer 2MB
    • Reconnect Delay 2s
    • Hardware Decoding Disabled ( previously I enabled this, have seen new advice that it can be problematic on some hardware )
    • Restart Playback Disabled
    • Use Belabox Cloud Guides if you have trouble

Personally I use NOALBS which is a twitch chat bot that can start / stop, monitor bitrate, and switch scenes automagically. So I have that set to use a Low Bitrate Scene and BRB if injest fails. When using Two cams I also do some trickery so the second cam is full screen on the BRB scene so viewers always see something.

You may also want to setup a remote access tool for your pc just in case, but do that at your own risk.

For redundancy I have a VM on my server and my pc setup for streaming ( just in case ).

obs_scenes

NOALBS Setup

NOALBS is a twitch chat bot to control your OBS. It is pretty straightforward, Simply download it and use their guide to put in your twitch OAuth key in the env file. Previously I was using a VPN to access obs via websockets which is a pain as you can't use a VPN and connect your phone to most action cams at the same time.

https://github.com/NOALBS/nginx-obs-automatic-low-bitrate-switching

More info on how i use it in Streaming

The readme for the config.json file has a variety of options to play with. If you do have trouble or the application does not start try the below steps. This should let you see any errors in your config file.

  • Open the folder containing noalbs.exe and associated files
  • File -> Open Powershell or CMD Window ( no clue where windows 11 moved this... )
  • Run "./noalbs.exe"

My configuration is attached,

noalbs_config

Wireless AP Setup

At first I was running a wireless AP off the Belabox for my RTMP streaming, It works alright but range was limited. Moved to it's own gist if anyone is interested. I would recommend using a device with build in WIFI like the NRadio C2000 I switched to.

If you're running a wireless Camera, Use 2.4 Ghz. Otherwise 5Ghz is fine for short range.

Streaming

Now when you're live streaming, something key to remember, Audio is more important than video. Bad audio can ruin a stream. And for video, a working feed is always better than a higher resolution feed. So if you are having connection trouble, drop the resolution to a step below 1080p. Belabox and many of the Phone apps to do have dynamic bitrate and other tech to keep things going. But it's not magic.

To start a stream, I first open OBS / NOALBS open on my pc before leaving the house. On my Linux VM I have both apps set to autostart and auto login.

Then using Stream Buddy or chat commands I can start stream with NOALBS to an intro screen.

!switch intro
!start

At that point I plug in the batteries to the encoder / modems, wait about 20 seconds, then connect the cam via USB or RTMP.

The RTMP Target would be

rtmp://your_encoder_ip:1935/publish/live
or
rtmp://belabox.local:1935/publish/live

Otherwise USB mode you just tap the screen to enable the webcam / usb mode.

I then watch Stream Buddy, where I have a tab for the Belabox remote access feature. And I press start once I see everything come online.

At that point I can use another command to swap to my main scene.

!switch mobile

From there noalbs handles the auto switching based on bitrate.

Additionally stopping is easy enough, also noalbs can be configured to auto end on raid. Along with brb screens and the like.

!stop

That's it, have fun with your stream :)

  • Wolf
{
"user": {
"id": null,
"name": "wolf001zra",
"passwordHash": null
},
"switcher": {
"bitrateSwitcherEnabled": true,
"onlySwitchWhenStreaming": false,
"instantlySwitchOnRecover": true,
"autoSwitchNotification": false,
"retryAttempts": 5,
"triggers": {
"low": 2000,
"rtt": 1700,
"offline": 750
},
"switchingScenes": {
"normal": "Mobile",
"low": "Mobile LBR",
"offline": "BRB"
},
"streamServers": [
{
"streamServer": {
"type": "Belabox",
"statsUrl": "http://your_local_link_here:8080/your_key_here",
"publisher": "your_key_here"
},
"name": "Magic Box",
"priority": 0,
"overrideScenes": null,
"dependsOn": null,
"enabled": true
}
]
},
"software": {
"type": "Obs",
"host": "127.0.0.1",
"password": "",
"port": 4455,
"collections": {
"twitch": {
"profile": "MyProfile",
"collection": "MyCollection"
}
}
},
"chat": {
"platform": "Twitch",
"username": "wolf001zra",
"admins": [
"wolf001zra"
],
"prefix": "!",
"enablePublicCommands": true,
"enableModCommands": true,
"enableAutoStopStreamOnHostOrRaid": true,
"announceRaidOnAutoStop": true,
"commands": {
"Fix": {
"permission": "Mod",
"alias": [
"f"
]
},
"PrivacyScene": {
"permission": "Mod",
"alias": [
"brb"
]
},
"Bitrate": {
"permission": null,
"alias": [
"b"
]
}
}
},
"optionalScenes": {
"starting": "Intro",
"ending": "Ending",
"privacy": "Waiting",
"refresh": null
},
"optionalOptions": {
"twitchTranscodingCheck": false,
"twitchTranscodingRetries": 5,
"twitchTranscodingDelaySeconds": 15,
"offlineTimeout": 300,
"recordWhileStreaming": false
},
"language": "en"
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment