Systems and methods for synchronizing device clocks

A media system, method, and a computer program product for synchronizing device clocks including a plurality of devices having device clocks, where each device is capable of independently selecting a primary clock device from the plurality of devices to coordinate clock synchronization of the remaining devices, e.g., secondary devices. Each device can utilize the same criteria or set of rules to select the primary clock device from among the plurality of devices after an initial exchange of data during a discovery phase. The selection of the primary clock device can be based on random or arbitrary selection, or based on at least one devices characteristic exchanged within the data obtained during the discovery phase. Once selected, the primary clock device coordinates a clock synchronization sequence with each secondary device until each secondary device clock is synchronized to within a predetermined threshold with the primary clock of the primary clock device.

BACKGROUND

This disclosure generally relates to media systems and methods, in particular, systems and methods for synchronizing device clocks of media devices.

Multi-device media systems, as well as left/right audio device pairs utilize internal clocks when communicating. Time stamp information is exchanged by the devices within a media system so that, e.g., audio may be generated by each device within a given tolerance and/or audio-video synchronization is within a given tolerance. Ideally, the tolerance between devices is small enough to not be noticeable by a user within the established zone or space the devices are arranged within. The tolerance may be larger for mutli-room systems as a user may not be able to, e.g., perceive an audible difference between rooms as well as between two audio devices within the same room. Upon initial set up of such systems, the time necessary to synchronize a first device with a second can take on the order of seconds to tens of seconds depending on the accuracy needed, for example, it takes more time to form and synchronize a group of left/right stereo devices within a single room than the time required to form and synchronize multi-room audio system. This increased time leads to degradation of the end user's enjoyment due to increased time until media is produced by the system, as well as inhibits other potential end user features, such as seamlessly moving audio from one location to another or moving audio between pre-established groups.

Additionally, due to the lack of precision of the internal clocks in electronic media devices, the devices within a predefined group may need to be periodically resynchronized to maintain accurate data transfer and media generation within the required tolerances.

Furthermore, conventional systems also allow devices to revert to a dozed state, e.g., a power-saving state, when not actively generating audio output. Within this dozed state, conventional systems are unable to transfer the amount of data necessary to resynchronized device clocks within the system.

SUMMARY OF THE DISCLOSURE

The present disclosure is directed to improved systems and methods for synchronizing clock devices of a media system within a network. The media system can include a plurality of devices having device clocks, where each device is capable of independently selecting a primary clock device from the plurality of devices to coordinate clock synchronization of the remaining devices, e.g., secondary devices. Each device utilizes the same algorithmic rules to select the primary clock device from among the plurality of devices after an initial exchange of data during a discovery phase. The algorithmic criteria for selection of the primary clock device can be based on random or arbitrary selection, or based on at least one devices characteristic exchanged within the data obtained during the discovery phase. Once selected it is the responsibility of the primary clock device to exit a power-saving state periodically, and coordinate a clock synchronization sequence with each secondary device until each secondary device clock is synchronized to within a predetermined threshold with the primary clock of the primary clock device. Additionally, similar criteria can be applied to the selection of a primary health device to maintain the “health” of the media system and the selection of a primary media distribution device responsible for sending, receiving, or otherwise distributing media content and data to each device.

In an example, there is provided a method for synchronizing device clocks including: discovering, over a network, a plurality of devices within a media system; determining a primary clock device of the plurality of devices, the primary clock device having a primary clock; sending a clock synchronization request from the primary clock device to a secondary device of the plurality of devices, regardless of whether media content is being rendered by any of the plurality of devices; and, initiating a clock synchronization sequence wherein the clock synchronization sequence is arranged to synchronize a secondary clock of the secondary device with the primary clock of the primary clock device.

In an aspect, each device of the plurality of devices includes at least one device characteristic is selected from: an internet protocol (IP) address, a network reliability metric, or a device power type.

In an aspect, determining the primary clock device includes: selecting the primary clock device from the plurality of devices, wherein the primary clock device has a lowest IP address of the plurality of devices; selecting the primary clock device from the plurality of devices based at least in part on the network reliability metric of each device of the plurality of devices; or selecting the primary clock device from the plurality of devices, wherein the primary clock device has a wall-powered device power type.

In an aspect, the method further includes: initiating an initial clock synchronization sequence between the primary clock device and each at least one secondary device, wherein the initial clock synchronization sequence is arranged to synchronize the secondary clock of the secondary device with the primary clock; entering, with the primary clock device and the secondary device a power saving state; and, exiting, with the primary clock device the power-saving state at a predetermined time interval; exiting, with the secondary device, the power saving state upon receipt of the clock synchronization request from the primary clock device.

In an aspect, the clock synchronization sequence is arranged to synchronize the secondary clock of the secondary device with the primary clock over a first time duration.

In an aspect, the first time duration is dynamic.

In an aspect, the method further includes: receiving, at the primary clock device, a confirmation that the secondary clock and the primary clock have entered a synchronous state.

In an aspect, the method further includes: determining, at a predefined time intervals, if the primary clock device is connected to the network.

In an aspect, if the primary clock device is not connected to the network, the method further includes: determining a new primary clock device from the plurality of devices connected to the network where each device of the plurality of devices shares a clock domain identifier.

In an example, a computer program product is provided, the computer program product stored on a computer readable medium which includes a set of non-transitory computer readable instructions for synchronizing device clocks that when executed on a processor is arranged to: discover, over a network, a plurality of devices within a media system; determine a primary clock device of the plurality of devices, the primary clock device having a primary clock; send a clock synchronization request from the primary clock device to a secondary device of the plurality of devices, regardless of whether media content is being rendered by any of the plurality of devices; and, initiate a clock synchronization sequence wherein the clock synchronization sequence is arranged to synchronize a secondary clock of the secondary device with the primary clock of the primary clock device.

In an aspect, each device of the plurality of devices includes at least one device characteristic selected from: an internet protocol (IP) address, a network reliability metric, or a device power type.

In an aspect, determining the primary clock device the set of non-transitory readable instructions are arranged to: select the primary clock device from the plurality of devices, wherein the primary clock device has a lowest IP address of the plurality of devices; select the primary clock device from the plurality of devices based at least in part on the network reliability metric of each device of the plurality of devices; or select the primary clock device from the plurality of devices, wherein the primary clock device has a wall-powered device power type.

In an aspect, the set of non-transitory readable instructions is further arranged to: initiate an initial clock synchronization sequence between the primary clock device and the secondary device, wherein the initial clock synchronization sequence is arranged to synchronize the secondary clock of the secondary device with the primary clock of the primary clock device; enter, with the primary clock device and the secondary device a power saving state; exit, with the primary clock device the power-saving state at a predetermined time interval; and, exit, with the secondary device, the power saving state upon receipt of the clock synchronization request from the primary clock device.

In an aspect, the clock synchronization sequence is arranged to synchronize the secondary clock of the secondary device with the primary clock of the primary clock device over a first time duration.

In an aspect, the set of non-transitory computer readable instructions are further arranged to: receive, at the primary clock device, a confirmation that the secondary clock and the primary clock have entered a synchronous state; and, determine, at predefined time intervals, if the primary clock device is connected to the network.

In an aspect, if the primary clock device is not connected to the network, the set of non-transitory computer readable instructions are further arranged to: determine a new primary clock device from the plurality of devices connected to the network where each device of the plurality of devices shares a clock domain identifier.

In an example, there is provided a system for synchronizing device clocks the system including: a plurality of devices connected to a network, the plurality of devices including: a primary clock device having a primary clock; and, a secondary device having a secondary clock, the secondary device arranged to receive a clock synchronization request from the primary clock device; wherein the primary clock device and the secondary device are arranged to enter a clock synchronization sequence, regardless of whether media content is being rendered by any of the plurality of devices, wherein the clock synchronization sequence is arranged to synchronize the secondary clock of the secondary device with the primary clock of the primary clock device.

In an aspect, each device of the plurality of devices includes at least one device characteristic selected from: an internet protocol (IP) address, network reliability metric, or a device power type.

In an aspect, selecting the primary clock device includes: selecting the primary clock device from the plurality of devices, wherein the primary clock device has a lowest IP address of the plurality of devices; selecting the primary clock device from the plurality of devices based at least in part on the network reliability metric of each device of the plurality of devices; or selecting the primary clock device from the plurality of devices, wherein the primary clock device has a wall-powered device power type.

In an aspect, if the primary clock device is no longer connected to the network, the system selects a new primary clock device from the plurality of devices connected to the network where each device of the plurality of devices shares a clock domain identifier.

These and other aspects of the various embodiments will be apparent from and elucidated with reference to the embodiment(s) described hereinafter.

DETAILED DESCRIPTION

The present disclosure is directed to improved systems and methods for synchronizing clock devices of a media system within a network. The media system can include a plurality of devices having device clocks, where each device is capable of independently selecting a primary clock device from the plurality of devices to coordinate clock synchronization of the remaining devices, e.g., secondary devices. Each device utilizes the same algorithmic rules to select the primary clock device from among the plurality of devices after an initial exchange of data during a discovery phase. The algorithmic criteria for selection of the primary clock device can be based on random or arbitrary selection, or based on at least one devices characteristic exchanged within the data obtained during the discovery phase. Once selected it is the responsibility of the primary clock device to exit a power-saving state periodically, and coordinate a clock synchronization sequence with each secondary device until each secondary device clock is synchronized to within a predetermined threshold with the primary clock of the primary clock device. Additionally, similar criteria can be applied to the selection of a primary health device to maintain the “health” of the media system and the selection of a primary media distribution device responsible for sending, receiving, or otherwise distributing media content and data to each device.

The techniques and systems described herein provide numerous benefits. For example, the proposed techniques result in a situation where the clocks of all of the devices of the media system (e.g., all media devices on a user's LAN/WLAN) are synchronized at all times (or at least are intended to be synchronized, which could take multiple iterations of the synchronization techniques described herein to achieve). Such a sustained or persistent synchronization, where the synchronization is within an acceptable tolerance (e.g., within 1-30 milliseconds (ms)) results in decreased media device zone/group/pair creation time and thus decreased time to media rendering (e.g., audio playback). In addition, the techniques and systems described herein enables permanent media device zone/group/pair creation, stable multiroom media in the case of device drop offs due to various issues (e.g., power loss), and other experience-enhancing features, such as seamlessly moving media from one device to another without interruption in media playback and enhanced forming of media device zones/groups/pairs via various control techniques (e.g., voice or virtual personal assistant (VPA)-based techniques, in-app based techniques, and from-device based techniques). Other benefits will be apparent in light of this disclosure. Note that in some implementations, the media system is an audio-only system (e.g., including two or more speakers) that manages synchronization for only audio data, while in other implementations the media system is a video-only system (e.g., including two or more displays) that manages synchronization for only video data, while in still other implementations the media system manages synchronization for audio and video data.

Use of the techniques and systems described herein can be detected in numerous ways. For example, use of the techniques and systems can be detected based on low time to media render for high accuracy playback between media devices that have not been previously combined in a zone/group/pair, such as for stereo-paired speakers which have not previously been paired together or for surround-sound systems that had not been previously grouped. Detection can also be based on low time to media for high accuracy playback between media devices that have not rendered audio since being power cycled. Detection can also be based on analysis of network traffic during times where media devices appear to be in a low-power (or dozed) state or not actively rendering media content, as the techniques described herein operate to synchronize devices even in such states, in at least some implementations. Detection via network traffic analysis is more robust when a system (e.g., media devices on a user's LAN/WLAN) contain three or more devices, because the periodic network traffic would be centralized to a single device—the primary clock device—which provides the reference clock for the system. Other ways of detecting use of the techniques and systems described herein will be apparent in light of this disclosure.

Turning now to the figures,FIG. 1is a perspective schematic view of a space S within which a media system100is provided. Media system100includes a router102arranged to connect a plurality of devices104A-104E to a network106within space S. Router102is intended to be a network router capable of receiving and forwarding data packets within a network or networks106. Additionally, router102includes a Dynamic Host Configuration Protocol (DHCP) server or service capable of automatically providing and assigning local internet profile (IP) addresses to each device, e.g., devices104A-104E, within the network106or networks106. Plurality of devices104A-104E are intended to include any device capable of sending and receiving data packets containing media data, for example, data related to audio, video, and/or image applications and can include but are not limited to: televisions, smart televisions, wearable audio devices (such as headphones, earbuds, or smart glasses), sound bars, stand-alone speakers, speaker systems, smart hubs, personal computers, portable personal computers, smart phones, and tablets. Additionally, each device of plurality of devices104A-104E is capable of entering and exiting a power-saving state138(discussed below) and entering and exiting an operating state140(discussed below). In one example, as illustrated inFIGS. 1 and 2, device104A is a sound bar, device104B is a portable wireless speaker, device104C is a smart TV, and devices104D and104E are left and right speakers, respectively. Note that five devices are used inFIG. 1for illustrative purposes only, as the techniques described herein can be used with as few as two devices and up to an unlimited number of devices. Therefore, “plurality of devices” as used herein includes “at least two devices” or “two or more devices” or “multiple devices”. Network106is intended to be a local area network (LAN) or a Wireless Local Area Network (WLAN) intended to connect, via wired connections, wireless connections, or a combination of wired or wireless connections, the plurality of devices104A-104E to router102and/or to each other within network106. However, it should be appreciated that network or networks106are not limited to local networks, for example, networks106can include servers, other devices, and routers outside of the local network and can be connected to the internet I (as shown inFIG. 2). Space S is intended to be a room or a plurality of rooms within range of the LAN or WLAN network106.

Each device of plurality of devices104A-104E includes at least one device characteristic108(shown schematically inFIG. 4). Device characteristic108can be selected from at least one of: a local IP address110(assigned by, for example, the DCHP server/service of router102), a network reliability metric112, a device power input type114, or a clock domain identifier162(discussed below). The network reliability metric112can include information related to an upload speed of a particular connection, a download speed of a particular connection, the Received Signal Strength Indicator (RSSI) corresponding to a particular connection, the connection type, operating physical rate, or packet error/loss rate. The connection type could include, e.g., whether the connection type utilizes an operating frequency of 2.4 GHz or 5.0 GHz, or whether the connection type uses a data cable (i.e., data cable116) to transfer data, for example, where data cable116is an Ethernet cable. In such an example situation, an ethernet-cable connection type would be preferred over a 5.0 GHz connection type, and both of those connection types would be preferred over a 2.4 GHz connection type, thereby establishing a connection type hierarchy. The packet loss rate and consistency of operating physical rate of the link can be used to determine scalability and/or accuracy of the synchronization (e.g., to determine how many media devices can be included in a given synchronized system). The device power input type114can include information as to whether a particular device utilizes a battery, capacitor, super capacitor, or a standard alternating current (AC) or direct current (DC) power input, e.g., from a connection to a wall outlet power source118as shown inFIG. 1. Additionally, each device of plurality of devices104A-104E can include the ability to produce sound, i.e., an audio playback120. Audio playback120may correspond to data related to music, voice, or audio associated with digital or analog media, and may be produced by a transducer or other equivalent speaker components known in the art. Note that although the plurality of devices104A-104E are primarily described herein in the context of being audio devices or at least being capable of audio playback, the techniques also apply to synchronization for video and/or image data. Therefore, each of the plurality of devices104A-104E could include at least one of audio playback capabilities, video playback capabilities, or image display capabilities, and the techniques described herein are not intended to be limited to cover clock synchronization for only one of audio, video, or images unless otherwise explicitly stated.

As illustrated schematically inFIG. 2, network106includes plurality of devices104A-104E connected via router102. Each device of plurality of devices104A-104E is arranged to communicate with router102and/or arranged to communicate with each other. It should be appreciated that each device can be arranged to communicate with the other devices of plurality of device104A-104E via router102or directly with each other using at least one communication protocol122. Communication protocol122can be selected from: WiFi (IEEE 802.11 a/b/g/n/ac/e), Bluetooth Classic, Bluetooth Low-Energy (BLE), Radio Frequency Identification (RFID), ZigBee, Z-Wave, 6LoWPAN, Thread, WiFi-ah, 2G, 3G, 4G, 5G, LTE Cat 0, LTE Cat 1, LTE Cat 3, Near Field Communications (NFC), Simple Service Discovery Protocol (SSDP), Zero-configuration networking tools or protocols (zeroconf), or any other wired or wireless protocol capable of sending and receiving data between each device of plurality of devices104A-104E and/or router102.

It should be appreciated that within network106, each device can send and/or receive data or information relating to each device of plurality of devices104A-104E, for example, data or information relating to each device's device characteristics108, and store each device's device characteristics108in an internal memory of each device (discussed below and illustrated inFIG. 4). It should be appreciated that this discovery phase DP can utilize a different protocol to send and/or receive device information and device characteristics108than is used to stream, send, or receive media data to generate an audio playback120(discussed below), for example, the discovery phase DP could utilize SSDP protocols or zeroconf tools to discover the devices within network106and exchange device characteristics108between each device of plurality of devices104A-104E. During the discovery phase DP, as illustrated inFIG. 3, the router102or the network server sends and receives device information via communication protocol122to update a product list PL stored in the memory of each device of the plurality of devices104A-104E. As illustrated inFIG. 4, during discovery phase DP, each device can store within memory device characteristics108of each device of plurality of devices104A-104E. AlthoughFIG. 4only illustrates example components of device104A, it should be appreciated that each device of plurality of devices104A-104E contain substantially similar components.

Additionally, in one example, it is desirable to synchronize device clocks so that established left/right pairs of speakers, multi-room speaker configurations, or multi-device speaker configurations can broadcast, generate, or otherwise produce audio playback120within an acceptable tolerance such that a user listening to the audio playback120cannot distinguish between audio playback120produced by each speaker within a space S. To accomplish this synchronization, a primary device can be selected from the plurality of devices104A-104E. As illustrated inFIG. 5, in one example, the primary device is selected as a primary clock device124, e.g., a device responsible for initiating clock synchronization sequences144(discussed below) and sending and receiving clock synchronization requests146(discussed below) and acknowledgements148(discussed below) between each device of plurality of device104A-104E. Furthermore, once a primary clock device124is selected from the plurality of devices104A-104E, the remaining devices become secondary devices128A-128E. For example, if device104A is selected as the primary clock device124, the remaining devices104B-104E become secondary devices128B-128E.

In the foregoing example, each device104A-104E includes an internal device clock capable of keeping independent time. This can be accomplished through various circuit components, for example, through the use of a crystal quartz resonator within each device of the plurality of devices104A-104E. Once a primary clock device124is selected from the plurality of devices104A-104E, the primary clock device124's clock becomes the primary clock130for media system100. Moreover, once the primary clock device124is selected and the primary clock130has been established, each secondary device128A-128E includes a secondary clock132A-132E. Therefore, given the example discussed above, primary clock device124is device104A having a primary clock130, while the remaining devices104B-104E become secondary devices128B-128E having secondary clocks132B-132E, respectively.

To aid in selection of the primary clock device124, each device of plurality of devices104A-104E within network106is arranged to store and execute, on a respective memory and processor of each device, a set of non-transitory computer readable instructions related to an algorithm for selecting the primary clock device124or a primary media distribution device126(discussed below). The algorithm, executable on each device of plurality of devices104A-104E, can utilize the same rule or instruction set to select the primary clock device124. For example, the algorithm can be arranged to receive data relating the device characteristics108of each device of plurality of devices104A-104E and determine or select the primary clock device124based on at least one device characteristic108of the devices of the plurality of devices104A-104E that have been stored in the memory of each device connected within network106. In one example, the algorithm, executable on each device of plurality of devices104A-104E, is configured to indicate that the primary clock device124should be the device with the lowest local IP address. In this way, each device of plurality of devices104A-104E will know which device of the plurality is the primary clock device for the purpose of clock synchronization (discussed below). Alternatively, the algorithm can select the primary clock device124from the plurality of devices104A-104E randomly or arbitrarily. Additionally, the set of non-transitory computer-readable instructions can relate to or contain instructions dedicated to separate software services, for example, each device of plurality of devices104A-104E can have a dedicated service for power management, i.e., a power service134(shown inFIG. 6), and can have a dedicated service for maintaining and synchronizing clocks, i.e., a clock synchronization service136(shown inFIG. 6) as will be discussed below. In some implementations, the algorithm for selecting the primary clock device124is stored and/or executed on only one of devices104A-104E, and the primary clock device selection information is then received by the other devices (e.g., directly from the only one of the devices making the selection or from another source). In some implementations, the algorithm for selecting the primary clock device124is stored and/or executed at a location that is separate from devices104A-104E, such as at a controller that interfaces with one or more of devices104A-104E and/or in the cloud (e.g., via internet connection I shown inFIG. 2or via an internet connection of a connected controller, such as a smartphone or tablet).

As described above and illustrated inFIG. 6, each device of plurality of device104A-104E can enter or exit a power-saving state138throughout normal operation of media system100. The entry into or exit from power-saving state138to operation state140and vice-versa is managed by each device's power service134. For example, after ten (10) minutes without producing audio playback120, the power service134of device104A can cause device104A to enter power-saving state138. Within power-saving state138, device104A can still send or receive data; however, the rate at which device104A sends or receives data while in the power-saving state138is diminished. Additionally, all of the remaining devices of the plurality of devices similarly enter a power-saving state138after a set duration of inactivity. However, as mentioned above, even in the power-saving state138it is desirable to have the clocks of each device synchronized, or at least synchronized within a certain margin of error, such that when each device exits the power-saving state138and enters an operational state140the devices are already synchronized and can proceed directly into normal operation to, for example, produce audio playback120.

In one example, primary clock device124, once selected, has the responsibility of independently exiting power-saving state138and entering the operating state140, at a predetermined time interval142, and while in the operating state140coordinating a clock synchronization sequence144with each secondary device of the plurality of devices104A-104E. In one non-limiting example, the predetermined time interval142is on the order of 5 minutes. However, it should be appreciated that this predetermined time interval can be any time interval greater than 0 seconds, such as every 1, 2, 3, 4, 8, 10, 12, 15, 20, 25, or 30 minutes, to provide some additional examples. In some implementations, the predetermined time interval is not constant and changes based on one or more variables, such as information received from synchronization sequence144(e.g., how long it takes for the one or more secondary devices to become synchronized). As illustrated inFIG. 6, coordination of the clock synchronization process is managed by the clock synchronization service136and can include: sending a clock synchronization request146from the primary clock device124to a secondary device128A-128E, initiating an exit of the secondary device128A-128E from a power saving state138if the secondary device128A-128E is in a power-saving state138upon receipt of the clock synchronization request146, receiving an acknowledgement148from the secondary device128A-128E that the clock synchronization request146was received by the secondary device128A-128E, and upon receipt of the acknowledgement148by the primary clock device124, entering the clock synchronization sequence144. The clock synchronization sequence144can utilize a clock synchronization protocol150selected from: a Clock-sampling mutual network synchronization protocol (CS-MNS), a Network Time Protocol (NTP), a Precision Time Protocol (PTP), a Reference Broadcast Time Synchronization protocol (RBS), Synchronous Ethernet protocol, Data-Plane Time-Synchronization Protocol (DPTP) or any other protocol capable of sending, receiving and synchronizing two device clocks over a wired or wireless connection.

Once initiated, the clock synchronization sequence144will run for a predetermined duration of time, i.e., a first time duration152. First time duration152, can be, for example, 30 seconds to prevent significant power drain in the event that the primary clock device124is powered by a battery, capacitor, or super-capacitor as discussed above; however, it should be appreciated that any time interval can be selected, such as 10, 20, 40, or 50 seconds, or 1, 2, or 3 minutes. After the first time duration152, the secondary device128A-128E can run a check to determine if the primary clock130and the secondary clock132match within a predefined threshold, e.g., within a range of plus or minus 10 milliseconds. It should be appreciated that the predefined threshold can be selected based on the particular application of plurality of devices104A-104E. In one example, the primary clock130and secondary clock132are positioned within a left/right stereo pair of audio devices. In this example, as the devices of a left/right stereo pair are typically in close proximity to each other, the predefined threshold that the device clocks must maintain is over a smaller or narrower range of plus/minus values, for example, within a range of plus or minus 100 microseconds, e.g., 10 microseconds, 20 microseconds, 50 microseconds, etc. In another example, the primary clock130and secondary clock132are a part of a multi-room system of audio devices. In this example, as the devices of multi-room system are typically not in close proximity to each other, the predefined threshold that the device clocks must maintain is over a larger or broader range of plus/minus values, for example, within a range of plus or minus 10 milliseconds, e.g., 1 millisecond, 2 milliseconds, 5 milliseconds, etc. If the two clocks are within this predefined threshold, the secondary clock sends a confirmation154to the primary clock device124that the primary clock130and the secondary clock132have entered a synchronized state156, for example, a state where the primary clock and the secondary clock132are within the predefined threshold. If the check resolves in the negative, e.g., the two clocks are not within the predefined threshold, the secondary clock sends a negative confirmation that the two clocks are not in a synchronized state156and the primary clock device124can reinitiate the clock synchronization sequence144with the secondary device128A-128E. This process continues until the confirmation154that the two clocks are in a synchronized state156or continues for a predetermined number of cycles, e.g., three cycles, and then terminate regardless of whether the two clocks are in the synchronous state156. Additionally, it should be appreciated that first time duration152can be dynamic. In other words, if the primary and secondary clocks continuously fall into a synchronous state after 10 seconds of synchronization sequence144, first time duration can be limited in future synchronizations to 10-15 seconds to promote efficient power use. Furthermore, the primary clock device124can simultaneously or sequentially perform this synchronization process with every secondary device connected to network106and/or any device discovered during the discovery phase DP discussed above. Once each secondary device has participated in the clock synchronization process discussed above, each secondary device can optionally reenter power-saving state138or continue within the operational state140, and once all of the discovered devices connected to the network106have participated in the synchronization process, the primary clock device124can optionally reenter the power-saving state138.

Additionally, periodically it may be necessary and/or desirable to check whether the selected primary clock device124is still connected to the network106. To further the above example, where device104A is selected as the primary clock device124, it is possible that during the operation of media system100, device104A is disconnected from network106. This could happen as a result of, for example, device104A running out of power in the event device104A is battery powered, or some other form of interference with the data communication to device104A. If a disconnection occurs, it would be desirable to promote another device from the plurality of devices104A-104E as a new primary clock device158as each device of the plurality of devices104A-104E is presumably operating on the same clock domain160, e.g., all running clocks that are synchronized with each other, or at least synchronized with each other within a predetermined threshold. The selection of a new primary clock device124from the plurality of devices104B-104E in the event device104A is disconnected from network106is illustrated inFIG. 7. To aid in the selection of a new primary clock device158, each device of the plurality of devices104B-104E utilizes a clock domain identifier162(illustrated inFIG. 4), which is included in each device's device characteristics108as discussed above. As each device of plurality of devices104A-104E within the same clock domain160already have each device's device characteristics108stored in their respective memories, the algorithm, executable independently on each device, can simply automatically select the next best device from within the clock domain160that meets the same rule or instruction set as originally used to select the primary clock device124to select the new primary clock device158from the remaining devices of the plurality of devices104A-104E. Importantly, the process of synchronizing clocks, as discussed above, is not affected by the operational states of any of the devices or the rendering of content, i.e., media data and/or audio playback120. In other words, some or all of the devices of plurality of devices104A-104E, prior to, during, and/or after the synchronization process discussed herein, can continue to send and receive media data, produce audio playback120, and/or otherwise render audio data regardless of and unimpeded by the synchronization process.

Given the foregoing, in addition to selecting a primary clock device, i.e., primary clock device124, it should be appreciated that media system100can utilize similar selection techniques and rules to select a primary health device125(not shown) and a primary media distribution device126(not shown). The primary health device125, once selected, is responsible for sending and receiving requests and acknowledgments from every device of the plurality of devices104A-104E to ensure proper “health” (e.g., responsiveness and/or level of operation) of each device, for example, the primary health device periodically, i.e., at a predefined time interval143(not shown), sends request signals to check that each device established in its product list PL, obtained in the discovery phase DP discussed above, is still responsive and ensure that each device's respective device characteristics108have not changed in a way that could affect the media system's performance. If something has changed, the primary health device125can send corresponding instructions to each device of plurality of devices104A-104E requesting that each device reenter the discovery phase DP and update their product lists PL. It should be appreciated that the algorithmic criteria for selection of the primary health device could be the same algorithmic criteria used to select primary clock device124, and therefore, the primary clock device124and the primary health device126can be embodied by the same device. In one example, the primary health device125is a separate device from the primary clock device124. In this example, the primary health device125can periodically obtain information from the devices within network106. If any of the devices fail to respond to the requests of the primary health device125, for example, if they disconnect from the network106, primary health device125is arranged to indicate to each device that they reenter the discovery phase DP and update their respective product lists PL. Importantly, the primary health device125indicates to the network106that the primary clock device124is no longer connected to the network and that a new primary clock device158should be selected as discussed above and illustrated inFIG. 7.

Similarly, each device of plurality of devices104A-104E can be designated as a primary media distribution device126through similar algorithmic criteria as is used to select the primary clock device124and the primary health device125. The primary media distribution device126is responsible for sending and receiving media data to each device within network106, e.g., data relating to music, voice, or other forms of audio data or video data such that each device can produce audio playback120. In one example, primary media distribution device126can receive an audio stream, video stream, or series of images, from, e.g., a peripheral device such as a smart phone or other media source, and then send, receive, transmit, or otherwise distribute that media data to the other devices of plurality of devices104A-104E within network106. As the same algorithmic criteria used to select the primary clock device124can be used to select the primary health device125and the primary media distribution device126, it should be appreciated that each primary device can be embodied within a single device of plurality of devices104A-104E. As will be discussed below, the interaction of each primary device, i.e., primary clock device124, primary health device125, and primary media distribution device126, maintains a functioning ecosystem of devices. For example, the primary clock device124will ensure each device's clocks are synchronized within a predefined threshold so that the primary media distribution device126accurately sends and receives data packets with accurate time stamps between each device so that they produce audio playback120within space S in a synchronized fashion. Additionally, the primary health device125periodically checks the devices connected to the network to at least ensure that the primary clock device124is constantly connected to the network and available to maintain clock synchronization across media system100.

In one example operation of media system100, after each device of plurality of devices104A-104E is initially powered on within space S, each device communicates with the other devices of the plurality directly or via router102during a discovery phase DP, as illustrated schematically inFIG. 3. During this discovery phase DP, each device will send and receive information relating to, for example, device characteristics108of each device connected to the network within space S. Each device, will then update a product list PL which includes information relating to all of the other devices connected within network106, and stores each device's device characteristics108in the memory of each device as shown schematically inFIG. 4. As discussed above, each device can utilized an algorithm stored in memory and executable by a processor of each device, which determines, based on a set of rules or predefined instructions which device of plurality of devices104A-104E will be selected or promoted to the role of primary clock device124(shown inFIG. 5). Additionally, using the same or different algorithmic criteria, media system100can designate or select a primary health device125(not shown) and a primary media distribution device126(not shown). In one example, the algorithm dictates that the primary clock device124be selected from the device of the plurality of devices104A-104E that has the lowest assigned local IP address110(as assigned by the DHCP server/service within router102). Alternatively or additionally, the algorithm can layer the preferences for selection of the primary clock device124, for example, as the device that has a device power type114that indicates that it is a wall powered device, i.e., is connected to wall outlet118(shown inFIG. 1) and has the lowest IP address110of the devices that are wall outlet powered. Once the primary clock device124is selected, e.g., device104A, an initial clock synchronization sequence ICS (not shown) is initiated. This sequence can take longer than the periodic synchronization cycles discussed herein in order to place each device on the same clock domain160, e.g., have every clock synchronized to within a predetermined threshold. Each device can enter or exit a power-saving state138as needed within network106; however, it is the responsibility of the primary clock device124to periodically exit power-saving state138, if it was in power-saving state138, at predetermined time interval142. After the primary clock device124, i.e., device104A, exits power-saving state138, device104A begins a synchronization process with each secondary device128B-128E, which correspond to devices104B-104E of plurality of devices104A-104E. The synchronization process involves sending a clock synchronization request146from the primary clock device124to each secondary device128B-128E, and receiving an acknowledgment148from each of the secondary devices128B-128. After each device exits the power-saving state138in response to the clock synchronization request146, each secondary device128B-128E enters a clock synchronization sequence144with the primary clock device124until the secondary clocks132B-132E are in a synchronous state156(not shown) with the primary clock130of primary clock device124. Once in the synchronous state156(not shown), each device can optionally resume the state it was in prior to the clock synchronization process, for example, each device can optionally reenter power-saving mode138or may continue the production of audio playback120in the operational state140.

Once each device of plurality of secondary devices128B-128E is synchronized within the predetermined threshold, each secondary clock132of each secondary device128B-128E as well as primary clock130of primary clock device124are now on the same clock domain160. In the event that the primary media distribution device126and the primary clock device124are not the same device, for example, where the primary media distribution device126is selected from the plurality of secondary devices128B-128E, any locally acquired media data to be distributed from the primary media distribution device126to and among the plurality of devices140A-104E will have local timestamp data164which will need to be converted to the synchronized timestamp data166of the clock domain160by the primary media distribution device126. Additionally, every secondary device128B-128E when receiving locally acquired media data having local time stamp data164, can make adjustments to any local timestamp data164so that it conforms with the timestamp data of the clock domain160, i.e., the synchronized timestamp data166. Local timestamp data164can include packet timestamps168for each packet of data sent corresponding to media data sent and/or received by the primary media distribution device126as well as any time-offset required to convert the local timestamp data164to the synchronized timestamp data166for use among the devices within the clock domain160.

FIGS. 8-10include a flowchart illustrating the steps of method200as described herein. Method200includes, for example: discovering, over a network106, a plurality of devices104A-104E within a media system100(step202); determining a primary clock device124of the plurality of devices104A-104E, the primary clock device124having a primary clock130(step204); selecting the primary clock device124from the plurality of devices104A-104E, wherein the primary clock device124has a lowest IP address110of the plurality of devices104A-104E (step204A); selecting the primary clock device124from the plurality of devices104A-104E based at least in part on the network reliability metric112of each device of the plurality of devices104A-104E (step204B); or selecting the primary clock device124from the plurality of devices104A-104E, wherein the primary clock device124has a wall-powered device power type114(step204C). Method200can further include, for example: initiating an initial clock synchronization sequence ICS between the primary clock device124and each at least one secondary device128, wherein the initial clock synchronization sequence ICS is arranged to synchronize the secondary clock132of the secondary device128with the primary clock130(step206); entering, with the primary clock device124and the secondary device128a power-saving state138(step208); exiting, with the primary clock device124the power-saving state138at a predetermined time interval142(step210); sending a clock synchronization request146from the primary clock device124to a secondary device128of the plurality of devices104A-104E, regardless of whether media content is being rendered by any of the plurality of devices104A-104E (step212); exiting, with the secondary device128, the power-saving state138upon receipt of the clock synchronization request146from the primary clock device124(step214); initiating a clock synchronization sequence144wherein the clock synchronization sequence144is arranged to synchronize a secondary clock132of the secondary device128with the primary clock130of the primary clock device124(step216); and receiving, at the primary clock device124, a confirmation154that the secondary clock132and the primary clock130have entered a synchronous state156(not shown)(step218). Once synchronized, method200can also include: determining, at predefined time intervals143, if the primary clock device is connected to the network using, for example, a primary health device125(step220); and determining a new primary clock device158from the plurality of devices104A-104E connected to the network106where each device of the plurality of devices104A-104E shares a clock domain identifier160if the primary clock device124is no longer connected to the network106(step222).

The above-described examples of the described subject matter can be implemented in any of numerous ways. For example, some aspects may be implemented using hardware, software or a combination thereof. When any aspect is implemented at least in part in software, the software code can be executed on any suitable processor or collection of processors, whether provided in a single device or computer or distributed among multiple devices/computers.

Other implementations are within the scope of the following claims and other claims to which the applicant may be entitled.