Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Re: ECP Protocol changes with Roku 2?

Also,
I'm not sure if Roku development actually pays attention to threads like these but I know of tons of units that have been sold recently that were forced to buy v1 instead of v2 to get the product to work with Control4. Some elected to go with AppleTV instead. When amazon and other places run out of stock on v1, they will all go with other products.
There are over 1,000,000 installs out there so I wouldn't take this lightly.

At least reply and say, sorry we aren't going to either make netflix work properly (I realize they probably developed their own channel) or reopen what we turned off in V2 hardware so I can at least get to developing a driver for another product. Personally, I'm in a different position than Phil/Pirey4 as I can release a v1 driver and a v2 driver if you got the /keypress command working properly for grid based channels like netflix but what makes the most sense is reopening the legacy controls.
0 Kudos
gonzotek
Visitor

Re: ECP Protocol changes with Roku 2?

"pirey4" wrote:
Will either the /keypress commands that don't work in the Netflix channel on both the Roku 2 and Roku 1 be fixed or will the legacy telnet commands be fixed on the Roku 2?

I'd like to have my ECP application work uniformly on both the Roku 1 and Roku 2.

If you fix the /keypress commands the Netflix channel, will these fixes be rolled out to the Roku 1 and Roku 2 simultaneously? If the fixes aren't rolled out simultaneously, is there any way for an ECP app to tell what version of firmware a particular box is running? Without this, I won't be able to migrate until it is rolled out for both platforms since this would break Roku 1 users.

Thanks,

phil

I can't help with most of your questions, but you can at least tell what model number a box is (which at least tells you if it's a 1 or a 2) via ECP. If you pull and parse the xml from http://ROKU_IP:8060/ you get something like this, which has modelName/modelNumber nodes :

<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:ms="urn:microsoft-com:wmc-1-0">
<specVersion>
<major>1</major>
<minor>0</minor>
</specVersion>
<device ms:X_MS_SupportsWMDRM="true">
<dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMP-1.00</dlna:X_DLNADOC>
<deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType>
<friendlyName>Roku Streaming Player</friendlyName>
<manufacturer>Roku</manufacturer>
<manufacturerURL>http://www.roku.com/</manufacturerURL>
<modelDescription>Roku Streaming Player Network Media</modelDescription>
<modelName>Roku Streaming Player 3050X</modelName>
<modelNumber>3050X</modelNumber>
<modelURL>http://www.roku.com/</modelURL>
<serialNumber>ABC14R000XYZ</serialNumber>
<UDN>uuid:7F248787-B5DF-4C7B-8C9A-00DDEABCXYZ</UDN>
<UPC/>
<serviceList>
<service>
<serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType>
<serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId>
<SCPDURL>/RenderCtl.xml</SCPDURL>
<controlURL>/UD/?0</controlURL>
<eventSubURL>/?0</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType>
<serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId>
<SCPDURL>/ConnMgr.xml</SCPDURL>
<controlURL>/UD/?1</controlURL>
<eventSubURL>/?1</eventSubURL>
</service>
<service>
<serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType>
<serviceId>urn:upnp-org:serviceId:AVTransport</serviceId>
<SCPDURL>/AvTransport.xml</SCPDURL>
<controlURL>/UD/?2</controlURL>
<eventSubURL>/?2</eventSubURL>
</service>
<service>
<serviceType>urn:roku-com:service:ecp:1</serviceType>
<serviceId>urn:roku-com:serviceId:ecp1.0</serviceId>
<controlURL/>
<eventSubURL/>
<SCPDURL>ecp_SCPD.xml</SCPDURL>
</service>
</serviceList>
<presentationURL>/</presentationURL>
</device>
</root>
I'd probably check the modelNumber against a list of Roku1 models, and if it doesn't appear, assume it's a roku2. I don't think we'll get any more roku1 models, but there may be new roku2 models at some point, so this should make it somewhat future-proof.
Remoku.tv - A free web app for Roku Remote Control!
Want to control your Roku from nearly any phone, computer or tablet? Get started at http://help.remoku.tv
by Apps4TV - Applications for television and beyond: http://www.apps4tv.com
0 Kudos
EnTerr
Roku Guru

Re: ECP Protocol changes with Roku 2?

"pirey4" wrote:
Will either the /keypress commands that don't work in the Netflix channel on both the Roku 2 and Roku 1 be fixed or will the legacy telnet commands be fixed on the Roku 2?

I'd like to have my ECP application work uniformly on both the Roku 1 and Roku 2.


Isn't the use of /keydown followed by /keyup after delay a suitable alternative?
0 Kudos
pirey4
Visitor

Re: ECP Protocol changes with Roku 2?

"EnTerr" wrote:
"pirey4" wrote:
Will either the /keypress commands that don't work in the Netflix channel on both the Roku 2 and Roku 1 be fixed or will the legacy telnet commands be fixed on the Roku 2?

I'd like to have my ECP application work uniformly on both the Roku 1 and Roku 2.


Isn't the use of /keydown followed by /keyup after delay a suitable alternative?

If you want to reliably move a specified number of times in a particular direction, it is very difficult to do with /keydown and /keyup. For example, if you want to move exactly 42 titles to the right, how do you time the /keydown and /keyup sequences to do this? I put a lot of effort into trying to find a way to use the /keydown and /keyup but was unable to use these commands with reliable results.

Thanks,

phil
0 Kudos
EnTerr
Roku Guru

Re: ECP Protocol changes with Roku 2?

"pirey4" wrote:
"EnTerr" wrote:
Isn't the use of /keydown followed by /keyup after delay a suitable alternative?

If you want to reliably move a specified number of times in a particular direction, it is very difficult to do with /keydown and /keyup. For example, if you want to move exactly 42 titles to the right, how do you time the /keydown and /keyup sequences to do this? I put a lot of effort into trying to find a way to use the /keydown and /keyup but was unable to use these commands with reliable results.


Ah yes. I hear you loud and clear. Unfortunately Roku doesn't.

I remember testing scrolling (5x and 1x) on Netflix on queue of ~200 to scroll to a position and back and noted how unreliable it is. I tried different delays and in 10-20% of the cases it will not return to the exact same place it started. I am guessing the queue loop drops messages (overflow?). And since there is no way to inquire where in the queue current position is, that leads to bad UI experience.

I have asked for a queue-grid-goto(Y,X) kind of ECP command for Netflix channel in particular with not much of a response on that.
viewtopic.php?f=34&t=39386&start=15#p262557
0 Kudos
pirey4
Visitor

Re: ECP Protocol changes with Roku 2?

"EnTerr" wrote:
"pirey4" wrote:
"EnTerr" wrote:
Isn't the use of /keydown followed by /keyup after delay a suitable alternative?

If you want to reliably move a specified number of times in a particular direction, it is very difficult to do with /keydown and /keyup. For example, if you want to move exactly 42 titles to the right, how do you time the /keydown and /keyup sequences to do this? I put a lot of effort into trying to find a way to use the /keydown and /keyup but was unable to use these commands with reliable results.


Ah yes. I hear you loud and clear. Unfortunately Roku doesn't.

I remember testing scrolling (5x and 1x) on Netflix on queue of ~200 to scroll to a position and back and noted how unreliable it is. I tried different delays and in 10-20% of the cases it will not return to the exact same place it started. I am guessing the queue loop drops messages (overflow?). And since there is no way to inquire where in the queue current position is, that leads to bad UI experience.

I have asked for a queue-grid-goto(Y,X) kind of ECP command for Netflix channel in particular with not much of a response on that.
viewtopic.php?f=34&t=39386&start=15#p262557

A queue-grid-goto(Y,X) ECP command would definitely provide the functionality I need.

In the absence of this proposed command, I achieved reliable performance on the Roku 1 by stringing together sequences of legacy "press left", "press right", "press up", "press down" telnet commands since the "equivalent" commands documented in the Roku External Control Guide (/keypress/Left, /keypress/Right, /keypress/Fwd, /keypress/Rev) do not work on the Netflix channel. Unfortunately, these legacy commands no longer work on the Roku 2 (as well as the /keypress/Left, /keypress/Right, /keypress/Up, /keypress/Rev commands on the Netflix channel).

Consequently, my External Control Protocol application (DVPRemote), has less functionality when used with the Roku 2 than when used with the Roku 1.
0 Kudos
renojim
Community Streaming Expert

Re: ECP Protocol changes with Roku 2?

For telnet commands, try using only the first letter (e.g., press r) on the R2s. Works for me.

-JT
Roku Community Streaming Expert

Help others find this answer and click "Accept as Solution."
If you appreciate my answer, maybe give me a Kudo.

I am not a Roku employee.
0 Kudos
pirey4
Visitor

Re: ECP Protocol changes with Roku 2?

"renojim" wrote:
For telnet commands, try using only the first letter (e.g., press r) on the R2s. Works for me.

-JT

Thank you! What you recommended appears to work.

I did a little experimentation and found that concatenated single letter commands also appear to work on the Roku 2 but don't work on the Roku 1. For example, "press lllllrrrrr" goes left 5 posters and then right 5 posters which is where you started from. Assuming this was supported capability, it would actually be useful if it was provided on the Roku 1 as well.

I'd still like to see the /keypress commands fixed on the Netflix channel on both the Roku 1 and Roku 2 so that I could use only documented/supported ECP features in my ECP app.
0 Kudos