Tapo camera adoption

From B-Wiki
Revision as of 12:44, 16 August 2026 by Tinel (talk | contribs) (Created page with "# Tapo C310 cameras not auto-adopting in UniFi Protect Wiki for the UniFi Dream Machine SE at Lunca Cetățuii (`192.168.2.1`). ## Problem Two TP-Link Tapo C310 cameras would not appear in UniFi Protect for automatic adoption. One known address was `192.168.2.35`. A later camera at `192.168.2.32` had the same behavior. Protect already had other Tapo cameras online (C500, C310, C510W, TC65). The missing C310s were on the LAN, but Protect never offered **Click to Adopt**....")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
  1. Tapo C310 cameras not auto-adopting in UniFi Protect

Wiki for the UniFi Dream Machine SE at Lunca Cetățuii (`192.168.2.1`).

    1. Problem

Two TP-Link Tapo C310 cameras would not appear in UniFi Protect for automatic adoption. One known address was `192.168.2.35`. A later camera at `192.168.2.32` had the same behavior. Protect already had other Tapo cameras online (C500, C310, C510W, TC65). The missing C310s were on the LAN, but Protect never offered **Click to Adopt**.

    1. Environment

| Item | Value | |---|---| | Console | UniFi Dream Machine SE (`UDM-SE-Lunca-Cetatuii`) | | LAN | `192.168.2.0/24`, gateway `192.168.2.1` | | UniFi OS / firmware | 5.1.26 | | UniFi Protect | 7.1.87 | | Wi-Fi SSID | `ReteauaLuiTinel` (not guest, L2 isolation off) | | Third-party discovery | Enabled in Protect | Tapo cameras in this network use a **Camera Account** created in the Tapo app (ONVIF/RTSP user). Protect already stored that account on the adopted Tapo cameras.

    1. Root cause

Tapo C310s **do not auto-adopt** in Protect the way UniFi cameras do. 1. **ONVIF is on port 2020**, not 80/443. Protect’s discovery scan often misses that port. TP-Link documents ONVIF `2020` and RTSP `554`. 2. **WS-Discovery is multicast.** These C310s are on 2.4 GHz across different APs (U6 LR, U6 Pro, AC Pro). Multicast enhancement on the SSID is off, so discovery packets frequently never reach the cameras. 3. **Same-subnet unicast still works.** The Dream Machine can reach ONVIF/RTSP on the camera even when a Windows PC on the LAN cannot (AP path / client isolation effects). Protect runs on the UDM, so manual adopt by IP works. This is not a dead camera and not a wrong Protect password. The cameras were up; Protect simply never found them.

    1. What was on the network

Three C310s exist. Two were already in Protect; the third (and later a fourth IP) were not. | Hostname / note | IP | MAC | AP (last) | Protect (before) | Protect (after) | |---|---|---|---|---|---| | C310 | `192.168.2.35` | `5C:E9:31:E0:34:07` | U6 LR | Missing | Adopted, connected | | C310 | `192.168.2.32` | `3C:52:A1:80:BA:81` | — | Missing | Adopted, connected | | C310 | `192.168.2.34` | `5C:E9:31:E0:21:93` | AC Pro | Already adopted | Connected, recording | | C310_414B83 | `192.168.2.36` | `5C:E9:31:41:4B:83` | U6 Pro | Already adopted | Connected, recording | Related Tapo devices that were already in Protect: C500 (`192.168.2.10`), C510W (`192.168.2.37`), TC65 (`192.168.2.38`). All of these have DHCP **fixed IPs** in UniFi Network.

    1. Solution
      1. Add a Tapo camera in Protect (UI)

1. In the Tapo app, enable third-party compatibility and set a **Camera Account** (same user/password on every camera if possible). 2. In Protect: **Settings → System → Discover Third-Party Cameras** (already on here). 3. Do **not** wait for auto-discovery. 4. Use **Advanced Adoption**. 5. Host must include the ONVIF port:

  ```text
  192.168.2.35:2020
  ```

6. Username and password = Tapo Camera Account (not the UniFi OS login, not Console SSH). Without `:2020`, Protect often returns invalid credentials even when the account is correct.

      1. What we did on this console

From the UDM, ONVIF port `2020` and RTSP port `554` were open on the missing cameras. They were adopted through Protect’s third-party camera API: ```http POST /api/third-party-cameras/adopt {

 "host": "192.168.2.35:2020",
 "username": "<tapo-camera-account>",
 "password": "<tapo-camera-account-password>"

} ``` Same call for `192.168.2.32:2020`. After adopt, RTSP over TCP was enabled (`forceTcp: true`) because these streams run over Wi-Fi. Display names set in Protect: - `Tapo C310 192.168.2.35` - `Tapo C310 192.168.2.32` Rename them to room/location names in the Protect UI if you prefer.

      1. Expected after adopt

- State: **CONNECTED** - Live view works - Recording mode: **always** - Error `SnapshotNotSupported` is normal for Tapo and already present on the other Tapo cameras - Recording can take a minute to start after a new third-party adopt

    1. Console SSH (how this was debugged)

This repo’s SSH helper talks to **UniFi OS Console SSH**, not Device SSH Authentication (APs/switches). 1. UniFi OS → **Settings → Control Plane → Console → SSH** 2. Username is always `root` 3. Put the console password in `credentials.env` (see `credentials.env.example`) 4. Connect: ```powershell .\connect.ps1 ``` or: ```powershell ssh udm-se ``` Do not commit `credentials.env`.

    1. Adding the next Tapo camera

1. Confirm the camera has a DHCP reservation. 2. From the UDM, check that `2020` and `554` are open on that IP. 3. Advanced Adopt with `IP:2020` and the existing Tapo Camera Account. 4. If live view works but the stream is flaky on Wi-Fi, enable **Force TCP** on the camera in Protect. Auto-discovery is unreliable for Tapo on this Wi-Fi. Treat **IP:2020 + Camera Account** as the standard procedure.