How do Time Servers (NTP and HTTP) work on BrightSign players?

Last Updated: May 22, 2017

BrightSign players support setting their time using the HTTP and SNTP time protocols. While SNTP requires port 123 to be open to set the time, HTTP does not.

See this FAQ to learn how to set different time protocols on BrightAuthor:connected or this FAQ for BrightAuthor. 

Time Configuration Workflow

The BrightSign player makes multiple attempts to connect to the time server at startup. If an attempt is successful, the player will set its clock and then communicate with the time server every 12 hours to recalibrate it.

If the initial attempt fails, and the response takes less than 8 seconds, the player tries again immediately. If the response takes longer than 8 seconds, the unit waits 2 minutes to try again. Each time there's a failure taking less than 8 seconds, the player waits a little longer to retry.

A change to a player's time server settings through the BSN.cloud causes the player to check the time server as soon as it downloads the updated sync file during the next point of communication between the BSN.cloud and the player. 

Notes

  • A time of 88:88 indicates that the time is not set properly on the player.
  • Setting the time via HTTPS is also supported. If the player is accessing the time server through a proxy server, then HTTP should be used because it will honor the proxy settings.
  • SNTP is a simplified implementation of the Network Time Protocol (NTP). SNTP interoperates with standard NTP servers.
  • The default clock-update interval of 12 hours can be modified using the roNetworkConfiguration object in BrightScript.

 

Have more questions? Submit a request

6 Comments

  • 0
    Avatar
    Jeff Marshall

    When I go to your time server ( http://time.brightsignnetwork.com/) there is just a reference to an image. 

    I Would like to know how this works because we have a lan that is not connected to the internet, but one Server will be. We would like it to serve pages to the internal lan with things like weather and time etc.

    Is the time somehow in this image?

    Is there something else I should do other than using a php script to file_get_contents(" http://time.brightsignnetwork.com/") and echo it out to the client?

  • 0
    Avatar
    BrightSign Team

    The unit must have Internet access in order to sync the time with the brightsign timeserver. You can point the unit to a different time server when creating setup files (Tools - Setup BrightSign Unit).

  • 0
    Avatar
    Jeff Marshall

    So what is the format of the time signal? Is BrightSigns expecting the unix epoch time code in a string? is it SNTP? Or NTP?

  • 0
    Avatar
    Jeff Marshall

    Sorry... I Didn't look above... I see that it is NTP... I will give that a try.

  • 0
    Avatar
    George Bean

    You have provisions to connect a GPS device to a USB port for geofencing. Is there a way to set the time using the GPS NEMA data stream time/date value? If not, inherent, can it be done with a script?

  • 0
    Avatar
    kris gale

    i was able to achieve time synchronization with a web server running on my LAN and 'cut out' our brightsigns' requests for http://time.brightsignnetwork.com/  (the project i'm currently working on requires an entirely 'closed' network, so any/all 'outside' requests are undesirable)

    as it turns out, all the units expect is an HTTP 200 OK and a response that contains a valid Date header, such as:

    Date: Wed, 18 Jan 2023 16:55:25 GMT

    you only need to execute the following bits of BrightScript once:

    systemTime = CreateObject( "roSystemTime" )
    systemTime.SetTimeZone( "EST" )

    where the time zone is whatever you prefer, and:

    netCfg = CreateObject( "roNetworkConfiguration", 0 )
    netCfg.SetTimeServer( "http://192.168.0.2" )
    netCfg.SetTimeServerIntervalSeconds( 300 )
    netCfg.Apply()

    where the wired configuration is assumed (0), the url is the server running on your LAN (or elsewhere) and the interval is of your choosing (the above is 5 minutes)

    for completeness sake, also execute this once:

    regSection = CreateObject( "roRegistrySection", "networking" )
    regSection.Write( "ts", "http://192.168.0.2" )
    regSection.Write( "tz", "EST" )
    regSection.Flush()

    do note that modifying the registry but not the network configuration doesn't "do it" and the unit(s) will continue to attempt requests at the default time server.

    i confirmed it is working as expected by inspecting the log via diagnostic web server, setting the system time on my web server, waiting 5 minutes, seeing the change to the 'wrong' time, and back again.

    per the above example, you'd see a line in the log that states:

    NetworkTime: server changed to 'http://192.168.0.2'

    as an additional check, i added a monitor for 'roNetworkTimeEvent' in my custom autorun.brs and the event object .WasSuccessful() method returns True, and the event is fired at the specified interval. you can do this yourself with something like:

    msgPort = CreateObject( "roMessagePort" )

    sysTime = CreateObject( "roSystemTime" )
    sysTime.SetPort( msgPort )

    while True
        msgEvent = msgPort.WaitMessage( 10000 )
        if type( msgEvent ) = "roNetworkTimeEvent" then
            isOK = "no"
            if msgEvent.WasSuccessful() then
                isOK = "yes"
            endif
            REM do something useful here to indicate status
        endif
    end while

    Edited by kris gale
Please sign in to leave a comment.
Can't find what you're looking for? Try to
Powered by Zendesk