scorpiontahir02
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2016
07:57 AM
Pragmatically find out if the device is RokuTV?
How to pragmatically find out if the device running the app is a RokuTV (with built in Roku) not a Roku stand alone device or stick.
My Usecase:
I am using the below function to see if HDMI(display basically) is connected or not.
If HDMI is not connected, I activate a sleep mode of my app (where it does not play videos and wait for HDMI to be plugged in again) to save my and my users' bandwidth.
This method works great with Roku stand alone devices and sticks. But with RokuTV this method always returns false, hence my app is always in sleep mode.
My Usecase:
I am using the below function to see if HDMI(display basically) is connected or not.
Function IsHDMIPlugged()
Return CreateObject("roHdmiStatus").IsConnected()
End Function
If HDMI is not connected, I activate a sleep mode of my app (where it does not play videos and wait for HDMI to be plugged in again) to save my and my users' bandwidth.
This method works great with Roku stand alone devices and sticks. But with RokuTV this method always returns false, hence my app is always in sleep mode.
9 REPLIES 9

NewManLiving
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2016
09:07 AM
Re: Pragmatically find out if the device is RokuTV?
roDeviceInfo should give you everything you need about the device as well as other useful information
My Channels: 2D API Framework Presentation: https://owner.roku.com/add/2M9LCVC
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )
scorpiontahir02
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2016
09:26 AM
Re: Pragmatically find out if the device is RokuTV?
"NewManLiving" wrote:
roDeviceInfo should give you everything you need about the device as well as other useful information
Yes, I have looked into roDeviceInfo. ifDeviceInfo.GetModel seems to be the only method usable in this case (any other method that can be used???) But it only returns Roku's Model, and it states in the docs here, that ifDeviceInfo.GetModel returns 5000X for Roku TV. But my RokuTV's "Settings -> System -> About" displays 5303X. So I assume (I don't have the TV with me at the moment so cannot test) ifDeviceInfo.GetModel will return 5303X instead of 5000X. If so how can I differentiate with Model Number??? Probably all the models in the range of 5000 to 5999 are TVs????
belltown
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2016
10:28 AM
Re: Pragmatically find out if the device is RokuTV?
"scorpiontahir02" wrote:"NewManLiving" wrote:
roDeviceInfo should give you everything you need about the device as well as other useful information
Yes, I have looked into roDeviceInfo. ifDeviceInfo.GetModel seems to be the only method usable in this case (any other method that can be used???) But it only returns Roku's Model, and it states in the docs here, that ifDeviceInfo.GetModel returns 5000X for Roku TV. But my RokuTV's "Settings -> System -> About" displays 5303X. So I assume (I don't have the TV with me at the moment so cannot test) ifDeviceInfo.GetModel will return 5303X instead of 5000X. If so how can I differentiate with Model Number??? Probably all the models in the range of 5000 to 5999 are TVs????
According to the picture here: https://blog.roku.com/developer/2016/06/03/channel-certification-checklist-v2/#more-1201, under Roku Device List (New), 5XXX is the Roku TV, and 6XXX is the Roku 4K TV. That would be the pragmatic way to find out if the device is a Roku TV.

NewManLiving
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2016
11:18 AM
Re: Pragmatically find out if the device is RokuTV?
What does GetModelDisplayName return
My Channels: 2D API Framework Presentation: https://owner.roku.com/add/2M9LCVC
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )
Updated: 11-11-2015 - Completed Keyboard interface
The Joel Channel ( Final Beta )

TheEndless
Channel Surfer
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-14-2016
11:24 AM
Re: Pragmatically find out if the device is RokuTV?
"scorpiontahir02" wrote:
So I assume (I don't have the TV with me at the moment so cannot test) ifDeviceInfo.GetModel will return 5303X instead of 5000X.
All HD Roku TVs should return 5000X for ifDeviceInfo.GetModel, regardless of the real model number. I think the new UHD Roku TVs return 6000X.
My Channels: http://roku.permanence.com - Twitter: @TheEndlessDev
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)
Instant Watch Browser (NetflixIWB), Aquarium Screensaver (AQUARIUM), Clever Clocks Screensaver (CLEVERCLOCKS), iTunes Podcasts (ITPC), My Channels (MYCHANNELS)
EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-15-2016
12:22 PM
Re: Pragmatically find out if the device is RokuTV?
@scorpiontahir02 - ha, this is an interesting problem you are trying to solve!
When there is a better way, i am inclined to advise against checking by model#, the reason being we don't know if say model 7xxx will be a TV or set-top box. If determined to do so though, see viewtopic.php?f=34&t=94798&p=531121#p531106 on how not to do it :). Basically all there is to it is `if createObject("roDeviceInfo").getModel() > "5" then ...`
Now, i skimmed the doco and i think there is "a better way" to do the check you want:
Minor clarification: in my experiments, .getHdcpVersion() flips between "0.0" and "1.4", so you may ask why not check directly .getHdcpVersion()? Well, the thing is the upper value might not be "1.4" but say "2.2" - and the lower value is undocumented if it should be "0.0", or an empty string (or invalid or who-knows-what). Thus checking if HDCP is 0.1 or better seems more future-proof.
I am curious what does Roku* consider the righteous way to check if screen is connected/active?
When there is a better way, i am inclined to advise against checking by model#, the reason being we don't know if say model 7xxx will be a TV or set-top box. If determined to do so though, see viewtopic.php?f=34&t=94798&p=531121#p531106 on how not to do it :). Basically all there is to it is `if createObject("roDeviceInfo").getModel() > "5" then ...`
Now, i skimmed the doco and i think there is "a better way" to do the check you want:
function isScreenActive():
'NB: IsConnected() no good, always returns False on RokuTV - yet HDCP toggles, so use that
return createObject("roHdmiStatus").isHdcpActive("0.1")
end function
Minor clarification: in my experiments, .getHdcpVersion() flips between "0.0" and "1.4", so you may ask why not check directly .getHdcpVersion()? Well, the thing is the upper value might not be "1.4" but say "2.2" - and the lower value is undocumented if it should be "0.0", or an empty string (or invalid or who-knows-what). Thus checking if HDCP is 0.1 or better seems more future-proof.
I am curious what does Roku* consider the righteous way to check if screen is connected/active?
scorpiontahir02
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-16-2016
10:02 PM
Re: Pragmatically find out if the device is RokuTV?
"EnTerr" wrote:
When there is a better way, i am inclined to advise against checking by model#, the reason being we don't know if say model 7xxx will be a TV or set-top box.
I understand that, that is exactly why I wanted something better and more consistent between device models and firmware versions.
"EnTerr" wrote:
Now, i skimmed the doco and i think there is "a better way" to do the check you want:
function isScreenActive():
'NB: IsConnected() no good, always returns False on RokuTV - yet HDCP toggles, so use that
return createObject("roHdmiStatus").isHdcpActive("0.1")
end function
I haven't yet tested it on RokuTV (couldn't still get my hands on it), but unfortunately this method does not work for my Roku 2 XD (so probably for all the standalone devices). I tested by pulling out HDMI cable, here are the results (IsHdcpActive("0.1") still returns true when the cable is unplugged)
'with HDMI cable connected
BrightScript Debugger> print CreateObject("roHdmiStatus").IsConnected()
true
BrightScript Debugger> print CreateObject("roHdmiStatus").IsHdcpActive("0.1")
true
'with HDMI cable disconnected
BrightScript Debugger> print CreateObject("roHdmiStatus").IsConnected()
false
BrightScript Debugger> print CreateObject("roHdmiStatus").IsHdcpActive("0.1")
true
"EnTerr" wrote:
I am curious what does Roku* consider the righteous way to check if screen is connected/active?
I am curious too 🙂
@NewManLiving @TheEndless @belltown
Thanks for your suggestions, I will test today (or perhaps tomorrow) with RokuTV all the possibilities and will update what I find out.
scorpiontahir02
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2016
08:08 AM
Re: Pragmatically find out if the device is RokuTV?
Ok I am back with my findings (Sorry for being so late though). Here is the info I got from RokuTV.
So, according to this info, ifDeviceInfo.GetModel() returns 5000X for all the RokuTVs, no matter what the actual model is. Actual model is returned by ifDeviceInfo.GetModelDetails().ModelNumber. So, I think we can rely on ifDeviceInfo.GetModel() to be 5000X and 6000X for all the RokuTVs.
Thank you all very much for your help :).
<--------------------------------------------------------------->
hdmi.IsConnected() -> false
hdmi.GetHdcpVersion() -> 1.4
hdmi.IsHdcpActive() -> true
<--------------------------------------------------------------->
di.GetModel() -> 5000X
di.GetModelDisplayName() -> Sharp LC-43LB371U
di.GetPublisherId() -> 44b091a1-c9e6-5a35-ade2-09121fb14262
di.GetModelDetails() ->
<Component: roAssociativeArray> =
{
ModelNumber: 5303X
ScreenSize: 43
VendorName: Sharp
VendorUSBName: Sharp
}
<--------------------------------------------------------------->
So, according to this info, ifDeviceInfo.GetModel() returns 5000X for all the RokuTVs, no matter what the actual model is. Actual model is returned by ifDeviceInfo.GetModelDetails().ModelNumber. So, I think we can rely on ifDeviceInfo.GetModel() to be 5000X and 6000X for all the RokuTVs.
Thank you all very much for your help :).
EnTerr
Roku Guru
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
06-22-2016
01:50 PM
Re: Pragmatically find out if the device is RokuTV?
"scorpiontahir02" wrote:
... So, according to this info, ifDeviceInfo.GetModel() returns 5000X for all the RokuTVs, no matter what the actual model is. Actual model is returned by ifDeviceInfo.GetModelDetails().ModelNumber. So, I think we can rely on ifDeviceInfo.GetModel() to be 5000X and 6000X for all the RokuTVs.
Yes, that is well known - that RokuTV model# are starting with 5xxx, the news is that 4K RokuTVs are 6xxx. See the recent "Roku Device List (New)" table in a dev.blog post^ - it's the most detailed i have seen yet!
Like i said, currently you can check for RokuTV as simple as:
if createObject("roDeviceInfo").getModel() > "5" thenFor code robustness, obviously shouldn't check for "5000X" or "6000X" literals (
hint 1: your code must continue^^, regardless of surprising/future value and make the best informed decision
hint 2: what if you get "5000EU" returned, what say you - is that RokuTV or not?
hint 3: what if a year from now you get "6100X" - what says your gut, which is more likely this to be - a Roku device with or without HDMI cable? ).
I am fairly confident 5 and 6 series will all be RokuTVs, however i won't place bets on whether 7xxx (if there ever be one) would be a set-top box with HDMI output or a combo with TV. Which brings us to asking for somebody from Roku to chime-in on how to reliably check if TV screen is actually connected/active?
PS. the part that IsHdcpActive() cannot be relied on to detect if HDMI cable is unplugged in standalone boxes is unfortunate. Not a fan of checking version strings! Relatedly, remember why there was never a "Windows 9" version...
(^) Somewhat unfortunate, the table is [mis]placed under the otherwise unexciting (and in parts wrong!) post "Channel Certification Checklist Version 2.0" https://blog.roku.com/developer/2016/06 ... cklist-v2/
(^^) "The spice must flow..."