AlexxIT/go2rtc · error
${res.Status}
Error message
${res.Status} What it means
Tapo newConn HTTP status guard: the multipart stream request to the camera returned a status other than 200 (res.Status becomes the message, e.g. '401 Unauthorized'). The stream channel could not be opened; auth failures and camera-side errors are the usual causes.
Solutions
- For 401: verify the Tapo account password / cloud credentials in the URL
- For 404: check the stream path and channel query parameter
- Retry after the camera reboots if it returns 5xx
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at pkg/tapo/client.go:103 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of AlexxIT/go2rtc@c245815e75 (2026-09-07).
Data as JSON: /api/errors/1bc96bf8fd53b8bf.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/tapo/client.go:103
query := c.url.Query()
if deviceId := query.Get("deviceId"); deviceId != "" {
req.URL.RawQuery = "deviceId=" + deviceId
}
req.Header.Set("Content-Type", "multipart/mixed; boundary=--client-stream-boundary--")
username := c.url.User.Username()
password, _ := c.url.User.Password()
conn, res, err := dial(req, c.url.Scheme, username, password)
if err != nil {
return nil, err
}
if res.StatusCode != http.StatusOK {
return nil, errors.New(res.Status)
}
if c.decrypt == nil {
c.newDectypter(res, c.url.Scheme, username, password)
}
channel := query.Get("channel")
if channel == "" {
channel = "0"
}
subtype := query.Get("subtype")
switch subtype {
case "", "0":
subtype = "HD"
case "1":
subtype = "VGA"
}View on GitHub (pinned to c245815e75)