Introduction: Create Your First Private Roku Channel

This tutorial is based on the Videoplayer Roku SDK sample.

Before you begin, here’s a list of the things you’ll need to install a private channel on the Roku Streaming Player:
1. Roku Streaming Player with Software Release 2.7 or later
2. Roku SDK (Development Kit Documentation and Sample Applications)
3. Text Editor and Terminal Application
4. Standard Web Browser (Firefox, Internet Explorer, Chrome, Safari)
5. FTP Program
6. Graphics Editing Program
7. Hosting Provider or CDN(Recommended)
8. File Compression Utility

Step 1: Account and Directory Setup

Create a Roku account if you have not done so.

Link your Roku device to your account. Go to

Sign up for a developer account at

Enable developer mode on Roku device. By default, the developer page is not enabled. You must enter the remote code using the Roku remote to enable it.
Home 3x, Up 2x, Right, Left, Right, Left, Right

To verify you have enabled developer mode, go to any web browser on your network and enter the IP address of your Roku device. To find the IP address of your roku device, go to home screen on Roku Player. Go to Settings –> Network. Once you enter the IP address in the web browser, you should see this window: see photos above.

Create a directory for testing SDK files. I created one called \rokudev.

Create another directory inside the one above for the SDK. I created one called \rokudev\rokusdk.

Download Roku SDK to your computer, then extract the compressed archive to the directory you created above.

Create two more directories inside the first directory for all the test files that will eventually be zipped and installed on your Roku device. I created one called \rokudev\roku3\, the name of my Roku device. My final directory tree looks like this: \rokudev\rokusdk and \rokudev\roku3.

Step 2: Development Keys and Password

Create developer RSA keys. The “genkey” utility will generate a set of Keys, Password and DevID necessary for encrypting your application. You will need a terminal emulator. I use Putty for Windows, but you can also use Command Prompt. Type: telnet 8080. When the connection has been made, at the prompt, type genkey. You may not get a response the first time. Try hitting return a couple of times, then type genkey again, it will start putting ….. ++++ type output on the screen. You will be presented with a Password and Dev ID like this: see photo above.

Save this info somewhere for later.

NOTE: In Mac OS X, you can use the Terminal app in the Utilities folder.

Step 3: Finding SDK Directories

Find the directory where you extracted your SDK. If you have been following my directory creating structure, it would be \rokudev\rokusdk. In that directory, there is an subdirectory called “examples”. In that directory there are two subdirectories “source” and “zips”. In the “zip” subdir, find and extract the directory “” into your testing directory. The testing directory I created was called \rokudev\roku3

Step 4: Hosting Provider Directories

Create directories on your hosting provider. This is where ftp comes in handy. Here is what I created, rokudev/examples/videoplayer. Inside videoplayer directory, I created xml and images.



Step 5: Content

Find or create content. You are going to need 2 images(SD and HD) and one video file. See Roku specs. I used jpg and .mp4 (H.264)

Supported Video Formats:.mp4 (MPEG-4 Pt 14), .mov .m4v, HLS: m3u8 & .ts
Supported Image Formats: JPG, JPEG, PNG, GIF

Use a graphics editing program to resize the images. The HD format image should be 290 pixels wide by 218 pixels high. The SD format image should be 214 pixels wide by 144 pixels high. Here are the files I created:

wordfloat2.mp4, sd_HCTV.jpg, hd_HCTV.jpg

Step 6: Editing SDK Files

Edit brightscript, xml and manifest files. The three files you will edit are:


This is the directory structure if you have used my method. The two .xml files will go to your hosting provider and the .brs file will be zipped and sent to your Roku device.

TIP:The Manifest file can change the description of your channel on the home screen. You can change the title and subtitle info to whatever you want. You can also add code to place a splash screen.

Here is my manifest file:
title=Samples For My Channel
subtitle=Video player example using category based XML feeds

Copy these two xml files to the testing files directory. For me that is \rokudev\roku3

Lets start with categories.xml in a text editor. In Windows I like to use Notepad++. In Mac OS I like to use Taco and Xcode (free, built in Mac OS)

In the categories.xml document, remove all but one category. Your document should look like this: See 1st photo above.

Open themind.xml in a text editor. In the document, remove all but one feed item. Point the streamURL to the mp4 you will copy to your hosting provider. See 2nd photo above.

Save the document

Next, lets edit the categoryFeed.brs file. If you have been following my directory creating structure, it would be:


At the top of the document, locate the line the reads:

conn.UrlPrefix = “”
and change it to represent the source for your xml file. Replace with your domain name. Here is the one I created:

conn.UrlPrefix = ""

Save the document.

Step 7: Hosting Provider Upload

Upload your files to your hosting provider. Your video file should go to the root level of the directory you created in step 4. Your two images should go in the images directory. The categories.xml and themind.xml files should go in the xml directory.

TIP: Some hosting providers will not play back certain media files. Check with your hosting provider about which mime types they support. See photo above.

Here is what my "web.config" file looks like, installed in the directory where my video file is. The information in this file was given to me by my hosting provider. If you are using a cloud service like Amazon Web Service, the web.config file is not necessary.

Step 8: Installing Channel on Roku

Navigate to the test files directory where you extracted the file from the SDK (where you edited the file “categoryFeed.brs”

On my workstation its : \rokudev\roku3\videoplayer

Select all the files here with a compression utility (7zip, WinZip and MacOS X built in compressor works well), and add them to an archive named by the directory they are in, this should result (in my case) in a file named

Open the Roku development application webpage by typing the IP address of your Roku. Browse to the zip file you just created, then click on Install. If successful, you should see the channel pop up on your Roku home screen. see photos above and video below.

Click on the Packager link at top left of the webpage. Create a name for this application and a version separated by a forward slash. Paste the password you got from the genkey command in step 2. Finally, click on the package button.

Click on the package link so you can download the package file to your testing directory. You will see a long random string of numbers and letters with a file extension of .pkg

TIP: Take your channel for a test drive. Check video playback, graphics and channel descriptions. If everything works, you can go back and customize the channel more by branding with your own graphics and logos.

Step 9: Channel Access

This step allows you to give anyone access to your private channel via a vanity access code.

Log into your account @

Click on “Manage My Channels” under My Channels. Under Private Channels, click on the link “Add Private Channels”.

On the first page, accept all the default Channel Store information, and click “continue” see photo above.

Fill in the information on the Add Private Channel - Describe your channel page, and select “Create”

You can add screenshots if you like, otherwise, click “Go Back”

Then, browse to the package file you downloaded from your Roku development application page, and click “Save”.

Once you see the “Publish” button enabled, click on it.

Congratulations, you now have a new private channel! Give anyone your vanity access code to view your channel on there Roku device.

Note: If you would like more information about how to develop for Roku, visit my website at


mikemanno (author)2017-07-03

This is a great tutorial but the info is quite a bit dated. Roku isn't accepting new SDK channels anymore, it's converted to DP and SceneGraph. There's a great article on Medium on Developing a Roku Channel by Phil Autelitano for the updated Roku platform

jhoya (author)2016-11-23

Hi Lacy,

Really good tutorial! Is it possible to make a private channel access code unique to each user? Some kind of access code which would be linked to each invited user's Roku device?


thugzbaby (author)jhoya2017-06-14

Not the channel access code, but you can make each user activate their roku to the channel with a unique id number that they enter in on your website.

llmcd (author)thugzbaby2017-06-18

yes. the process is called account linking. You can find more information here:

jeswinrebil (author)2016-12-07


This works awesome for normal videos which have runtime!!!

How about the live streaming videos,do i need to follow the
same and change the xml file stream url alone??? I have tried but this
is not working for live streaming url, is there any code i want to
change in order to play live news or live streaming videos.(.m3u8

rcotterman (author)2016-03-11

hello, i am making an audio only channel using a shoutcast stream which is working great except one problem, i can't make the name of the song display on screen. i am modifying the npr radio script, what's the best way to get this information to display on screen "in simple terms, if need be give me an example snippet of code" i have a text file on my server that i could use if pulling from the 7.html file is too difficult. thanks

BrandonB86 (author)2016-01-25

I want to set up a ROKU streaming channel. Sort of like a tv station that you can tune into at any time and view streaming video like TV.

Do I need to have a special hosting provider for this? Any suggestions?

llmcd (author)BrandonB862016-01-27

Hi Brandon. Thanks for checking out the tutorial. There are many ways to accomplish this. Send me more details on my support page located at

Click on the Submit a Request at the upper right of page. I want to make sure I give you the best suggestions for your project.

GavinS7 (author)2015-08-22

Thanks for this, easy to follow and a great introduction to Roku developing. Now to go have some more fun :) Thanks again, appreciate the effort.

llmcd (author)2015-07-01

A full update to this tutorial is coming soon. It will give you step by step video instructions for creating roku channels. It will go beyond the basics and dive into the Roku Brightscript code and custom roku channels.

llmcd (author)2015-07-01

A full update to this tutorial is coming soon. It will give you step by step video instructions for creating roku channels. It will go beyond the basics and dive into the Roku Brightscript code and custom roku channels.

RobertC24 (author)2015-06-09

RobertC24 (author)RobertC242015-06-09

Been stuck at the baby step of generating the genkey for weeks now. I'm about to give up. I've tried different browsers and telnet apps, both Mac and PCs, followed lots of advice from other helpful boards, and viewed many different instructions online on how to create your own channel.

But whatever I do, I can't connect to the Roku via telnet to get a genkey. The connection always fails.

As the genkey comes from the Roku box via telnet anyway, surely there is a way to get a genkey from the Roku directly, through a menu/info choice?

KevinR17 (author)RobertC242015-06-21

This is 2015. You shouldn't even know the word telnet unless you are a developer from the 90's.

llmcd (author)RobertC242015-06-10

I have also had much success with Putty for Windows.

llmcd (author)RobertC242015-06-10

Don't give up yet! Send me your Roku model specs and the list of apps you used to connect to your Roku player all to my helpcenter page at

Click Submit a Request on upper right corner of page.

AnthonyG5 (author)2015-04-16

How do I change my Private test page into a public channel without starting over. It is saying my Vanity code is already in use because i used it on my private channel

llmcd (author)AnthonyG52015-04-21

Hi Anthony. You can upload the same package file from the private channel. If you have not created a priavte channel via, on the Development Application Installer page, click on packager. Give your app a name and version#. Example: myapp/1.0

Put in your dev password and hit ok. Click on package file to download. Upload the Roku for approval.

AnthonyG5 (author)llmcd2015-04-21

Thank you. I was receiving a problem with it saying my Channel Name was already used in use because i used it for my private channel. Was trying not to have to change my Channel Name

collwyn.cleveland (author)2014-12-13

Hi Lacy,

This tutorial was very helpful, thanks for posting it.

I'm trying to develop an categorized music channel, and running into a wall. The structure is Genre-Artist-Videos. It seems that something similar to how Netflix categorizes TV shows into seasons and episodes would suffice, but there aren't any examples of episodic categorization in the samples in the SDK. Could you offer a bit of guidance?

llmcd (author)collwyn.cleveland2014-12-16

Hi Collwyn. Sounds like you could accomplish this with roPosterScreen (flat-episodic) component. Have you looked at the SimplePoster in the SDK? It's just one .brs file. You may be able to build out your categories with XML or JSON. There is some generic code you could find on the web, but you will have to sanitize and tweak the code to your liking if you are using it for non-profit purposes. Check out CCMixter. There is a GitHub page with the code. It may be what you are looking for. It's audio using MRSS feeds, but feeds can be used with video as well. I just created a channel for my son using rss feeds to pull gdata from YouTube for only the content he likes. Hope this helps.


james.valles.18 (author)llmcd2015-03-23

Hey there, I'm watching your videos on Vimeo! I like it, working on the .xml file now. I was wondering how do you get the xml file to automate from the videos I own and publish to Youtube. Is there away for the xml file to update on its own using a Youtube feed?

llmcd (author)james.valles.182015-03-25

Hi James,

Here is a link to a sample channel on Github.

You will need to clean up the code and insert the gdata from your YouTube playlists. I have done this for my son on Roku. I created a private channel that only pulls his favorite shows. If you do use the code for more uses, be sure to give credit to the author or consider making a donation. Are you familiar with obtaining the correct urls for your YouTube playlist and videos? If not, contact me on twitter, @mcdlmac or on my helpcenter page at Click on the submit a request button on the upper right of the page.

ChristopherN3 (author)2015-02-17

Very very nice tutorial. I just followed your step by step tutorial a month ago and was successfully published my channel. It was an amazing experience.And now just for sharing I found a very easy to create Roku Channnel, 3 minutes I got my channel published to, here is the link

Once again thank you for the great contents.

ralph.trynor (author)2015-02-05

Being new to this I did get everything to work but looking through the code I can not find how to change the color of the text or change the background. Can anyone help with this?

llmcd (author)ralph.trynor2015-02-09

Hi Ralph. I can help you offline. Send me more details of what you are trying to do. You can change the background color, OverhangSlices and Logos, but if you want to change the background image completely, you will have to change the canvas style.

klucas514 (author)2014-12-02

I need a channel

llmcd (author)2014-02-26

Hi. Sent you a detailed message about the this topic.

Dalank (author)llmcd2014-03-21

Thank you !! i got it , may i ask you more question please , i did used sdk and everything is ok but i want to know how to change back ground color or if i need to use image bg and another thing is how to add normal xml page contain only text like info instead of the mind.xml that contain image and movie data ? i tried to put text but after click still retrieving ...

llmcd (author)Dalank2014-03-23

Hi Dalank. I am little confused. Do you want to change the background color of the elements on the channel canvas? or background color for a splash screen? As for text, do you just want to create a channel with text only? Are you trying to parse xml files with metadata only and display that on screen? The more specific you can describe what you are trying to do, the better.

Dalank (author)llmcd2014-03-24

Hello !

I want to change the Theme colors and backgroud of splash screen and behind the categories , and yes i need to know how to do a simple xml file contain text after clicking in a category and my last question how to add a pasword for a category when they click on.

llmcd (author)Dalank2014-03-24

Hi Dalank. You can change background colors of your splash screen in your manifest.


As for the text element, it sound like you can add text by calling the roParagraphScreen component in your brightscript. I not sure about doing it with XML. I only use XML and JSON for video and audio URLs. This might be something you could discuss further in the Roku Forums site. There are some really smart folks there that could give you a better answer than I could.

Hope this helps.

Dalank (author)2014-02-22

Hello , thanks for this tutorial but i have a question , how can i re stream or retrieve feed from youtube videos to show it in my private channel?

mkecibi (author)2013-10-08

First of all thank you the explaniation very helpfull
I have a question : how to add a real steam url of a real channel to roku
and to get a stream url
Thanks in advance

frontlayer (author)mkecibi2013-10-15

In order to integrate an existing third-party live stream to a Roku channel, you would first need to make sure the stream is delivered using either HTTP Live Streaming (HLS) or Smooth Streaming (ISM), which are the only two supported technologies for live streaming in Roku.

But most importantly, you should consider that in order to re-broadcast the third-party live stream, the original broadcaster or copyright owner should provide a formal authorization to you. Roku is more than just a hardware device, and as a DMCA compliant platform, they will terminate any channel that is re-broadcasting third-party's content without a formal authorization.

You may find additional information about Roku's DMCA compliance at:

If you are interested in integrating your own Roku channel with a live streaming service that is specifically designed for it, including web-based channel management, you may also find additional information at:

llmcd (author)frontlayer2013-10-17

Thanks for addressing this. Very good information for folks on streaming any unauthorized content.

llmcd (author)mkecibi2013-10-09

Hello. I am not sure I understand what you are trying to do. Can you give me more details?

Astream (author)2013-09-12 offer Roku Video Streaming with their Astream Pro service.

About This Instructable




Bio: I provide digital media solutions for small businesses, start ups and individuals who need help creating and managing digital media projects. I am also the ... More »
More by llmcd:Google Chromecast-MacOS SetupCreate Your First Private Roku ChannelFun Backyard Cinema
Add instructable to: