Table of Contents
Roku offers content owners and publishers the ability to create their own channels on the Roku devices and to make those channels available to Roku users. The Roku SDK documentation contains the necessary information for creating a Roku channel, including design tools and sample applications. The Roku Developer Tools License Agreement contains the terms of use of the Roku SDK and associated tools. After creating a channel application, content owners and publishers may upload the application to the Roku Developer Site for distribution to Roku users. They have to agree to the terms of Roku Application Distribution Agreement to distribute their content on the Roku Platform. The agreement stipulates commercial terms including revenue and/or advertising inventory revenue share.
There are two methods for distributing Roku channels through the Roku Developer Site after they have been uploaded: the Roku Channel Store for Public Channels, or as a non-certified channel.
Roku Public Channels
Public Channels created for the Channel Store should be those intended for the widest possible distribution, without restriction other than as required for business reasons, such as payment of a monthly subscription. Public channels should be submitted to Roku for acceptance into the Channel Store. If accepted by Roku, a channel is made available through the Channel Store to all Roku users.
Roku non-certified channels
A channel may be uploaded to the Roku Developer Site and made available to users through the non-certified channel mechanism. These channels are not available through the Channel Store, but can be accessed by Roku users by means of a unique channel access code provided to users. Channels intended for a very narrow audience, or carrying restrictions on access, such as membership in a group or organization, are better suited for non-certified channels. There is no Roku approval process necessary to publish a non-certified channel.
Welcome to the Roku Streaming Player Developer Guide
This Developer Guide is designed to help you quickly come up to speed on the Roku platform architecture, Channel Store, and the basics of how to develop and deploy an application to the Roku player in development mode, and to the Channel Store as a published application to end users. In this Developer Guide we refer to the development of new channels on the Roku player as "applications" since they consist of a set of scripts and related assets. Channels can access video streams, music, photos, or perform other functions enabled by the SDK.
Developing with the Roku SDK
The Roku SDK consists of a set of documentation and sample applications that enable channels to be developed for the Roku Streaming Player. To understand the Roku SDK, here are the key documents:
- The Developer Guide covers the architecture, programming language, development process, and channel deployment requirements.
- The BrightScript Reference Manual will bring you up to speed on the language and serves as a reference for the core components. BrightScript is the programming language used to develop channel applications on the Roku Streaming Player. BrightScript is a scripting language optimized to be the high level glue that ties together BrightScript Components and the Internet.
- The Component Reference guide describes the Roku Streaming Player platform components that expose APIs to BrightScript.
The entire documentation set includes the following:
Manual | Section | Description |
---|---|---|
Developer Guide | An introduction to developing for the Roku platform (this manual) | |
Device Registration and Linking | Linking the Roku Streaming Player channel to an account on your site | |
Streaming Specifications | Contains information on video encoding guidelines, trick play, and closed caption support | |
Debug Console Commands | Summarizes the debugging console commands | |
BrightScript Language Reference | BrightScript programming language reference information | |
BrightScript Component Reference | Reference information for the components exposed to the BrightScript programming language | |
Channel Packaging And Publishing | Information on creating a channel package and uploading it to the Developer Site | |
Eclipse Plugin Guide | Installing and using the Brightscript programming language in the Eclipse IDE | |
External Control Guide | Information on the external control protocol that allows control of the Roku player over the network | |
Web Service API | Information on the web service APIs developers can use to connect to the Channel Store | |
Roku Advertising Framework | Information on using the Roku ad insertion API | |
SceneGraph Core Concepts | A guide for developing applications using the Roku SceneGraph XML APIs | |
SceneGraph API Reference | Reference material for the Roku SceneGraph XML APIs | |
SceneGraph Samples | A repository of sample channels that use the Roku SceneGraph XML APIs | |
Release Notes | A list of the SDK changes for each Roku player firmware revision |
What Do I Need to Get Started?
Here's a list of the things you'll need to get started writing applications for the Roku Streaming Player:
- Roku Streaming Player with Software Release 2.7 or later
- Roku SDK (Development Kit Documentation and Sample Applications)
- Development Workstation with Text Editor and Terminal Application
- Standard Web Browser (Firefox, Internet Explorer or equivalent)
Roku Models and Features
With the release of the Roku 2 platform, Roku's product line has expanded to the point that there are significant capability differences between many of the models. While all the models have the same basic streaming video playback support, the hardware internals of the models will support different levels of game play. There is even a new SDK method, SetMaxVideoDecodeResolution()
(a member of roVideoScreen
or roVideoPlayer
), that only has an effect on units with an OpenGL implementation. Please see the BrightScript Component Reference for more details on this method.
The Roku models ship with incompatible power supplies as specified in the table below. If the wrong power supply is used, there is a risk of damaging the Roku unit when the power current of the supply is greater than what is specified for your Roku unit. On the other hand, if the power supply current is less than the Roku's specified power current, you run the risk of spontaneous reboots when the Roku unit cannot draw enough current.
When publishing your channel, you will have the opportunity to specify hardware requirements like "USB", "Roku 2", or "Bluetooth Game Remote". The tables below should help you in determining the target models for your channel.
Current Models
Roku Express | Roku Express+ | Roku Streaming Stick | Roku Streaming Stick+ | Roku Ultra | Roku TV | 4K Roku TV | 4K Roku TV | Roku TV | |
---|---|---|---|---|---|---|---|---|---|
Code Name | Gilbert | Gilbert | Amarillo 1080 | Amarillo 4K | Bryan | Liberty | Ft. Worth | Longview | Midland |
roDeviceInfo.GetModel() | 3900X | 3910X | 3800X | 3810X | 4660X | 5000X | 6000X | 7000X | 8000X |
CPU | ARM Cortex A53 | ARM Cortex A53 | ARM Cortex A53 | ARM Cortex A53 | ARM Cortex A53 | MIPS 1 GHz | ARM quad core | ARM quad core | ARM |
Accelerated Graphics API 1 | OpenGL ES 2.0 | OpenGL ES 2.0 | OpenGL ES 2.0 | OpenGL ES 2.0 | OpenGL ES 2.0 | N/a | OpenGL ES 2.0 | OpenGL ES 2.0 | OpenGL ES 2.0 |
RAM | 512 MB | 512 MB | 512 MB | 1 GB | 1 GB | 512 MB | 1.5 GB | 1 GB | 512MB (256M internal; 256M external) |
NVM (Flash) Storage | 256 MB | 256 MB | 256 MB | 512 MB | 512 MB | 256 MB | 512 MB | 512 MB | 512 MB |
HDMI/HDCP | 1.4/2.2 | 1.4/2.2 | 1.4/2.2 | 2.0a/2.2 | 2.0a/2.2 | 1.4 | 2.0/2.2 | 2.0a/2.2 | 1.4 |
Composite Video Out | N/a | Yes | N/a | N/a | N/a | N/a | N/a | N/a | N/a |
Max UI Resolution | 720p | 720p | 720p | 1080p | 1080p | 1280x720 | 1920x1080 | 1920x1080 | 720p |
Max Playback Resolution | 1080p | 1080p | 1080p | 4K60fps, HDR | 4K60fps, HDR | 1920x1080, 60fps2 | 3840x2160 | 3840x2160 | 1080p |
HDR | N/a | N/a | N/a | N/a | HDR 10 | N/a | N/a | HDR10 and/or Dolby Vision supported, varies by model | N/a |
Remote | IR + TV Power/Vol | IR + TV Power/Vol | WiFi | WiFi | WiFi w/HP | IR | IR, Trinity3 | Trinity RF (HP, Voice, Locator) | IR |
Supported Models
These models are no longer manufactured but still run the latest Roku OS and are still supported.
| Roku Streaming Stick | Roku Express | Roku Express Plus | Roku Premiere | Roku Premier Plus | Roku Ultra |
---|---|---|---|---|---|---|
Code Name | Briscoe | Littlefield | Littlefield | Cooper | Cooper | Cooper |
roDeviceInfo.GetModel() | 3600X | 3700X | 3710X | 4620X | 4630X | 4640X |
CPU | ARM Cortex A7 quad core 800 MHz | MIPS 900 MHz | MIPS 900 MHz | ARM Cortex A53 quad core 1.2 GHz | ARM Cortex A53 quad core 1.2 GHz | ARM Cortex A53 quad core 1.2 GHz |
Accelerated Graphics API 1 | OpenGL ES 2.0 | n/a | n/a | OpenGL ES 2.0 | OpenGL ES 2.0 | OpenGL ES 2.0 |
RAM | 512 MB | 512 MB | 512 MB | 1 GB | 1 GB | 1 GB |
NVM (Flash) Storage | 256 MB | 256 MB | 256 MB | 512 MB | 512 MB | 1 GB |
HDMI Version | 1.3a | 1.4 | 1.4 | 2.0a | 2.0a | 2.0a |
HDCP Version | 1.4 | 1.4 | 1.4 | 2.2 | 2.2 | 2.2 |
Composite Video Out | n/a | n/a | yes | n/a | n/a | n/a |
HDMI 720p Video Out | yes | yes | yes | yes | yes | yes |
HDMI 1080p Video Out | yes | yes | yes | yes | yes | yes |
HDMI 2160p Video Out | n/a | n/a | n/a | yes | yes | yes |
Max UI Resolution | 1280x720 | 1280x720 | 1280x720 | 1920x1080 | 1920x1080 | 1920x1080 |
Max Playback Resolution | 1920x1080 | 1920x1080 | 1920x1080 | 4K UHD, 60fps | 4K UHD, 60fps | 4K UHD, 60fps |
HDR | n/a | n/a | n/a | n/a | HDR10 | HDR10 |
S/PDIF Port | n/a | n/a | n/a | n/a | n/a | yes |
Wi-Fi | b/g/n dual-band | b/g/n | b/g/n | b/g/n/ac dual-band | b/g/n/ac dual-band | b/g/n/ac dual-band |
Ethernet Port | n/a | n/a | n/a | n/a | 10/100 Mbps | 10/100 Mbps |
USB Port | n/a | n/a | n/a | n/a | n/a | yes |
microSD Slot | n/a | n/a | n/a | n/a | yes | yes |
Enhanced Remote | Supported | n/a | n/a | Supported, not included | Supported | Supported |
Gaming Buttons | n/a | n/a | n/a | Supported, not included | Supported, not included | Supported |
Motion Control | n/a | n/a | n/a | n/a | n/a | n/a |
Private Listening | Supported, Roku Mobile App | Supported, Roku Mobile App | Supported, Roku Mobile App | Supported, Roku Mobile App | Supported, via remote and Roku Mobile App | Supported, via remote and Roku Mobile App |
Voice Remote Search | Supported, not included | n/a | n/a | Supported, not included | Supported, not included | yes |
| Roku LT | Roku 2 HD | Roku 2 XD | Roku 2 XS | Roku LT | Roku HD | Roku Streaming Stick | Roku 3 | Roku LT | Roku 1, Roku SE | Roku 2 | Roku Streaming Stick | Roku 2 | Roku 3 | Roku 4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Code Name | Giga | Giga | Giga | Giga | Paolo | Paolo | Jackson | Austin | Tyler | Tyler | Tyler | Sugarland | Mustang | Mustang | Dallas |
roDeviceInfo.GetModel() | 2400X | 3000X | 3050X | 3100X | 2450X | 2500X | 3400X, 3420X | 4200X | 2700X | 2710X | 2720X | 3500X | 4210X | 4230X | 4400X |
CPU | ARM11 600 MHz | ARM11 600 MHz | ARM11 600 MHz | ARM11 600 MHz | MIPS 400 MHz | MIPS 400 MHz | ARM11 600 MHz | ARM Cortex A9 dual core 1 GHz | MIPS 600 MHz | MIPS 600 MHz | MIPS 600 MHz | ARM11 600 MHz | ARM Cortex A9 dual core 1 GHz | ARM Cortex A9 dual core 1 GHz | ARM quad core |
Accelerated Graphics API 1 | OpenGL ES 2.0 | OpenGL ES 2.0 | OpenGL ES 2.0 | OpenGL ES 2.0 | n/a | n/a | OpenGL ES 2.0 | OpenGL ES 2.0 | n/a | n/a | n/a | OpenGL ES 2.0 | OpenGL ES 2.0 | OpenGL ES 2.0 | OpenGL ES 2.0 |
RAM | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 512 MB | 512 MB | 512 MB | 512 MB | 512 MB | 512 MB | 512 MB | 1.5 GB |
NVM (Flash) Storage | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 512 MB |
HDMI Version | 1.3a | 1.3a | 1.3a | 1.3a | 1.3a | 1.3a | 1.3a | 1.4 | 1.4a | 1.4a | 1.4a | 1.3a | 1.4 | 1.4 | 2.0 |
HDCP Version | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 2.2 |
Composite Video Out | yes | yes | yes | yes | yes | yes | n/a | n/a | yes | yes | yes | n/a | n/a | n/a | n/a |
HDMI 720p Video Out | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes | yes |
HDMI 1080p Video Out | n/a | n/a | yes | yes | n/a | n/a | yes | yes | n/a | yes | yes | yes | yes | yes | yes |
HDMI 2160p Video Out | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | yes |
Max UI Resolution | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1280x720 | 1920x1080 |
Max Playback Resolution | 1280x720, 60fps | 1280x720, 60fps | 1920x1080, 60fps | 1920x1080, 60fps | 1280x720, 60fps | 1280x720, 60fps | 1920x1080 | 1920x1080, 60fps3 | 1280x720, 60fps | 1920x1080, 60fps | 1920x1080, 60fps | 1920x1080 | 1920x1080, 60fps3 | 1920x1080, 60fps3 | 4K UHD, 60fps |
S/PDIF Port | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | n/a | yes |
Wi-Fi | b/g/n | b/g/n | b/g/n | b/g/n | b/g/n | b/g/n | b/g/n | b/g/n dual-band | b/g/n | b/g/n | b/g/n dual-band | b/g/n dual-band | b/g/n dual-band | b/g/n dual-band | b/g/n/ac dual-band |
Ethernet Port | n/a | n/a | n/a | 10/100 Mbps | n/a | n/a | n/a | 10/100 Mbps | n/a | n/a | n/a | n/a | 10/100 Mbps | 10/100 Mbps | 10/100 Mbps |
USB Port | n/a | n/a | n/a | yes | n/a | n/a | n/a | yes | n/a | n/a | n/a | n/a | yes | yes | yes |
microSD Slot | n/a | yes | yes | yes | n/a | n/a | n/a | n/a | no | n/a | no | n/a | yes | yes | yes |
Enhanced Remote | n/a | Bluetooth supported, not included | Bluetooth supported, not included | Bluetooth | n/a | n/a | Bluetooth | Wi-Fi Direct | n/a | n/a | Wi-Fi Direct | Bluetooth | Wi-Fi Direct supported, not included | Wi-Fi Direct | Wi-Fi Direct |
Gaming Buttons | n/a | Supported, not included | Supported, not included | Supported | n/a | n/a | Supported | Supported | n/a | n/a | n/a | Supported | Supported, not included | Supported | Supported |
Motion Control | n/a | Supported, not included | Supported, not included | Supported | n/a | n/a | Supported | Supported | n/a | n/a | n/a | n/a | Supported, not included | Supported | Supported |
Private Listening | n/a | n/a | n/a | n/a | n/a | n/a | n/a | Supported via remote | n/a | n/a | Supported via remote | n/a | Supported via remote, not included | Supported via remote | Supported via remote |
Voice Remote Search | n/a | n/a | n/a | n/a | n/a | n/a | n/a | Supported, not included | n/a | n/a | n/a | n/a | Supported, not included | Supported | Supported |
Notes
1 The OpenGL ES 2.0 API is currently only available under NDA to select partners.
2 Supports 720@60fps with some frame drops when video is not scaled to 1080. Should set ContentMetaData.maxFrameRate to 60 so that player doesn't scale the video to 1080.
3 Supports 60fps at 720p. Supports 30fps at 1080p.
Legacy Models
These models are discontinued and are no longer supported.
| Roku DVP | Roku SD | Roku HD | Roku HD-XR | Roku HD | Roku XD | Roku XD|S |
---|---|---|---|---|---|---|---|
Code Name | Griffin | Redwood | Redwood | Redwood | Pico | Pico | Pico |
roDeviceInfo.GetModel() | N1000 | N1050 | N1100 | N1101 | 2000C | 2050X, 2050N | 2100X, 2100N |
CPU | MIPS 400 MHz | MIPS 400 MHz | MIPS 400 MHz | MIPS 400 MHz | MIPS 400 MHz | MIPS 400 MHz | MIPS 400 MHz |
Accelerated Graphics API | n/a | n/a | n/a | n/a | n/a | n/a | n/a |
RAM | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB | 256 MB |
NVM (Flash) Storage | 64 MB | 64 MB | 64 MB | 256 MB | 64 MB | 64 MB | 256 MB |
Composite Video Out | yes | yes | yes | yes | yes | yes | yes |
S-Video Out | yes | n/a | yes | yes | n/a | n/a | n/a |
Component Out | yes | n/a | yes | yes | n/a | n/a | yes |
HDMI 720p Video Out | yes | no | yes | yes | yes | yes | yes |
HDMI 1080p Video Out | no | no | no | yes | no | yes | yes |
S/PDIF Port | yes | n/a | yes | yes | n/a | n/a | yes |
Wi-Fi | b/g | b/g | b/g | b/g/n dual-band | b/g | b/g/n | b/g/n dual-band |
Ethernet Port | yes | yes | yes | yes | yes | yes | yes |
USB Port | no | no | no | yes | n/a | n/a | yes |
Max. Channel Size | 750 KB | 750 KB | 750 KB | 2 MB | 750 KB | 750 KB | 2 MB |
FHD User Interface Requirements and Recommendations
The following are the requirements and recommendations for creating and using a 1080p user interface for your channel or application.
To create and use a 1080p user interface in a channel or application, you must set up the manifest file as described in Manifest File.
The following are the graphic image sizes and formats for a 1080p user interface.
Graphic Image | Size | Format |
---|---|---|
Channel logo | 540x405 pixels | JPEG |
Splash screen | 1920x1080 pixels | JPEG |
Roku Search channel buttons | 165x60 pixels | PNG |
Roku Search brand tiles | 147x113 pixels | JPEG |
Attachments:
architecturecrppd.png (image/png)
fig5.png (application/octet-stream)
fig4.png (application/octet-stream)
fig3.png (application/octet-stream)
fig2.png (application/octet-stream)
fig1.png (application/octet-stream)
architecture.png (application/octet-stream)