feat(cast): Chromecast control channel (Play/Stop/Status) - #76
Open
susamn wants to merge 1 commit into
Open
Conversation
susamn
force-pushed
the
feature/cast-chromecast-channel
branch
from
August 28, 2026 02:54
d29edd9 to
8044e1a
Compare
susamn
force-pushed
the
feature/cast-mdns
branch
from
August 28, 2026 02:54
96472af to
5cd48bf
Compare
internal/cast/chromecast_channel.go implements the Cast channel protocol over a TLS socket: platform CONNECT, LAUNCH of the default media receiver (CC1AD845), CONNECT to its transport, LOAD of the stream URL as a LIVE audio/mpeg source, plus GET_STATUS on the receiver and media namespaces and STOP. Heartbeat PINGs are answered inline so a readUntil never stalls. Wires the three remaining chromecastProvider methods: - Play: dial -> launch -> load - Stop: dial -> receiver status -> STOP sessionId (no-op if nothing running) - Status: dial -> receiver status -> media contentId (for re-attach match) TLS uses InsecureSkipVerify -- Cast devices present a self-signed cert with no trustable CA, and the channel carries only playback-control messages; documented at the dial site. Tested against a scripted fake Cast receiver (real TLS listener, throwaway self-signed cert): LAUNCH+LOAD sequence and the loaded contentId, Status active/inactive, Stop issues STOP, PING interleave doesn't stall. No new dependencies. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JBJdG8Qenand5i16WT6BHG
susamn
force-pushed
the
feature/cast-chromecast-channel
branch
from
August 28, 2026 03:47
8044e1a to
a546e20
Compare
Owner
Author
|
Reworked the control channel after live testing against real devices:
Verified end to end: Note: one device here (a Nest Hub) silently drops TCP to its advertised Cast port 8009 from this machine — looks like AP client-isolation; 6 other devices work. Not a code issue. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on the mDNS PR. Completes the Chromecast provider.
chromecast_channel.go— Cast channel protocol over TLS: CONNECT, LAUNCH default media receiver (CC1AD845), LOAD stream URL as LIVE audio/mpeg, GET_STATUS (receiver + media), STOP. Heartbeat PINGs answered inline.TLS
InsecureSkipVerify— Cast devices present a self-signed cert with no trustable CA; channel carries only playback-control messages. Documented at the dial site.Tested against a scripted fake Cast receiver (real TLS listener, throwaway cert). No new dependencies.
After this lands, the Chromecast provider is fully functional; UI + CLI wiring is the next PR.