v3.0 Beta SDK available for download

We’re making the 3.0 Beta firmware available to all developers who request it. If your box isn’t already part of the developer beta group, send a private developer forum message to RokuKevin. Include the serial number of the Roku units you would like to run the 3.0 beta on.

It is very important that all developers regression test their applications on version 3.0 and note any incompatibilities. You may need to publish an update to your application to make it compatible with v3.0.

The SDK can be downloaded here:
http://rokudev.roku.com/roku_sdk_v30_20110420.zip

–Kevin

Thanks! I know the roAudioResource has been something I’ve been waiting for. :slightly_smiling_face:

The new BrightScript compiler/runtime seems a lot stricter than the old one. In general, that’s not a problem, and is actually a good thing moving forward, but I can see it causing a lot of problems for existing channels. For example, I’ve found two issues with some code of mine that worked fine on 2.9, but bails on 3.0.

One was a simple copy and paste error. I had copied a Function and changed it to a Sub without removing the return type from the declaration:

Sub MySubroutine(myParams As Object) As String

Definitely incorrect syntax, but the code runs fine in 2.9, but fails with a Type Mismatch in 3.0 when the subroutine exits.

The second issue actually caused the Roku to reboot immediately upon compilation. I launched the channel, and the box would crash and reboot every time. When sideloading, I got the stack trace, so I was able to find the issue. The published version of the channel, however, caused the catastrophic failure. The code that caused it looked something like this:

Sub ParseXml(node As Object)
    subNodes = node.links
    ...
    For Each node in subNodes
        ...
    Next
End Sub

The issue is obvious in that condensed listing, but it was buried in a rather lengthy parsing routine I had. Re-declaring/reusing “node” (an actual parameter) in the body of the routine really freaked the compiler/runtime out, and caused a reboot. 2.9 didn’t have any issues with it.

I actually like the new strictness, and think it will go a long way toward ensuring better/cleaner code, but I wanted to be sure to raise the awareness, as there’s certainly potential for it rendering some existing channels useless, particularly those that are no longer actively being maintained.

TheEndless,

Great point! The new BrightScript interpreter is one of the main reasons we want everyone to regression test their channels ASAP! The other main reason is the new mediaplayer. Both are definite upgrades, but do need testing for compatibility.

–Kevin

Haven’t found any crashes (yet) in my channels that don’t occur on 2.9. The issue I reported with DRM-free iTunes music purchases has not been resolved on 3.0 however.

-Joel

So far, no weird crashes for me. I’ve noticed faster video “loading” for my channel. I don’t if it’s better (or altogether skipping) network bandwidth calculations or if the process that reassembles the video segments is faster – but the loading screen is way faster on my box.

This has been compared against both current 2.9.x firmware and the 3.0 BETA firmware.

2.9.x Operates Properly, the bug is in the 3.0 BETA

For live HLS Streams, by live I mean ones that are ACTIVELY being built and the M3U8 file is growing.

Problem 1: The ROKU continues to request the M3U8 over and over and over ever. After it gets it, it requests it again, and again, if a new item is added, it will request the new TS, then go back to requesting the M3U8 repeatedly (as many as 10-15 times per second)

Problem 2: Voice and Video are out of SYNC (H264/AAC/32k Sample Rate) - happens 80% of time.

Problem 3: As with 2.9x versions, when this happens (Problem 2) (only happen 10% of the time), you can fix it by pressing the REFRESH/REPLAY button (circular arrow thing), it jumps back and all is synced in 2.9.x In 3.0, it jumps back, corrects the sync, once it receives a M3U8 with a NEW TS in it. It stops requesting anything and plays out its buffer and stops.

Shawn

I have had the opposite experience RE hls streams… Previously in 2.9 1533 the private channels using live hls streams were going out of sync and taking unusually long to buffer, now with 3.0 the syncing problem is gone and they are buffering quickly. I’m not sure if that’s the source or bc of the firmware but I thought I should mention it.

Also, since 3.0 beta, I have had 3 different movies in Netflix cause a freeze up then reboot. This is curious because it happens when I rewind then either pause then play or rewind then play. As I said it happened on 3 different occasions (all 3 times I tried it) since upgrading to 3.0, all during the rewind/reload sequence. The movies were “X-Men”, “Death of a Ghosthunter”, and (don’t laugh) “My Bloody Valentine”. Unfortunately I did not record the time in the movies it occurred. I can’t be certain it’s not just an issue with encoding on Netflix, but it is curious that it occurred all 3 times I performed that operation with 3 different, unrelated titles. Because of that I thought I’d mention it.

smlsr,

Please share the .m3u8 you are having issues with. If you PM me the link, we will take a look at it.

Thanks,

Kevin

I’m trying to run the webserver example. I’m on 3.0 build 2186. It installs correctly, and starts to the screen with “Web Server: Connections” at the top and “Retrieving…” centered. After that I try to browse to the roku ip and port (8888) specified in the code, and I can not connect. Here’s the debugger output:

BrightScript Debugger> ------ Running ------
GetXMLConfig: config 'Roku'
Server.fatal: bind(port 8888)
BrightScript Micro Debugger.
Enter any BrightScript statement, debug commands, or HELP.

Current Function:
060: function errx(obj as Object, message as String, code=0 as Integer)
061:     dbg(obj, "fatal", message, code)
062:     stop
063: end function
STOP (runtime error &hf7) in ...APR5olJ/pkg:/source/utils.brs(62)

062:     stop
Backtrace:
Function errx(obj As <uninitialized>, message As , code As Integer) As
   file/line: /tmp/plugin/PD...APR5olJ/pkg:/source/utils.brs(63)
Function server_init(params As ) As
   file/line: /tmp/plugin/PDAAAAPR5olJ/pkg:/source/server.brs(54)
Function initserver() As
   file/line: /tmp/plugin/PDAAAAPR5olJ/pkg:/source/server.brs(34)
Function main() As
   file/line: /tmp/plugin/PDAAAAPR5olJ/pkg:/source/main.brs(49)

Local Variables:
obj      &h0010 bsc:roAssociativeArray, refcnt=4
message  &h8010 bsc:roString (2.1 was String), refcnt=1
code     &h0002 Integer val:0
global   &h0020 rotINTERFACE:ifGlobal
m        &h0010 bsc:roAssociativeArray, refcnt=4
BrightScript Debugger> ------ Running ------
GetXMLConfig: config 'Roku'
Server.fatal: bind(port 8888)
Current Function:
060: function errx(obj as Object, message as String, code=0 as Integer)
061:     dbg(obj, "fatal", message, code)
062:     stop
063: end function
STOP (runtime error &hf7) in ...APR5olJ/pkg:/source/utils.brs(62)

062:     stop
Backtrace:
Function errx(obj As <uninitialized>, message As , code As Integer) As
   file/line: /tmp/plugin/PD...APR5olJ/pkg:/source/utils.brs(63)
Function server_init(params As ) As
   file/line: /tmp/plugin/PDAAAAPR5olJ/pkg:/source/server.brs(54)
Function initserver() As
   file/line: /tmp/plugin/PDAAAAPR5olJ/pkg:/source/server.brs(34)
Function main() As
   file/line: /tmp/plugin/PDAAAAPR5olJ/pkg:/source/main.brs(49)

Local Variables:
obj      &h0010 bsc:roAssociativeArray, refcnt=4
message  &h8010 bsc:roString (2.1 was String), refcnt=1
code     &h0002 Integer val:0
global   &h0020 rotINTERFACE:ifGlobal
m        &h0010 bsc:roAssociativeArray, refcnt=4

Could this be something on my end, or are some of the new bits exposed in the sdk still being enabled on the box in upcoming beta builds? I noticed the config.xml points to what appears to be an external drive, while the default brs code points to a pkg:/ file, index.html, that doesn’t exist. I’ve tried changing a few things related to that(plugging in a drive with html files, adding index.html to the pkg), and still get the same message.

I too had almost the same experience, i tried 8888, 8080, 80

and nothing just retrieving, and there wasn’t any readme or anything to give any details or setup. Check the docs as well, in fact this should have its own pdf file i would think.

Bump. Any official confirmation this is a Roku-side issue, or suggestions to try if it isn’t?

“gonzotek” wrote:
I’m trying to run the webserver example. I’m on 3.0 build 2186. It installs correctly, and starts to the screen with “Web Server: Connections” at the top and “Retrieving…” centered. After that I try to browse to the roku ip and port (8888) specified in the code, and I can not connect. Here’s the debugger output:

BrightScript Debugger> ------ Running ------
GetXMLConfig: config 'Roku'
Server.fatal: bind(port 8888)
BrightScript Micro Debugger.
Enter any BrightScript statement, debug commands, or HELP.

Current Function:
060: function errx(obj as Object, message as String, code=0 as Integer)
061:     dbg(obj, "fatal", message, code)
062:     stop
063: end function
STOP (runtime error &hf7) in ...APR5olJ/pkg:/source/utils.brs(62)

062:     stop
Backtrace:
Function errx(obj As

Kevin

PM’d you in regards to the issue with live HLS streams, can you let me know if you didnt receive?

shawn

is this code working
Know the Remote Control Codes for special screens:
o Dump Core: Home 5x, Up, Rewind 2x
it says so in the sdk 3 .SOme how i cant make it work?

learner,

That remote sequence sends a core file to Roku’s servers of the firmware. Those cores aren’t available to SDK developers…

If you want to see a BrightScript stack in your currently running channel, all you have to do is telnet to port 8085 and hit Ctrl-c to break into the debugger.

–Kevin

Hi, I’m new to Roku development, and I have a couple of basic questions about the move to 3.0:

  1. If I build my channel app with sdk3.0, does that mean a customer has to upgrade to firmware 3.0 to use my app?

  2. Will all Roku boxes auto upgrade to firmware 3.0 once it is released, or does the customer have to choose to upgrade?

  3. If upgrading to firmware 3.0 is optional for a customer, what percentage of customers usually upgrade to the newer firmware?

  1. If you use any 3.0 only api’s you should set the firmware dependency to v3.0 so that only v3.0 boxes see your app.
  2. When we launch v3.0, we will upgrade user’s boxes automatically.
  3. It is not optional. Rollouts of new firmware generally take about a week to cover all units.

–Kevin

Aside from the other issues (which still exist) that I have PM’d to you.

i have noticed the latest 2191 build takes longer to start streams. As you recall the streams I test with are LIVE ENCODED, so maybe its an effect of continuous polling for the M3U8 or something, really not sure, just wanted to make it a point, as for user experiences, slow starting up a video is never good when it can be avoided.

Shawn

“RokuKevin” wrote:
We’re making the 3.0 Beta firmware available to all developers who request it. If your box isn’t already part of the developer beta group, send a private developer forum message to RokuKevin. Include the serial number of the Roku units you would like to run the 3.0 beta on.

It is very important that all developers regression test their applications on version 3.0 and note any incompatibilities. You may need to publish an update to your application to make it compatible with v3.0.

The SDK can be downloaded here:
http://rokudev.roku.com/roku_sdk_v30_20110420.zip

–Kevin
the sample code for an android remote under the directory: \roku_sdk_v30_20110420\examples\source\ecp_client\android_remote\Roku seems to be missing a Retriever class. I keep getting following error:

Description Resource Path Location Type
Receiver cannot be resolved to a type Remote.java /Remote/src/com/roku/dvp line 70 Java Problem

Is there an updated file I can download?

I thought that you needed a Andriod phone for this to work as it’s Java!