BOS 4.x


New Features

  • Support for the Lumio Crystal Touch firmware up to version (used by the Planar PS4660T multi-touch screen)

  • New roKeyboard.SetLayout() method, which allows you to change the keyboard layout to many non-English configurations

Bug Fixes

  • Among synchronized players, the sync master player is now always set as the PTP master as well. This fixes playback issues (such as video freezing on the master player or video stuttering on sync slaves) that occur when a slave player become the PTP master.

  • An HTML page that includes an MP4 stream with seeking capabilities no longer operates slowly or causes the player to crash.

  • Exiting an HTML state at a certain moment (right after "sourceChangedCallback" prints a message) no longer causes the player to crash.

  • RTSP streaming now works when the server initializes with a connection address of

  • Players now respect the Content-Base field contained in the DESCRIBE response from an RTSP streaming server.


  • HDMI® input now supports video rotation (via the roVideoPlayer.SetTransform() method).

  • BrightScript no longer allows an interlaced video to be rotated 90 or 270 degrees with the roVideoPlayer.SetTransform() method. Interlaced video can still be rotated 180 degrees.

  • There have been further improvements to HTML JavaScript garbage collection, resulting in better long-term performance with fewer crashes.

  • Creating an HTML canvas that exceeds the maximum display area (1920x1080) no longer causes the player to crash.

  • An Audio Stream state no longer stops completely if the data rate of the stream falls below a certain amount. Playback will still stop if the data rate is low enough or falls to zero.

  • HTTP addresses for audio/video streams no longer require a trailing slash to work.


New Features

  • Support for image rotation (via the SetTransform() method on roImagePlayer and roImageWidget, as well as the SetTransform()/PlayStaticImage() methods on roVideoPlayer)

Bug Fixes

  • BrightWall now synchronizes better when a slave player boots up a long time after the master player.

  • Transitioning from a Live Video state to an image state no longer causes the display to go blank.

  • Displaying video and/or HTML in conjunction with an Advanced Ticker no longer causes the ticker to slow down after a period of time.

  • The display: none CSS attribute now works correctly with HTML <video> elements that are set to hwz=on.

  • Frame-rate issues related to resource-intensive HTML pages in version 4.8.88 have been fixed.

  • Restarting an HTML page containing a <video> element several times no longer causes a crash.

  • Attempting to change the CSS background of an HTML page using JavaScript no longer causes a crash.

  • Animating the position of an HTML <video> element that is set to hwz=on now works as expected.

  • Transparent images that contain HTML5 animation effects no longer display artifacts.

  • The 640x480x60p video mode is now supported over HDMI again.

  • The roVideoPlayer.SetFade() method works again with Live Video (HDMI In or RF In).

  • Displaying two video zones (one with a single video, the other with a playlist of videos) no longer has a chance of causing a crash.

  • A video window will now display correctly when there is a single video player and the roVideoPlayer.ToFront() methodis called on it.

  • Turning on a player with certain models of USB keyboard attached it will no longer cause an infinite reboot loop.

  • Combined keyboard/mouse USB devices are now detected correctly by the player.

  • The Diagnostic Web Server and the ifconfig command on the BrightSign shell now return the correct port number for the Telnet server in all cases.

  • The system no longer crashes if roXMLElement.GenXML() is called on an XML element that has a body but no name.


  • JavaScript garbage collection is now more effective, resulting in better long-term performance with fewer crashes.

  • Caching has been re-enabled for HTML widgets. This improves the reload times of many pages.

  • Displaying an HTML page in portrait mode now rotates only the HTML content, rather than rotating both the HTML content and the zone that contains it.

  • Custom BrightSign <video> attributes (described in the HTML5 Best Practices guide) are now accessible via JavaScript.

  • Attempting to create an HTML widget that is 0x0 in size no longer causes a crash.

  • HTML widgets now have a maximum image size. The system will not attempt to load images that are larger than the filesize equivalent of a 1920x1080x32bpp image.

  • Calls to roVideoPlayer.StopClear() once again work with HDMI input, allowing the input to be switched to another roVideoPlayer instance.

  • The roAssetPool and roSyncPool objects now support the MD5 algorithm for hashing files.


New Features

  • Support for the following multi-touch screens: ELO 3243L, Iiyama T1731SAW, and Nitere AR150-2

  • True video rotation at resolutions up to 1080p60

  • New streaming server capabilities: XD players can process requests from other devices on the network and deliver media via RTP, RTSP, and HTTP.

  • Support for chroma key and luma key video blending

  • Support for seeking to a certain video or audio time code

  • Support for video fading

  • Support for the 1680x1050x60p video mode

  • Progress bar widget

  • Support for HTTPS streaming

  • Enhanced ticker with scrolling capability

  • Universal Plug and Play (UPnP) support via BrightScript

  • Support for setting the recovery URL via DHCP Option 43

  • Telnet support for BrightSign and BrightScript shell prompts

Bug Fixes

  • HTML pages now display multiple JavaScript animations more consistently.

  • Newer models of USB external hard drive (including Seagate models) are now correctly recognized by XD players.

  • AC3 audio now plays correctly within the MP4 and MOV video containers.

  • HLS streams containing raw MP3 audio play correctly again.

  • Streamed .ts video files that do not contain audio data now play correctly.

  • The colors of custom mouse-cursor icons now display correctly.

  • Mouse-cursor icons are no longer obscured by various image and text widgets.

  • Players now correctly display certain fonts that would previously encounter clipping issues at the beginning of the text.

  • Some minor choppiness associated with text characters has been removed.

  • The screen no longer flashes if a video zone transitions into or out of HDMI input. This bug only occurred if there were additional zones other than the video zone.

  • Attempting to rapidly change channels on a DTCP-enabled RF input no longer causes the player to crash.

  • Attempting to play an AVCHD Lite video file no longer causes the player to crash.

  • Resizing an HTML <video> element while the page is being displayed no longer results in a single frame of video corruption.

  • The color values of standard video elements (i.e. those added to a looping or interactive playlist) and HTML <video> elements are now exactly identical.

  • Using an HTML widget to rotate a portrait mode (1080x1920) video no longer causes clipping problems.

  • HTML pages no longer randomly encounter frame-rate issues if the RequestAnimationFrame() JavaScript call is being used.

  • Drawing text over an image using the JavaScript filltext()function no longer results in a blue background. This bug only occurs if the combined width and height of the HTML canvas is larger than 65536 pixels.

  • Displaying an HTML page with the JavaScript console enabled no longer has a possibility of crashing the player.

  • HTML pages that are published directly to the player (without an autorun script) now correctly support z-ordering of video and graphics.

  • If the player is located behind a proxy, attempting to display a remote web page will no longer cause the player to crash.

  • If an roHttpEvent instance is created by the script rather than by the roHttpServer instance, there is no longer a possibility that the player will crash.

  • Unplugging a BP200/BP900 during a button-panel presentation no longer causes system instability.

  • Using roDateTime to set the clock backwards (to a negative time) no longer causes problems with event messages.

  • EndOfStream callbacks no longer have a chance of creating a deadlock with roVideoPlayer calls.


  • Mouse and touch events are now much more responsive and effective on resource-intensive HTML pages.

  • Players are now better able to handle large amounts of multi-touch events in a short period of time.

  • Mouse-cursor icon transparency is now fully supported for BMP and GIF image files.

  • The new roVideoMode.SetGraphicsZOrder() allows scripts to determine whether all graphics should be placed in front of, behind, or between two videos on the z-axis.

  • The SetRectangle() method has been added to roCanvasWidget, allowing scripts to resize the widget without destroying it.

  • While playing an HTTP stream, the roAudioPlayer object now posts an "end-of-stream" event if the player does not receive any data from the streaming server for several seconds. The script can then take appropriate action, such as generating a new connection request or switching to a different URL.

  • Streaming audio no longer fades in if playback is being looped.

  • The video and audio buffer settings for IP streaming can now be set within the URL (for example,

  • Players can now play video streams from a Matrox Maevex 5100 encoder. Note that audio support for this series of encoders is still a work in progress.

  • The default low-latency mode for video-only RTP streams can now be overridden by adding "buffering=true" to the stream URL (for example, "rtp://example:port/?buffering=true")

  • DNS lookups can now be used to specify a remote host involved with an roTCPStream instance.

  • New Video Time Code events can now be generated for a video during video playback.

  • The 1920x1200x60p resolution is now displayed using reduced blanking mode.

  • The scroll bars on HTML pages are now disabled by default.

  • The new roHTMLWidget.SetHWZDefault() method allows scripts to set the default HWZ mode for HTML <video> elements.

  • The new roHtmlWidget.SetLocalStorageDir() and roHtmlWidget.SetDatabaseDir() methods allow persistent storage of webpage data (with IndexedDB  or the JavaScript storage class) after power loss or network outage.

  • The GetUserData()method can now be called on messages sent from roHtmlWidget, allowing scripts to distinguish between events from different roHtmlWidget instances.

  • The file system of the player now fixes filenames that contain colons, which are not allowed in FAT systems. Since storage devices attached to a player usually need to be formatted using FAT32, this can help prevent problems caused by faulty file names.

  • SD card failure will no longer prevent the player from rebooting.

  • The new RestartScript() global function causes a player to search for a new autorun file without needing to reboot.

  • If a new autorun script is uploaded to the player from the Diagnostic Web Server, the player now loads the script without needing to reboot.

  • Initiating diagnostic operations using the Diagnostic Web Server no longer overwrites the autorun.brs file contained on the local storage of the player.

  • The IP address displayed on the BrightSign splash screen now updates if the player obtains a new DHCP lease.

  • BrightScript now supports 128-bit AES encryption through the new roBlockCipher object.

  • BrightScript now supports the PBKDF2 function through the new roPassKey object.

  • The player no longer crashes if a character pixel size larger than 1920x1080 is passed to roTextField during object creation. If no character pixel size is specified during object creation, the player attempts to use the largest pixel size that will fit within the text field.

  • BrightScript no longer allows two roIRRemote objects to exist at once.

  • Specifying an empty byte array for the roCecInterface.SendRawMessage() method no longer causes instability with the roCecInterface object itself.

  • The player is now better able to successfully rename invalid or corrupt .bsfw update files. The player also continues looking for a valid .bsfw update file if it detects and renames the initial update file.

  • Placing two different arbitrarily named .bsfw update files on a single SD card no longer causes an indefinite upgrade loop.

  • The BrightSign splash screen now disappears more crisply.



Bug Fixes

  • The appendChild() JavaScript method now works correctly within HTML pages. As a result, it is now possible to use more than two video instances (sequentially) in the same HTML archive using the removeChild() and appendChild() JavaScript methods.

  • Disabling the BrightSign splash screen at boot using roRegistrySection now works as expected.

  • In a custom script, EndofStream events no longer have a chance of locking up an roVideoPlayer instance.


  • If a player is locked up, it is now possible to force a crash dump without having access to the Diagnostic Web Server: To force a crash dump, keep the SVC button held down, press the Reset button, then immediately release both buttons.


New Features

  • Support for the Generaltouch RTL224

  • Support for Streamzap remotes

  • Ability to generate a screenshot of the presentation area

Bug Fixes

  • (4Kx42) Playing HTML video with HWZ enabled no longer causes performance degradation for CSS animations.

  • Switching from a video to an image using an interactive event no longer causes a brief graphics glitch.

  • Side-by-side and top-over-bottom 3D modes now work again on XD players.

  • HTML <video> elements that do not contain “height” or “width” attributes now display at their natural size.

  • There is no longer a color difference between video playback in a Video zone and video playback in a zone displaying HTML.

  • When rotated using a CSS transform, an HTML widget is now pivoted around the center, rather than the corner, of the widget.

  • HTML layout now works correctly if an HTML file is used with the default player autorun (i.e. not published using BrightAuthor or a custom autorun).

  • Icecast and SHOUTcast audio streams now begin playing faster and without glitches. These streams can now be mixed/crossfaded (using Enhanced Audio zones) with other audio sources as well.

  • Attempting to mix/crossfade a second audio source with an IP audio stream no longer causes the initial stream to stop abruptly.

  • Media End events now work correctly with two mixed/crossfaded audio sources that have different audio sample rates.

  • Playing multiple videos and displaying resource-intensive graphics at the same time no longer causes the screen to flicker.

  • The player no longer crashes if a user attempts to exit an HTML5 state that has touch capabilities and is playing video.

  • Multi-touch “swipe” gesture detection no longer locks up if a user attempts a swipe gesture that moves outside of the zone containing HTML5 content.

  • Performing numerous multi-touch/swipe events in a short window of time is now less likely to break the touch functionality of a presentation.

  • The touchscreen calibration process now works correctly with the NEC V462 multi-touch screen (a calibration workaround is no longer required).

  • If an incompatible player model is instructed to play an H.265 file, rather than crashing, it will not attempt to play the file.

  • WebInspector no longer crashes if used with HTML5 content that has the JavaScript console enabled.

  • Attempting to use Webkit-based time offset functions with multiple HTML widgets will no longer cause the player to crash.


  • The “hwz” attribute can now be enabled for HTML <video> elements. Note that there are limitations with the “hwz” attribute, as outlined in the HTML5 Best Practices guide.

  • You can now refresh an HTML page by calling the roHtmlWidget.SetUrl() method on the same URL.

  • Calibration resolutions have been improved for touchscreens that don’t use HID drivers.

  • Players no longer have a chance of crashing and rebooting if a connected USB device suddenly disappears.

  • Players can now support USB devices that switch between HID and CDC ACM modes.

  • The roTCPConnectEvent method now has a GetSourceAddress() method (see the 4.7 Object Reference Manual for details).

  • roTCPServer instances can now be set to only accept connections from within the player itself (by default, they can accept connections from anywhere).


Bug Fixes

  • Video playback issues no longer occur when Media End events are used to link two HTML5 states with <video> elements.

  • Bitmaps with 32bpp color depth and uninitialized alpha no longer display as black.

  • HTML5 widgets with two <video> elements now display video correctly during the first play through.

  • When a USB keyboard is connected to a player, the status lights of function keys (Num Lock, Caps Lock, Scroll Lock) now update correctly.

  • Certain models of Logitech wireless keypad now work with the BrightSign player.

  • Calling roRegex.Match() now returns the correct results in all circumstances.


  • Calling roHtmlWidget.SetAppCacheSize() no longer clears the application cache unless the cache size is being changed.

  • BrightScript now communicates network problems to any JavaScript elements running on the player.

  • It is now less likely for corrupt JPEGs to hang up the player indefinitely.

  • The Scroll() method has been removed from roHtmlWidget.


New Features

  • Players that are networked with SSL now correctly upload logs to the BrightSign Network. Note that this issue does not affect players that use plaintext HTTP connections.

  • Embedded HTML audio no longer causes the player to crash.

  • The position: fixed property now works correctly for an HTML element when the z-index property is used as well.

  • HTML5 pages now load cache manifest files correctly when they do not have a network connection.

Bug Fixes

  • Some HTTP video streams that used to take a substantial amount of time to load (20 seconds or more) now begin to play much more quickly.

  • The XD1230 is now better at triggering Media End on RF In states when it detects the loss of RF signal input.


New Features

  • Support for the HPCompaq L2206tm gesture touchscreen

Bug Fixes

  • Ticker and clock zone transparency works correctly again.

  • The audio/video streams from the HDMI or RF input no longer have a chance of drifting out of sync.

  • Attempting to display HDMI input in a zone that is smaller than the full screen will no longer cause the player to crash.

  • The player no longer crashes while switching back and forth between presentations when one of those presentations contains HDMI input.

  • An HTML5 <video> element displaying HDMI input now continues playing after the page is refreshed.

  • If the HDMI input is disconnected from an XD1230, an HTML5 <video> element displaying the input will no longer display random noise.

  • The roMediaStreamer.Source() method now accepts file paths for the SD card in the format of “SD:/” instead of “file:/storage/SD”.

  • Calling multiple end events at once on an Mjpeg state no longer causes a crash.

  • Certain images no longer have a pink tint when scaled to 1920x1080.

  • Presentations that contain only a Background Image zone no longer encounter problems with image corruption and jittering.

  • Mappings for the Back, Clear, and Enter keys on the Logitech N305 USB keypad work again.


  • The frame rate of HTML5 <video> elements have been improved. This is especially true for elements that are scaled or are inputting HDMI video.

  • The 3D rendering speeds of HTML5 pages with <video> elements have been improved.

  • The roMediaStreamer object can now be used to stream .ts files over RTP (in addition to UDP).

  • The default autorun can now detect and load index.html files, as well as any true-type font (.ttf) in the same directory. This allows you to display HTML5 pages without creating a project in BrightAuthor.

  • The roTimer object now has a SetElapsed() method that allows you to construct timed events that are independent from the system clock (and are thus immune to unexpected system time changes).

  • The source of an HTML <video> element can now be specified in a separate “src” element rather than as an “src” attribute of the video.

  • If the player does not receive a response ping from the default gateway, the system software will now check MAC addresses in the ARP table for the default gateway IP.


New Features

  • Substantial improvements to the HTML5 rendering engine:

    • Animated transforms and transitions (e.g. rotate, move, and skew) are now fully supported.

    • Canvas rendering and redrawing speeds have been improved.

    • HTML page transparency can be specified through CSS.

    • Transparency fades have been improved.

    • <video> elements now support input from the RF tuner (XD1230 only).

    • <video> elements work more smoothly with other layers of HTML5 content.

    • <video> elements can now be rotated.

  • Ability to upscale 1080p videos to 4K

  • Support for HLS , HTTP, UDP, and RTP video streaming playback (through HTML5 <video> elements and Video Stream states)

  • Partial support for RTSP streaming (i.e. only some streams work currently)

  • Gesture support for the following touchscreen models: Acer T232HL, eGalax 7200, Iiyama T2452MTS, Nextwindow Profile Touch 2S, Philips DL4230ET, Planar PS4200, Samsung TM40LBC (ME40B), and the Visual Planet single touch foil

  • Support for HTML5 <audio> elements

  • Partial .flv (Flash Video) container support

  • Commtec ProTUNE III transport steam support

  • JavaScript objects for BrightScript: This allows interactive events to be communicated directly to an HTML page.

  • Calibration support for multi-touch screens

  • Ability to create user-generated obfuscated passphrases using a “shared secret”

  • Ability to adjust the HDMI brightness level via roVideoMode.AdjustGraphicsColor() and roVideoPlayer.AdjustVideoColor()

  • Re-enabled video mode: 1600x1200x60p

Bug Fixes

  • The Background Image zone flickering bug has been fixed.

  • HTML 5 <video> elements with the <loop> attribute now loop correctly.

  • The Google Calendar JavaScript API now works correctly in HTML5 zones.

  • The HTML5 cache no longer stores old versions of pages after the player reboots.

  • The RF tuner on the XD1230 now correctly detects an invalid stream (0 Mb/s) as a condition for a Media End event.

  • The system software no longer locks up when it attempts to display a corrupt JPEG file.

  • Presentations set to output video at 1920x1080x59.94(i/p) now use the correct refresh rate instead of defaulting to 1920x1080x60(i/p).

  • Specifying a lengthy Time to display each line value for a Ticker zone and then publishing the presentation via Local File Networking no longer causes BrightAuthor to lock up.

  • Fade out and Fade in transitions work again.

  • The background image color no longer appears during Fade to new image transitions.

  • MPEG video files configured for top-over-bottom 3D playback now display correctly.

  • When a new application font is added, HTML5 content now updates correctly after the first refresh.

  • The system now increments and decrements USB audio volumes correctly.

  • When instructed to use unsupported RF tuner settings by the script, the system now scans using the default settings instead of crashing.

  • roGlobal.EjectDrive() now returns False when the system fails to eject a USB or SD storage drive.


  • HTML5 <video> elements now accept the following attributes:  pcmaudio, compadio, and multiaudio. These attributes allow you to manipulate the audio routing of <video> elements.

  • HTML5 pages now use proxy settings if they are specified during player setup.

  • New roNetworkStatistics BrightScript object allows you to retrieve both total and incremental network interface statistics.

  • The Info tab on the Diagnostic Web Server now displays the player name and description.

  • Connected to an appropriate device, GPIO pin 1 can now be used to receive NEC-formatted IR input.

  • Ethernet ping times for XD players have been significantly reduced.

  • Keyboard input events can now interpret symbols that are entered by Shift-modifying keys (e.g. “!”, “@”, “+”, “*”, “/”).

  • IR codes can now be sent using the Pronto hex format.

  • VESA HDMI capture modes are now reported through EDID. This provides more robust EDID support for computer monitors.

  • There are new SetAudioDelay() and SetVideoDelay() methods available for roVideoPlayer, as well as a new SetAudioDelay() method for roAudioPlayer objects.

  • The roVideoMode.GetResX() and roVideoMode.GetResY() methods now return the size of the graphics plane rather than the size of the video mode output. New GetOutputResX() and GetOutputResY() methods have been added to roVideoMode to return the size of the video mode output.