1 Wyze Bridge
Matt Cupp edited this page 2026-05-29 17:35:45 -04:00

Wyze-Bridge

Translates Wyze's proprietary camera protocol to local RTSP streams without requiring RTSP firmware on the cameras. Enables Wyze cameras in Frigate.

Where it runs

  • Host: Nexus (192.168.1.226)
  • Web UI: http://192.168.1.226:5050
  • RTSP streams: rtsp://192.168.1.226:8556/<stream-path>
  • WebRTC: http://192.168.1.226:8889
  • Not managed by Komodo — camera stack is deployed manually (same policy as Frigate)
  • Compose file: wyze-bridge/docker-compose.yml in homelab-docker repo

Cameras

Wyze App Name Stream Path RTSP URL Status
Garage Cam garage-cam rtsp://192.168.1.226:8556/garage-cam Active in Frigate as garage
Back Yard Cam back-yard-cam rtsp://192.168.1.226:8556/back-yard-cam Discovered, not yet in Frigate (see issue #93)
Henrys Room henrys-room rtsp://192.168.1.226:8556/henrys-room Discovered, not yet in Frigate (see issue #93)

Ports

Port Purpose
5050 Web UI
8556 RTSP streams (host-side; mapped from container port 8554, offset to avoid conflict with Frigate's 8554)
8889 WebRTC (host-side; mapped from container port 8888)

Frigate Integration

Wyze-Bridge provides the RTSP streams that Frigate uses as camera sources. When Frigate starts, it connects to the RTSP URLs above; wyze-bridge then initiates the connection to the physical Wyze camera on demand.

  • Streams are on-demand — cameras connect when first requested (e.g., on Frigate startup)
  • If a camera shows offline at startup, wyze-bridge retries automatically
  • RTSP auth is disabled (WB_AUTH=false) — LAN-only use

Secrets

Credentials are stored encrypted in the repo as wyze-bridge/.env.enc (SOPS + age). The plaintext .env is never committed.

Required variables (see .env.example):

Variable Description
WYZE_EMAIL Wyze account email
WYZE_PASSWORD Wyze account password
API_ID Wyze API key ID (from developer console)
API_KEY Wyze API key (from developer console)
TOTP_KEY TOTP secret — only needed if account has 2FA enabled

The API key + ID are required since Wyze mandated them in May 2024. Generate at https://developer-api-console.wyze.com/

Bootstrap on new machine

  1. Decrypt secrets:
    sops --decrypt /home/matt/repos/homelab-docker/wyze-bridge/.env.enc \
      > /home/matt/repos/homelab-docker/wyze-bridge/.env
    chmod 600 /home/matt/repos/homelab-docker/wyze-bridge/.env
    
  2. Create token cache directory:
    sudo mkdir -p /mnt/server/containers/wyze-bridge/tokens
    
  3. Start:
    cd /home/matt/repos/homelab-docker/wyze-bridge && docker compose up -d
    

Re-encrypting secrets after changes

On Nexus, after editing .env:

cd /home/matt/repos/homelab-docker
sops --encrypt wyze-bridge/.env > wyze-bridge/.env.enc
git add wyze-bridge/.env.enc && git commit -m "chore: update encrypted wyze-bridge secrets"

Renovate note

mrlt8/wyze-bridge publishes semver tags — Renovate will open auto-update PRs when new versions are released. Because this stack is not managed by Komodo, deploy updates manually after merging:

ssh matt@192.168.1.226 "cd /home/matt/repos/homelab-docker/wyze-bridge && docker compose pull && docker compose up -d"

Troubleshooting

# Container logs
ssh matt@192.168.1.226 "docker logs wyze-bridge --tail 50"

# Follow live logs (useful when a camera is coming online)
ssh matt@192.168.1.226 "docker logs wyze-bridge -f"

# Restart the container
ssh matt@192.168.1.226 "cd /home/matt/repos/homelab-docker/wyze-bridge && docker compose restart"

# Verify RTSP stream is reachable (requires ffprobe)
ffprobe -v quiet -show_streams rtsp://192.168.1.226:8556/garage-cam