=head1 Roku::ECP: Roku External Control Protocol =head2 Requirements: =over 4 =item Encode =item URI =item URI::Escape =item LWP::UserAgent =item FindBin =back Roku External Control Guide: http://sdkdocs.roku.com/display/sdkdoc/External+Control+Guide Roku also supports DIAL. http://www.dial-multiscreen.org/dial-protocol-specification =head2 SSDP According to http://sdkdocs.roku.com/display/sdkdoc/External+Control+Guide the Roku supports Simple Service Discovery Protocol (SSDP), which is the basis for UPnP. I think that what that example doesn't tell you is that SSDP uses UDP, not TCP, so run 'ncat' with "-u". Presumably need to send out the SSDP HTTP query out over UDP, while listening on UDP for incoming connections. By the same token, need to specify the port for the return connections to come in on. =head2 Deep Linking =head3 Channel Store http://myroku.dom.ain:8060/launch/11?contentID=28 11 is the Channel Store. 28 is the ID of a channel in the store. Also works with private channels, looks like. Doesn't work with string channel IDs, though. =head3 YouTube 837 is the YouTube channel The ContentID is the YouTube video ID. http://myroku.dom.ain:8060/launch/837?contentID=sfbr8Y6NYL4 =head3 Pandora Pandora channel ID: 28 http://myroku.dom.ain:8060/launch/28?contentID=40793346033480140 The contentID is the ID of a Pandora channel. =head3 Amazon Instant Video Channel ID: 13 There's probably a way to directly launch videos, but it's not as simple as 'contentID=<ASIN>'