Tapo camera adoption

From B-Wiki
Jump to navigation Jump to search

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.

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.

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.

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.

Solution

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:
    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.

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: <syntaxhighlight lang="http"> POST /api/third-party-cameras/adopt {

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

} </syntaxhighlight> 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.

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

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:

<syntaxhighlight lang="powershell"> .\connect.ps1 </syntaxhighlight> or: <syntaxhighlight lang="powershell"> ssh udm-se </syntaxhighlight> Do not commit credentials.env.

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.