Roku OS 7.6 begins rolling out to Roku devices today. With this latest firmware update, we’ve introduced new developer tools and APIs to increase channel performance and improve the end-user experience.
How to update
The rollout process for Roku OS 7.6 will occur in phases throughout the next few weeks. We expect the firmware to be available on all current-generation Roku streaming players and Roku TV models before the end of May.
Roku devices will automatically update within 24 hours of the firmware becoming available. Alternatively, developers can check if the latest version is available from the Home screen by going to Settings > System > System update.
Performance optimization and debugging
- BrightScript profiler tool — A BrightScript profiler tool has been added to Roku OS to gather important metrics such as CPU usage and function “wall-clock” times. Use this tool to analyze performance and increase code efficiency. (BrightScript profiler documentation;visualization tool)
- Rendezvous logging — Information on the thread rendezvous can now be accessed from within the developer console. To toggle this log setting, telnet to the device port 8080 and enter “enhanced_dev_log rendezvous [on|off]”. (Testing and debugging Roku channels)
- Node operation performance metrics — Debug command “sgperf” has been added to port 8080 to track roSGNode operations by thread, whether it’s a create- or a subsequent-operation on an existing node, and whether it involved a rendezvous. (Testing and debugging Roku channels)
- Shorthand debugger commands — Shorthand alternatives can now be used to replace many debugger commands. (Testing and debugging Roku channels)
SceneGraph APIs & improvements
- TVOD APIs — New APIs have been added to the RSG ChannelStore component to support in-channel purchases. (ChannelStore docs, ChannelStore node sample, roChannelStore docs, roChannelStore sample)
- Remove flicker during channel launch — SceneGraph channels can add the line “splash_rsg_optimization=1” to their manifest to avoid flashing to a black screen between the splash screen and their initial screen. (Roku channel manifest)
- New function for cloning an entire node tree — The clone() function has been added to ifSGNodeDict to clone an entire node tree, or just the node depending on the boolean value passed. (ifSGNodeDict)
- Convert structures containing arrays into an RSG node tree — An “update” function has been added to ifSGNodeChildren. Use ifSGNodeChildren.update() to convert objects with arrays and/or associative arrays into node trees. (ifSGNodeChildren)
- Improved rotation animation — Fixed a rotation animation issue for the following device model groups: 2450X, 2500X, 27XXX, 37XXX, and 5000X. (SceneGraph animations; FloatFieldInterpolator)
BrightScript APIs & improvements
- Microphone APIs — Added a roMicrophone component and roMicrophoneEvent for capturing voice input from the user. Note that channels in the Kids & Family category can not use these APIs. (roMicrophone; roMicrophoneEvent)
- HTTP/2 support —roUrlTransfer objects now support HTTP/2. Among the benefits, HTTP/2 support allows for connection sharing, which is accomplished by establishing all roUrlTransfers that could share a connection from the same Task thread. (roUrlTransfer)
- Conditional compilation — BrightScript now supports conditional compilation, which allows blocks of code to be run only while set to true. (Conditional compilation)
- API to count node impressions — Two new fields — enableRenderTracking and renderTracking — have been added to RenderableNode to check whether a node is fully or partially rendered within the bounding rectangle of the screen. Developers can use this information to track node impressions.
- Import BrightScript files using relative URIs — Developers can now specify URIs relative to the XML component’s file for the <script> element’s “uri” attribute. (script)
- New functions added to ifDeviceInfo:
- GetGraphicsPlatform queries the device to see if it supports OpenGL or DirectFB. The function takes no arguments. The return is either “opengl” or “directfb” as a string. (ifDeviceInfo)
- GetClientTrackingId is an alias for the existing GetPublisherId function. The alternative function name is meant to help developers remember to use publisher ID instead of the device ESN. (ifDeviceInfo)
For more information on the recent SDK updates, review our developer documentation.
Roku OS 7.6 also introduced many great consumer features, with a focus on Roku TV. The complete list of consumer updates can be found on the Roku Blog.