AlexxIT/go2rtc · error
tuya: no receivers
Error message
tuya: no receivers
What it means
Tuya Start guard: c.conn.Receivers is empty — no remote tracks have been attached to the WebRTC connection yet, so there is nothing to start streaming. Start was called before the offer/answer exchange produced receivers, or track negotiation failed silently.
Solutions
- Wait for the connection to be established and tracks negotiated before Start
- Check that the Tuya device actually sends audio/video tracks
- Re-dial the client if negotiation stalled
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pkg/tuya/client.go:416 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/e0c7cf801db5cfdc.
Report an issue: GitHub.
Appendix: source
Thrown at pkg/tuya/client.go:416
}
}
default:
sender.Handler = func(packet *rtp.Packet) {
c.conn.Send += packet.MarshalSize()
_ = localTrack.WriteRTP(payloadType, packet)
}
}
sender.HandleRTP(track)
c.conn.Senders = append(c.conn.Senders, sender)
return nil
}
func (c *Client) Start() error {
if len(c.conn.Receivers) == 0 {
return errors.New("tuya: no receivers")
}
var video, audio *core.Receiver
for _, receiver := range c.conn.Receivers {
if receiver.Codec.IsVideo() {
video = receiver
} else if receiver.Codec.IsAudio() {
audio = receiver
}
}
if c.videoSSRC != nil {
c.setHandler(*c.videoSSRC, func(packet *rtp.Packet) {
if video != nil {
video.WriteRTP(packet)
}
})
}View on GitHub (pinned to c245815e75)