Skip to content

Integration: Frigate

Nils Schimmelmann edited this page Oct 11, 2025 · 35 revisions

Integration Guide: Configuring Thingino Camera with Frigate and go2rtc

This guide explains how to set up the Thingino open-source camera firmware to work with Frigate and go2rtc.

Prerequisites

  1. Thingino Camera Firmware: Ensure the latest firmware is flashed.
  2. Frigate: Latest version installed and operational.
  3. go2rtc: Installed as part of the Frigate setup (or as a standalone service).
  4. Network access to your Thingino camera. (Replace IP addresses and credentials as necessary.)

You'll find two supported audio configurations below. Choose one that best fits your setup.

Available Configurations


OPUS / WebRTC Live View (Recommended)

This configuration provides the best experience for live view with WebRTC, especially for users with modern browsers who want advanced features like two-way audio.

Configure go2rtc

go2rtc:
  streams:
    cam1:
      - rtsp://thingino:thingino@[CAMERA_IP]/ch0#timeout=30
    cam1_sub:
      - rtsp://thingino:thingino@[CAMERA_IP]/ch1#timeout=30
  webrtc:
    candidates:
      - [GO2RTC_IP]:8555
      - stun:8555
  • cam1: Points to the primary RTSP stream (ch0) using OPUS (the Thingino default audio codec).
  • cam1_sub: Points to the substream (ch1).
  • timeout=30 helps prevent disconnections on slower networks.

Configure Frigate

cameras:
  cam1:
    enabled: true
    ffmpeg:
      output_args:
        record: preset-record-generic-audio-aac
      inputs:
        - path: rtsp://127.0.0.1:8554/cam1?timeout=30
          input_args: preset-rtsp-restream-low-latency
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/cam1_sub?timeout=30
          input_args: preset-rtsp-restream-low-latency
          roles:
            - detect
            - audio
    onvif:
      host: [CAMERA_IP]
      port: 80
      user: thingino
      password: thingino
    live: 
      stream_name: cam1
  • Use preset-record-generic-audio-aac to transcode audio to AAC for recordings to work.
  • Assign appropriate roles for each stream: record, detect, and audio.
  • ONVIF config is optional but allows PTZ control

Test and Verify

  1. Restart the go2rtc and Frigate services.
  2. Open the Frigate Web UI and verify:
    • Both streams are displayed correctly.
    • Audio is functioning in the live view and recordings if desired.
  3. Use logs to check for errors like timeouts or audio codec mismatches.

If it is working, then Skip to Next Steps.


AAC / MSE Live View (Most Compatible)

This option provides the most compatible audio codec with all Live view technologies and browsers that support audio. Two-way audio works as well but activating the microphone deactivates the speaker temporarily.

Configure Thingino

Navigate to Thingino's WebUI:

  • Go to Settings > Streamer > Audio
  • Change the audio codec to AAC

You can verify the change using:

ffplay -rtsp_transport tcp rtsp://thingino:thingino@[CAMERA_IP]/ch0

Ensure that AAC is displayed in the stream metadata.

Configure go2rtc

go2rtc:
  streams:
    cam1:
      - rtsp://thingino:thingino@[CAMERA_IP]/ch0#timeout=30
    cam1_sub:
      - rtsp://thingino:thingino@[CAMERA_IP]/ch1#timeout=30
  • cam1: Points to the primary RTSP stream (ch0) using AAC audio codec from the previous step.
  • cam1_sub: Points to the substream (ch1).
  • timeout=30 helps prevent disconnections on slower networks.

Configure Frigate

cameras:
  cam1:
    enabled: true
    ffmpeg:
      output_args:
        record: preset-record-generic-audio-copy
      inputs:
        - path: rtsp://127.0.0.1:8554/cam1?timeout=30
          input_args: preset-rtsp-restream-low-latency
          roles:
            - record
        - path: rtsp://127.0.0.1:8554/cam1_sub?timeout=30
          input_args: preset-rtsp-restream-low-latency
          roles:
            - detect
            - audio
    onvif:
      host: [CAMERA_IP]
      port: 80
      user: thingino
      password: thingino
  • Use preset-record-generic-audio-copy to copy audio without transcoding for recordings.
  • Assign appropriate roles for each stream: record, detect, and audio.
  • ONVIF config is optional but allows PTZ control

Test and Verify

  1. Restart the go2rtc and Frigate services.
  2. Open the Frigate Web UI and verify:
    • Both streams are displayed correctly.
    • Audio is functioning in the live view and recordings if desired.
  3. Use logs to check for errors like timeouts or audio codec mismatches.

If it is working, then Skip to Next Steps.


Next Steps

Enable Two-Way Audio

  • Go to Settings > Streamer > Audio
  • Ensure that Output Enabled is turned on.
  • Restart the camera.

You'll also need to make sure your Frigate is being served via HTTPS. The easiest way to do this is by following Frigate's TLS documentation.

Optimize Connectivity

  • Increase timeout values if you encounter connectivity issues.
  • Use wired Ethernet where possible.
  • Switch preset-rtsp-restream-low-latency to preset-rtsp-restream if low latency is unstable.

Integrate with Scrypted (Optional)

  • Use Scrypted to bridge Frigate feeds to HomeKit Secure Video (HKSV).
    • Register go2rtc streams in Scrypted using the RTSP Camera Plugin:
      • Main stream: rtsp://[GO2RTC_IP]:8554/cam1
      • Substream: rtsp://[GO2RTC_IP]:8554/cam1_sub
  • Tune FPS and bitrate for HKSV compatibility:
    • Suggested: ch0 at 2000 kbps, ch1 at 500 kbps, both at 24 FPS.
  • Optional: Configure MQTT switches in Scrypted to follow Frigate motion events.
    • Add MQTT extension in Scrypted
    • Add mqtt: config block to Frigate to have it send motion events to MQTT.
    • Add Dummy Switch Sensors per Camera as a Custom Motion Sensor by subscribing to mqtt://[MQTT_IP]/frigate/cam1:
mqtt.subscribe({
    'motion': value => {
        return device.motionDetected = value.text === 'ON';
    },
});

mqtt.handleTypes(ScryptedInterface.MotionSensor);

Enable autotracking (for PTZ capable cameras)

If you are only following the instructions in the Frigate documentation, you'll get the following error: "ONVIF MoveStatus not supported". This is caused by an omission of the command to check the status in the ONVIF configuration file /etc/onvif.conf on your Thingino camera. To fix this, login with SSH and add is_moving=motors -b in the PTZ section of the file and restart the onvif process with /etc/init.d/S96onvif_discovery restart.

To complete the configuration, Frigate also needs a preset to have the camera return to its original position when it stops tracking. The command for this is: ptz_presets -a 0 preset_name <x> <y>. The x and y coordinates can be found by moving the camera to the intended position and executing the command motors -p. You can now use return_preset: preset_name in the Frigate configuration file.

For further reference:

  1. Wiki Home
  2. About the Project
    1. Contributions
    2. Features
    3. Project Philosophy
    4. Releases
  3. Getting Started
    1. FAQ
    2. Hardware Identification
    3. Ingenic USB Cloner
      1. OTG Booting
    4. PPSTRONG
    5. Installation: General
    6. Installation: No Tools Methods
    7. Resources and Links
    8. Support Community
    9. Troubleshooting
    10. UART Connection
    11. Updating Firmware
    12. Unbricking
    13. 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. Personalcam
      4. Wyze Cam Pan V1
      5. Wyze Doorbell (V1)
        1. Chime Reverse Engineering
      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
    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
    3. Cron jobs
    4. General
    5. LED Indicators
    6. Lighting
    7. Media Streaming Endpoints
    8. Network Storage
    9. Networking
      1. Wireless Networking
      2. USB Direct w CDC
      3. USB Ethernet Networking
      4. Remote Access
      5. VPN
        1. Tailscale
        2. Wireguard
        3. Zerotier
      6. Wi-Fi
        1. Self Hosted AP
        2. Tips and Tricks
      7. 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
  6. Integration
    1. Home Assistant
    2. Frigate
    3. Ingenic A1/$15 NVR
    4. Mobile Apps
    5. MQTT Integration
    6. Virtual Webcam on Linux
    7. 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