Skip to content

BUG: Cameras Not Connecting (v4) #1535

Description

@jkmesches

Describe the bug

Describe the bug

Issue: Wyze Cam v4 no longer working in Wyze-Bridge docker container, has been stable for several years.

Firmware: | DWB: mrlt8/wyze-bridge:latest (Also tried IDisposable/docker-wyze-bridge)

Past Issues: Typically required re-pairing cameras, downgrading firmware, etc. All resolved.

Hello all, I cannot for the life of me get my Wyze Cam v4 working with docker-wyze-bridge to feed into my Frigate instance. It is refusing to play nice, and despite firmware changes, firewall triple checks, switching container maintainers, updating my API key, verifying the cameras are active on the Wyze proprietary web app, etc. I cannot get the cameras back online. Can anyone help me?

Affected Bridge Version

v3.12.3 X86_64

Bridge type

Docker Run/Compose

Affected Camera(s)

Wyzecam v4

Affected Camera Firmware

4.52.9.4188

docker-compose or config (if applicable)

LOG OUTPUT:

2026-04-07T18:58:22.777155000Z
2026-04-07T18:58:22.777609000Z 🚀 DOCKER-WYZE-BRIDGE v3.12.3 X86_64
2026-04-07T18:58:22.777691000Z
2026-04-07T18:58:22.777748000Z [WyzeBridge] [MTX] Setting up default RECORD_PATTERN='/media/wyze/recordings/{cam_name}/%Y/%m/%d/%Y-%m-%d-%H-%M-%S'
2026-04-07T18:58:22.777813000Z [WyzeBridge] [MTX] The computed record_path: '/media/wyze/recordings/{cam_name}/%Y/%m/%d/%Y-%m-%d-%H-%M-%S' IS VALID
2026-04-07T18:58:22.848352000Z [WyzeBridge] 🔍 Could not find local cache for 'auth'
2026-04-07T18:58:22.848498000Z [WyzeBridge] ☁️ Fetching 'auth' from the Wyze API...
2026-04-07T18:58:22.856413000Z  * Serving Flask app 'frontend'
2026-04-07T18:58:22.856497000Z  * Debug mode: off
2026-04-07T18:58:22.865661000Z [WyzeBridge] [31m[1mWARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.[0m
2026-04-07T18:58:22.865788000Z  * Running on all addresses (0.0.0.0)
2026-04-07T18:58:22.865862000Z  * Running on http://127.0.0.1:5000
2026-04-07T18:58:22.865934000Z  * Running on http://<REDACTED_IP>:5000
2026-04-07T18:58:22.865991000Z [WyzeBridge] [33mPress CTRL+C to quit[0m
2026-04-07T18:58:22.957235000Z [WyzeBridge] [API] [WyzeAPIError] code='1000' msg='Invalid credentials, please check username, password, keyid or apikey' method=POST path=/api/user/login
2026-04-07T18:58:22.957384000Z [WyzeBridge] [API] Clearing credentials. Please try again.
2026-04-07T18:58:22.957522000Z [WyzeBridge] [API] Cool down for 20s before trying again.
2026-04-07T18:58:43.321668000Z [WyzeBridge] 💾 Saving 'auth' to local cache...
2026-04-07T18:58:43.322252000Z [WyzeBridge] 🔍 Could not find local cache for 'user'
2026-04-07T18:58:43.322371000Z [WyzeBridge] ☁️ Fetching 'user' from the Wyze API...
2026-04-07T18:58:43.490043000Z [WyzeBridge] 💾 Saving 'user' to local cache...
2026-04-07T18:58:43.490205000Z [WyzeBridge] [AUTH] WB_AUTH=False
2026-04-07T18:58:43.519340000Z [WyzeBridge] 🔍 Could not find local cache for 'cameras'
2026-04-07T18:58:43.519484000Z [WyzeBridge] ☁️ Fetching 'cameras' from the Wyze API...
2026-04-07T18:58:43.715610000Z [WyzeBridge] [API] Fetched [2] cameras
2026-04-07T18:58:43.715878000Z [WyzeBridge] 💾 Saving 'cameras' to local cache...
2026-04-07T18:58:43.716349000Z [WyzeBridge] [+] Adding LivingRoom [HL_CAM4] at livingroom
2026-04-07T18:58:43.756544000Z [WyzeBridge] [+] Adding Office [HL_CAM4] at office
2026-04-07T18:58:43.784307000Z [WyzeBridge] [MTX] starting MediaMTX 1.12.3
2026-04-07T18:58:43.784866000Z [WyzeBridge] 🎬 2 streams enabled
2026-04-07T18:58:43.921307000Z 2026/04/07 18:58:43 INF MediaMTX v1.12.3
2026-04-07T18:58:43.921430000Z 2026/04/07 18:58:43 INF configuration loaded from /app/mediamtx.yml
2026-04-07T18:58:43.922624000Z 2026/04/07 18:58:43 INF [path livingroom] runOnInit command started
2026-04-07T18:58:43.922750000Z 2026/04/07 18:58:43 INF [path office] runOnInit command started
2026-04-07T18:58:43.926625000Z [WyzeBridge] 📥 Received event: Init for livingroom
2026-04-07T18:58:43.926788000Z [WyzeBridge] 🪄 MediaMTX Initializing WyzeCam V4 - LivingRoom on <REDACTED_CAM_IP_1>
2026-04-07T18:58:43.929119000Z [WyzeBridge] 📥 Received event: Init for office
2026-04-07T18:58:43.929251000Z [WyzeBridge] 🪄 MediaMTX Initializing WyzeCam V4 - Office on <REDACTED_CAM_IP_2>
2026-04-07T18:58:43.929541000Z 2026/04/07 18:58:43 INF [RTSP] listener opened on :8554 (TCP), :8000 (UDP/RTP), :8001 (UDP/RTCP)
2026-04-07T18:58:43.929885000Z 2026/04/07 18:58:43 INF [RTMP] listener opened on :1935
2026-04-07T18:58:43.929951000Z 2026/04/07 18:58:43 INF [HLS] listener opened on :8888
2026-04-07T18:58:43.933252000Z 2026/04/07 18:58:43 INF [WebRTC] listener opened on :8889 (HTTP), :8189 (ICE/UDP)
2026-04-07T18:58:43.935679000Z 2026/04/07 18:58:43 INF [SRT] listener opened on :8890 (UDP)

--- First connection attempt ---

2026-04-07T18:58:51.254240000Z 2026/04/07 18:58:51 INF [path office] runOnDemand command started
2026-04-07T18:58:51.255569000Z [WyzeBridge] 📥 Received event: start for office
2026-04-07T18:58:51.255679000Z [WyzeBridge] 🎉 Connecting to WyzeCam V4 - Office on <REDACTED_CAM_IP_2>
2026-04-07T18:58:51.869221000Z 2026/04/07 18:58:51 INF [path livingroom] runOnDemand command started
2026-04-07T18:58:51.870700000Z [WyzeBridge] 📥 Received event: start for livingroom
2026-04-07T18:58:51.870928000Z [WyzeBridge] 🎉 Connecting to WyzeCam V4 - LivingRoom on <REDACTED_CAM_IP_1>

2026-04-07T18:59:11.782454000Z [WyzeBridge] ⏰ Timed out connecting to Office.
2026-04-07T18:59:11.895149000Z [WyzeBridge] ⏰ Timed out connecting to LivingRoom.

--- First retry cycle (representative of all subsequent cycles) ---

2026-04-07T18:59:16.787331000Z [WyzeBridge] 🎉 Connecting to WyzeCam V4 - Office on <REDACTED_CAM_IP_2>
2026-04-07T18:59:21.255681000Z 2026/04/07 18:59:21 INF [path office] runOnDemand command stopped: timed out
2026-04-07T18:59:21.255768000Z 2026/04/07 18:59:21 INF [path office] runOnUnDemand command launched
2026-04-07T18:59:21.255867000Z 2026/04/07 18:59:21 INF [RTSP] [conn ...] closed: source of path 'office' has timed out
2026-04-07T18:59:21.256102000Z [in#0 @ 0x76b866aee180] Error opening input: Server returned 400 Bad Request
2026-04-07T18:59:21.256166000Z Error opening input file rtsp://0.0.0.0:8554/office.
2026-04-07T18:59:21.256241000Z Error opening input files: Server returned 400 Bad Request
2026-04-07T18:59:21.438785000Z [WyzeBridge] [API] Error pulling thumbnail: [HTTPError] 401 Client Error:  for url: https://prod-sight-safe-auth.wyze.com/resource/<REDACTED_DEVICE_ID>/...?st=<REDACTED>&kid=<REDACTED>&nonce=<REDACTED>

2026-04-07T18:59:21.870289000Z 2026/04/07 18:59:21 INF [path livingroom] runOnDemand command stopped: timed out
2026-04-07T18:59:21.870518000Z 2026/04/07 18:59:21 INF [path livingroom] runOnUnDemand command launched
2026-04-07T18:59:21.870623000Z 2026/04/07 18:59:21 INF [RTSP] [conn ...] closed: source of path 'livingroom' has timed out
2026-04-07T18:59:21.871138000Z [in#0 @ 0x70536fbc2180] Error opening input: Server returned 400 Bad Request
2026-04-07T18:59:21.871230000Z Error opening input file rtsp://0.0.0.0:8554/livingroom.
2026-04-07T18:59:21.871322000Z Error opening input files: Server returned 400 Bad Request
2026-04-07T18:59:22.031101000Z [WyzeBridge] [API] Error pulling thumbnail: [HTTPError] 401 Client Error:  for url: https://prod-sight-safe-auth.wyze.com/resource/<REDACTED_DEVICE_ID>/...?st=<REDACTED>&kid=<REDACTED>&nonce=<REDACTED>

2026-04-07T18:59:22.044603000Z [WyzeBridge] 🎉 Connecting to WyzeCam V4 - LivingRoom on <REDACTED_CAM_IP_1>
2026-04-07T18:59:26.262552000Z [WyzeBridge] 🎉 Connecting to WyzeCam V4 - Office on <REDACTED_CAM_IP_2>

2026-04-07T18:59:37.048412000Z [WyzeBridge] ❗ [livingroom] Snapshot timed out
2026-04-07T18:59:37.194831000Z [WyzeBridge] [API] Error pulling thumbnail: [HTTPError] 401 Client Error: ...
2026-04-07T18:59:41.463770000Z [WyzeBridge] ❗ [office] Snapshot timed out
2026-04-07T18:59:41.630189000Z [WyzeBridge] [API] Error pulling thumbnail: [HTTPError] 401 Client Error: ...
2026-04-07T18:59:47.289258000Z [WyzeBridge] ⏰ Timed out connecting to Office.

2026-04-07T18:59:51.002348000Z [office] [STREAM] Stopping 2 streams
2026-04-07T18:59:51.002934000Z [office] 👋 goodbye!
2026-04-07T18:59:51.505442000Z [livingroom] 𓁈‼️ [TUTK] Exception: [AssertionError] can only test a child process

--- TUTK errors begin appearing ---

2026-04-07T19:00:16.508379000Z [office] 𓁈‼️ [TUTK] Exception: [AssertionError] can only test a child process
2026-04-07T19:00:22.509460000Z [livingroom] 𓁈‼️ [TUTK] Exception: [AssertionError] can only test a child process

2026-04-07T19:00:26.516526000Z [office] 𓁈‼️ [TUTK] Exception: [AssertionError] can only test a child process
2026-04-07T19:00:26.518420000Z [office] 𓁈‼️ [TUTK] [-13] IOTC_ER_TIMEOUT
2026-04-07T19:00:31.508532000Z [livingroom] 𓁈‼️ [TUTK] Exception: [AssertionError] can only test a child process

2026-04-07T19:00:52.523833000Z [office] 𓁈‼️ [TUTK] [-13] IOTC_ER_TIMEOUT
2026-04-07T19:00:56.513170000Z [office] 𓁈‼️ [TUTK] Exception: [AssertionError] can only test a child process
2026-04-07T19:00:57.063388000Z [livingroom] 𓁈‼️ [TUTK] [-13] IOTC_ER_TIMEOUT
2026-04-07T19:00:57.522384000Z [livingroom] 𓁈‼️ [TUTK] Exception: [AssertionError] can only test a child process

=== REPEATING PATTERN (from 18:59:21 to 19:02:41, ~3.5 minutes) ===
The following cycle repeated continuously for both cameras (office and livingroom):
  1. 🎉 Connecting to WyzeCam V4 - <camera> on <ip>
  2. ⏰ Timed out connecting / ❗ Snapshot timed out
  3. RTSP path runOnDemand command stopped: timed out
  4. RTSP connections closed: source of path has timed out
  5. Error opening input file rtsp://0.0.0.0:8554/<camera> - Server returned 400 Bad Request
  6. [API] Error pulling thumbnail: [HTTPError] 401 Client Error
  7. 𓁈‼️ [TUTK] Exception: [AssertionError] can only test a child process
  8. 𓁈‼️ [TUTK] [-13] IOTC_ER_TIMEOUT
  9. [STREAM] Stopping 2 streams
  10. Retry from step 1
=== END REPEATING PATTERN ===

--- Camera API re-fetch during retries ---

2026-04-07T19:00:56.578650000Z [WyzeBridge] ☁️ Fetching 'cameras' from the Wyze API...
2026-04-07T19:00:56.764157000Z [WyzeBridge] [API] Fetched [2] cameras
2026-04-07T19:00:56.764344000Z [WyzeBridge] 💾 Saving 'cameras' to local cache...

--- Final entries before log ends ---

2026-04-07T19:02:31.002338000Z [office] [STREAM] Stopping 2 streams
2026-04-07T19:02:31.515126000Z [office] 𓁈‼️ [TUTK] Exception: [AssertionError] can only test a child process
2026-04-07T19:02:36.505013000Z 2026/04/07 19:02:36 INF [path office] runOnDemand command stopped: timed out
2026-04-07T19:02:36.505716000Z [in#0 @ 0x71bd2d70f180] Error opening input: Server returned 400 Bad Request
2026-04-07T19:02:36.505821000Z Error opening input file rtsp://0.0.0.0:8554/office.
2026-04-07T19:02:36.505872000Z Error opening input files: Server returned 400 Bad Request
2026-04-07T19:02:36.666415000Z [WyzeBridge] [API] Error pulling thumbnail: [HTTPError] 401 Client Error: ...
2026-04-07T19:02:38.569945000Z [WyzeBridge] ❗ [livingroom] Snapshot timed out
2026-04-07T19:02:38.718828000Z [WyzeBridge] [API] Error pulling thumbnail: [HTTPError] 401 Client Error: ...
2026-04-07T19:02:38.744130000Z [WyzeBridge] 🎉 Connecting to WyzeCam V4 - LivingRoom on <REDACTED_CAM_IP_1>

Affected Bridge Version

v2.10.3

Bridge type

Docker Run/Compose

Affected Camera(s)

Wyze v4

Affected Camera Firmware

4.52.9.4188

docker-compose or config (if applicable)

services:
    wyze-bridge:
        container_name: wyze-bridge
        restart: unless-stopped
        image: mrlt8/wyze-bridge:latest
        #image: idisposablegithub365/wyze-bridge:latest
        network_mode: host
        ports:
            - 1935:1935 # RTMP
            - 8554:8554 # RTSP
            - 8888:8888 # HLS
            - 8889:8889 #WebRTC
            - 8189:8189/udp # WebRTC/ICE
            - 5000:5000 # WEB-UI
        environment:
            # [OPTIONAL] Credentials can be set in the WebUI
            # API Key and ID can be obtained from the wyze dev portal: 
            # https://developer-api-console.wyze.com/#/apikey/view
            - WYZE_EMAIL=
            - WYZE_PASSWORD=
            - API_ID=
            - API_KEY=
            # [OPTIONAL] IP Address of the host to enable WebRTC e.g.,:
            - WB_IP=
            # WebUI and Stream authentication:
            - WB_AUTH=false # Set to false to disable web and stream auth.
            - WB_USERNAME=
            - WB_PASSWORD=

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions