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
-
Sign in as local Administrator.
-
Install or verify Companion exists at C:\Program Files\Companion\Companion.exe
.
-
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)
-
Launch Companion (as admin) → Settings → Import/Export → Import your .companionconfig
. (attached to this article)
-
Confirm connections (VISCA/OSC/TCP as used).
-
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
Rollback (if needed)
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.