Bitfocus Companion for OBSBOT Cameras & Rodecaster Video Switcher CIS - Video Podcast Studio (Park413R) — Re-Deployment Guide (Windows 11)

Bitfocus Companion for OBSBOT Cameras & Rodecaster Video Switcher CIS - Video Podcast Studio (Park413R) — Re-Deployment Guide (Windows 11)

Use this after an OS wipe or PC replacement to restore a the Video Podcasting Studio PC that auto-launches Companion and controls three OBSBOT Tail 2 cameras over a dedicated 192.168.2.0/24 subnet via a secondary USB-to-Ethernet adapter.


What you’ll need

  • Windows 11 with local Administrator access

  • USB-to-Ethernet adapter (secondary NIC)

  • Bitfocus Companion v4.x installed at: C:\Program Files\Companion\Companion.exe

  • Your exported Companion configuration file (.companionconfig) (attached to this article)

  • A “golden” Companion profile folder taken from a working system (includes Start Minimized, etc.):
    C:\Users\<Admin>\AppData\Roaming\companion (attached to this article)


Network topology (summary)

  • Primary NIC: regular campus/office network (unchanged).

  • Secondary USB-Ethernet NIC: static 192.168.2.50/24, gateway 192.168.2.1 (optional if no router).

  • OBSBOT Tail 2 cameras (3 units): static IPs on 192.168.2.0/24 (e.g., .101–.103) set in the OBSBOT iOS app so the PC can control them over the secondary NIC.


Step A — Install/verify Companion

  1. Sign in as local Administrator.

  2. Install or verify Companion exists at C:\Program Files\Companion\Companion.exe.

  3. Do not launch it yet.


Step B — Set camera IPs (OBSBOT iOS app)

On the OBSBOT iOS app, set each Tail 2 to the .2 subnet:

  • Cam 1: 192.168.2.101 / 255.255.255.0 / GW 192.168.2.1

  • Cam 2: 192.168.2.102 / 255.255.255.0 / GW 192.168.2.1

  • Cam 3: 192.168.2.103 / 255.255.255.0 / GW 192.168.2.1

If this network is isolated (no router), you may leave gateway blank on the cameras.


Step C — One-Shot Redeploy Script (copy/paste, run as Admin)

This script completes the whole setup in one pass:

  • Sets the USB NIC to 192.168.2.50/24 with gateway 192.168.2.1

  • Adds HKLM\Run autostart for all users

  • Adds an inbound firewall allow for Companion

  • Seeds the Default profile with the golden Companion settings

  • Copies the golden settings to all existing user profiles

Edit the variables at the top: Companion path, USB NIC alias, and your golden config folder.

<# =======================================================================
 Bitfocus Companion — One-Shot Redeploy Script (Windows 11, Kiosk)
 - Sets static IP on secondary USB NIC (192.168.2.50/24, GW 192.168.2.1)
 - Creates HKLM\Run autostart for all users
 - Adds inbound firewall allow for Companion
 - Seeds Default profile with golden Companion config
 - Copies golden Companion config to ALL existing user profiles
======================================================================= #>

# ==================== EDIT THESE THREE VALUES ====================
$CompanionExe = "C:\Program Files\Companion\Companion.exe"
$UsbNicAlias  = "Ethernet 2"   # <-- Use Get-NetAdapter to confirm alias
$GoldenCfg    = "C:\Users\it-coffm1pc\AppData\Roaming\companion"  # your known-good Companion folder
# ================================================================

Write-Host "=== Bitfocus Companion Kiosk Redeploy ===" -ForegroundColor Cyan

# --- Preflight checks ---
$errors = @()

if (-not (Test-Path $CompanionExe)) {
  $errors += "Companion.exe not found at: $CompanionExe"
}
if (-not (Get-NetAdapter -InterfaceAlias $UsbNicAlias -ErrorAction SilentlyContinue)) {
  $errors += "NIC alias '$UsbNicAlias' not found. Use Get-NetAdapter to confirm the adapter name."
}
if (-not (Test-Path $GoldenCfg)) {
  $errors += "Golden config not found at: $GoldenCfg"
}

if ($errors.Count -gt 0) {
  Write-Host "`nPreflight issues detected:" -ForegroundColor Yellow
  $errors | ForEach-Object { Write-Host " - $_" -ForegroundColor Yellow }
  Write-Host "Fix the items above and re-run." -ForegroundColor Yellow
  return
}

# --- Helper: silent robocopy mirror ---
function Copy-Mirror($Source, $Dest) {
  New-Item -ItemType Directory -Path $Dest -Force | Out-Null
  # /MIR mirror, /R:1 retry once, /W:1 wait 1s, /NFL /NDL tidy output
  robocopy $Source $Dest /MIR /R:1 /W:1 /NFL /NDL | Out-Null
}

# --- 1) Configure USB NIC to 192.168.2.50/24, GW 192.168.2.1, Private profile ---
Write-Host "`n[1/5] Configuring USB NIC '$UsbNicAlias' for 192.168.2.50/24..." -ForegroundColor Cyan
try {
  # Remove non-default IPv4 entries
  Get-NetIPAddress -InterfaceAlias $UsbNicAlias -AddressFamily IPv4 -ErrorAction SilentlyContinue |
    Where-Object { $_.PrefixOrigin -ne "WellKnown" } |
    Remove-NetIPAddress -Confirm:$false -ErrorAction SilentlyContinue

  Set-NetIPInterface -InterfaceAlias $UsbNicAlias -Dhcp Disabled -ErrorAction SilentlyContinue
  New-NetIPAddress -InterfaceAlias $UsbNicAlias -IPAddress 192.168.2.50 -PrefixLength 24 -DefaultGateway 192.168.2.1 -ErrorAction Stop
  Get-NetConnectionProfile -InterfaceAlias $UsbNicAlias | Set-NetConnectionProfile -NetworkCategory Private
  Write-Host "USB NIC configured." -ForegroundColor Green
}
catch {
  Write-Host "NIC configuration warning: $($_.Exception.Message)" -ForegroundColor Yellow
}

# --- 2) Machine-wide autostart (HKLM\Run) + 3) inbound firewall rule ---
Write-Host "`n[2/5] Creating all-users autostart (HKLM\Run)..." -ForegroundColor Cyan
New-Item -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run" -Force | Out-Null
Set-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "Bitfocus Companion" -Value "`"$CompanionExe`""
Write-Host "Autostart entry added." -ForegroundColor Green

Write-Host "[3/5] Adding inbound firewall allow for Companion..." -ForegroundColor Cyan
New-NetFirewallRule -DisplayName "Companion Inbound" -Program $CompanionExe -Direction Inbound -Action Allow -Profile Domain,Private -ErrorAction SilentlyContinue | Out-Null
Write-Host "Firewall rule ensured." -ForegroundColor Green

# --- 4) Seed Default profile ---
Write-Host "`n[4/5] Seeding Default user profile with golden Companion config..." -ForegroundColor Cyan
$DefaultCfg = "C:\Users\Default\AppData\Roaming\companion"
try {
  Copy-Mirror -Source $GoldenCfg -Dest $DefaultCfg
  Write-Host "Default profile seeded." -ForegroundColor Green
}
catch {
  Write-Host "Default profile seed warning: $($_.Exception.Message)" -ForegroundColor Yellow
}

# --- 5) Copy golden config to ALL existing user profiles ---
Write-Host "`n[5/5] Updating existing user profiles with golden Companion config..." -ForegroundColor Cyan
$exclude = @("Public","Default","Default User","All Users")
$profiles = Get-CimInstance Win32_UserProfile |
  Where-Object {
    $_.LocalPath -like "C:\Users\*" -and
    -not $_.Special -and
    (Split-Path $_.LocalPath -Leaf) -notin $exclude
  }

$updated = 0
foreach ($p in $profiles) {
  $userRoot = $p.LocalPath
  $dest     = Join-Path $userRoot "AppData\Roaming\companion"
  try {
    Copy-Mirror -Source $GoldenCfg -Dest $dest
    $updated++
    Write-Host (" - Updated: {0}" -f $userRoot) -ForegroundColor Green
  }
  catch {
    Write-Host (" - Skipped (access/locked): {0} — {1}" -f $userRoot, $_.Exception.Message) -ForegroundColor Yellow
  }
}

Write-Host "`nSummary:"
Write-Host ("  Profiles updated: {0}" -f $updated) -ForegroundColor Green
Write-Host "  HKLM\\Run autostart: OK" -ForegroundColor Green
Write-Host "  Firewall rule: OK" -ForegroundColor Green
Write-Host "  USB NIC (192.168.2.50/24): attempted" -ForegroundColor Green

Write-Host "`nNext steps:"
Write-Host " - Ensure the three OBSBOT Tail 2 cameras are set via the iOS app to static IPs on 192.168.2.0/24 (e.g., 192.168.2.101–103, /24, GW 192.168.2.1 or blank if no router)."
Write-Host " - Sign in with a new kiosk user to verify Companion auto-starts minimized and camera control works." 
Write-Host "`nDone." -ForegroundColor Cyan

 

 

 


Step D — Import Companion configuration (once)

  1. Launch Companion (as admin) → Settings → Import/ExportImport your .companionconfig(attached to this article)

  2. Confirm connections (VISCA/OSC/TCP as used).

  3. Close Companion by choosing Hide (so “Start Minimized” persists).

After this import, all kiosk users pick up the same profile; the HKLM\Run entry guarantees auto-start at every logon.


Validation

  • IP: ipconfig shows the USB NIC as 192.168.2.50.

  • Ping cameras:

     Test-Connection 192.168.2.101 -Count 2 Test-Connection 192.168.2.102 -Count 2 Test-Connection 192.168.2.103 -Count 2
    
  • Companion running: Check tray (overflow ^) or Task Manager → Details → Companion.exe.

  • Control works: Stream Deck buttons move cameras/home/presets.


Troubleshooting

  • Companion doesn’t start for users

    • Verify HKLM:\Software\Microsoft\Windows\CurrentVersion\Run contains Bitfocus Companion pointing to C:\Program Files\Companion\Companion.exe.

    • Check C:\Users\<User>\AppData\Roaming\companion exists (script seeds it).

  • No camera control

    • Ensure control modules bind to the correct interface or that routes prefer the .2 NIC.

    • Confirm cameras’ IPs are in 192.168.2.0/24 and reachable.

  • No router on .2

    • Leaving the gateway blank on the NIC and cameras is fine for local control; keep the NIC profile Private.


Rollback (if needed)

  • Remove autostart:

    Remove-ItemProperty "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run" -Name "Bitfocus Companion"
    
  • Remove firewall rule:

    Get-NetFirewallRule -DisplayName "Companion Inbound" | Remove-NetFirewallRule
    

Notes for IT

  • Keep the golden Companion folder and the .companionconfig with this article.

  • If the USB NIC alias isn’t Ethernet 2, run Get-NetAdapter and update the script.

  • If using a router on the .2 subnet, set the NIC’s Default Gateway to 192.168.2.1 as shown; otherwise it can be omitted.