Skip to content
Paul Philippov edited this page Nov 2, 2025 · 8 revisions

Background

This process has been tested with Wyze V2 running Thingino build master+0a66547 (2025-05-08), with go2rtc v1.9.9, and Mainsail v2.14.0.

Mainsail provides several options for integration of camera feeds. The primary is Crowsnest, a service typically deployed alongside Mainsail to expose/restream directly-connected (i.e. USB or serial) cameras. Despite theoretical support for use of RTSP streams, testing has not proven Crowsnest able to utilize an RTSP feed from Thingino (or likely any other) cameras for integration.

The second is a series of camera services exposed through the Webcam frontend interface in Mainsail. Some of those (such as MJPG-STREAMER) allow the ingest of an MJPG feed, like that exposed through Thingino. However, performance on this service is extremely poor, and subject to frequent disconnects should no RTSP consumers connect to the camera (causing the camera to go to sleep).

This guide provides direction on setting up the current best option, being integration with the WebRTC (go2rtc) service. This provides acceptable framerates and resolution, alongside a stable feed to the camera.

Prerequisites

  • Thingino flashed to Wyze v2
  • A static IP / DHCP reservation on your router for the camera
  • Text editor that allows for changing the line-endings format. If you are on Windows, use Notepad++ to edit/save files. If you are on macOS, use BBEdit. The two important things either way are that the file extension is proper for each saved file, and that your line endings are set to Unix/LF, as Windows line endings tend to screw up scripts/config files saved for use on Linux. If you're comfortable with CLI, and are using Linux or macOS, just use nano or vim and you should be good 🙂
  • A running Mainsail instance that can reach your camera's IP address.

Instructions

  1. Load go2rtc on the Thingino camera. This largely follows the Thingino guide, but with changes to the go2rtc.yaml file. Full instructions listed below:
#!/bin/sh
/mnt/mmcblk0p1/go2rtc_linux_mipsel -c /mnt/mmcblk0p1/go2rtc.yaml -d
  • Put go2rtc.yaml into root of SD card, with the below contents (make sure to use an editor like Notepad++ (https://notepad-plus-plus.org), and ensure your line endings are set to Unix (LF). Also ensure your filename is saved as a .yaml file, and not something like .yaml.txt. ):
api:
  origin: "*"

streams:
  ch0:
    - rtsp://thingino:thingino@127.0.0.1/ch0#timeout=30
  ch1:
    - rtsp://thingino:thingino@127.0.0.1/ch1#timeout=30

webrtc:
  candidates:
    - stun:8555

(two notes here: 1) I removed the API user/pass. These are already being transmitted in the clear via HTTP, so I see almost no value in adding complexity, and clear text username/password is in some ways worse by potentially providing plain-text credentials to an attacker sniffing network traffic. If there was an easy way to do HTTPS and migrate credentials to headers I'd probably add back in. But I'm fine with not having them in the meantime. 2) I added origin: "*" to the API section. Without it, a request from a host that is not the camera itself (i.e. Mainsail) will be denied. There's certainly a safer way to accomplish this, but I accepted the trade-off given this whole setup is already not great on security). It should be said, be sure your camera is not reachable outside of your private network!

  • Check that you have the following files in the root of your SD card (it's okay if there are others, as long as you have at least these files):
go2rtc_linux_mipsel
run.sh
go2rtc.yaml
  • Put SD back in camera, and power it back on
  1. Verify that go2rtc is running properly by browsing to: http://cameraIP:1984/.

  2. Add a new Webcam in Mainsail, with whatever name you choose, and the below configuration:

    Service: WebRTC (go2rtc) URL Stream: http://cameraIP:1984/stream.html?src=ch0 URL Snapshot: http://thingino:thingino@cameraIP/image.jpg

  3. Verify upon addition that the camera feed displays properly in Mainsail (it may take a moment for the feed to display).

Troubleshooting

  • make sure you still include your Thingino creds in the URL snapshot. That's not coming from go2rtc. Probably could just use the frame.jpeg URL, but I chose to just use the Thingino one. Just laziness at this point causing me not to change it.
  • You can access go2rtc's web interface at http://cameraIP:1984. When there, one super useful thing to keep an eye on is the Log section at the top menu. When you pop open Mainsail, you can look there to see if there are any errors. That's how I was able to identify the CORS configuration issue and add the origin override to the go2rtc config.
  • Should you encounter lag or drops, it may be worth lowering the feed resolution in Thingino. I have noticed occasional drops for some reason, usually it takes much longer than 5 minutes for these drops when it actually gets going. Two things you could try are rebooting your camera, as well as adjusting down your resolution a bit. Make sure you’ve got a good connection between your pi/mainsail system, the cam, and your access point. Ideally things are hardwired but that’s not always that easy to do.
  1. Wiki Home
  2. About the Project
    1. Contributions
    2. Features
    3. Project Philosophy
    4. Releases
  3. Getting Started
    1. FAQ
    2. Glossary
    3. Hardware Identification
    4. Image Builder
    5. USB Boot Mode
    6. Ingenic USB Cloner
      1. OTG Booting
    7. PPSTRONG
    8. Installation: General
    9. Installation: No Tools Methods
    10. Resources and Links
    11. Support Community
    12. Troubleshooting
    13. UART Connection
    14. Updating Firmware
    15. Unbricking
    16. Web UI
  4. Supported Cameras
    1. Cameras
    2. 360 AP1PA3
    3. AliExpress LTIA‐37FJZ (Vanhua Z55 module)
    4. AOQEE C1
    5. Aosu C5L
    6. Cinnado
      1. Cinnado D1 2K
      2. Cinnado D1 3K
    7. Dekco DC5L
    8. Eufy
      1. Eufy E210 Outdoor Cam
      2. Eufy E220
    9. Galayou/Wansview
      1. Galayou G2
      2. Galayou G7
      3. Wansview W6
      4. Wansview W7/Galayou Y4
    10. Hualai (Wyze/Atom/Neos/Personal)
      1. Dafang Upgrading for Wyze v2
      2. NEOS conversion
      3. Personal Cam Pan and Cam 2
      4. Wyze Cam Pan V1
      5. Wyze Doorbell (V1)
        1. Chime Reverse Engineering
        2. Flashing VDB1 over UART (YMODEM)
        3. MQTT Control and Monitoring
      6. Wyze v2/Neos SmartCam/ATOM Cam 1
      7. Wyze v3
      8. Wyze Accessories
    11. iFlytek XFP301‐M
    12. Jienuo JN-107-AR-E-WIFI
    13. Jooan A6M
    14. LaView L2
    15. LongPlus X07
    16. LSC 3215672
    17. Sannce I21AG
    18. Sonoff Cam‐S2 and B1P
    19. TP-Link Tapo C100/C110/C111
    20. Wuuk Y0510
    21. Xiaomi
      1. Xiaomi Mijia1080p (SXJ02ZM)
      2. Xiaomi MJSXJ03HL
      3. Xiaomi Outdoor Camera AW200 (MJSXJ05HL)
  5. Configuration
    1. Administration
    2. Automation
      1. Configuring camera using runonce.sh script
    3. Cron jobs
    4. General
    5. LED Indicators
    6. Lighting
    7. Media Streaming Endpoints
    8. Network Storage
    9. Networking
      1. DHCP: Timezone
      2. Wireless Networking
      3. USB Direct w CDC (NCM)
      4. USB Ethernet Networking
      5. Remote Access
      6. VPN
        1. Tailscale
        2. Wireguard
        3. Zerotier
      7. Wi-Fi
        1. Self Hosted AP
        2. Tips and Tricks
      8. WWAN (Cellular)
    10. Night Mode
    11. ONVIF
    12. OSD (On-screen Display)
    13. Plugins
      1. Motion Guard
      2. Yandex Disk
    14. SSH Access Keys
    15. Wi-Fi Access
    16. Provisioning
    17. Streamer Bitrate Control
    18. Video Rotation
  6. Integration
    1. Home Assistant
    2. Frigate
    3. Ingenic A1/$15 NVR
    4. LightNVR
    5. Mobile Apps
    6. MQTT Integration
    7. Virtual Webcam on Linux
    8. Mainsail (Klipper)
  7. Development
    1. Booting
      1. Boot: MMC SD
      2. Boot: NFS
    2. CH341A Programmer
    3. RTSP Players
    4. Flash Chips
    5. go2rtc
    6. Porting Guide
    7. Ingenic Platform Capability Matrix
    8. Ingenic Image Processor
    9. ISP Reserved Memory (RMEM)
    10. Debugging
    11. Software
      1. Building From Sources
      2. Buildroot
      3. Toolchain
      4. Choice of JSON library
    12. SSL and TLS Web UI in thingino
    13. Tech Info
      1. Hardware
      2. PWM Info
      3. Supported Hardware
      4. T23 GPIOs
      5. T31 GPIOs
    14. U-Boot Cheatsheet
    15. Zeratul/Atlas/Tassadar
    16. Resources

Clone this wiki locally