Locally maintaining global navigation satellite system (GNSS) time based on cellular radio signals

WO2026177706A1PCT designated stage Publication Date: 2026-08-27GOOGLE LLC
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
PCT/US2025/016318
Authority / Receiving Office
WO · WO
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-02-18
Publication Date
2026-08-27

Smart Images

  • Figure US2025016318_27082026_PF_FP_ABST
    Figure US2025016318_27082026_PF_FP_ABST
Patent Text Reader

Abstract

An example method includes receiving, by a mobile computing device and from a cellular node, a plurality of radio frames; selectively maintaining, by the mobile computing device and based on information of the cellular node, a global navigation satellite system (GNSS) clock based on temporal spacing of the plurality of cellular radio frames; receiving, by a GNSS processor of the mobile computing device, a GNSS time via the GNSS clock; and acquiring, by the GNSS processor and based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.
Need to check novelty before this filing date? Find Prior Art

Description

DocketNo.: 1333-985WO01 LOCALLY MAINTAINING GLOBAL NAVIGATION SATELLITE SYSTEM (GNSS)TIME BASED ON CELLULAR RADIO SIGNALS BACKGROUND

[0001] Smartphones, wearable computing devices, vehicle navigation systems, and other types of devices often include a receiver configured to perform location determination using the Global Positioning System (GPS), and other GNSS (Global Navigation Satellites Systems). GPS is a satellite-based navigation system that involves a network of satellites configured to transmit positioning signals (i.e., signals) to Earth while circling Earth in a precise orbit. Each satellite transmits signals that include information for receivers to use, such as an indication of the time that each signal was transmitted by the satellite and position information for the satellite. Each satellite may include a high precision clock that is synchronized to clocks of other satellites in the same constellation. Other GNSS constellations, such as GLONASS, Galileo, BeiDou, QZSS, and IRNSS, operate similarly, and may also be used for location determination.

[0002] A GNSS receiver in a mobile computing device may receive and use information within signals from multiple satellites to estimate a location of the mobile computing device. For example, the receiver may use trilateration to estimate the user’s location on the surface of Earth by timing signals obtained from at least four GNSS satellites. Upon receiving a signal from a satellite, the receiver may determine the time that the signal was received at the receiver and compare that time to the time that the signal was transmitted by the satellite as indicated within the signal. The receiver may then determine the distance to the satellite based on the determined time difference. By using signals from multiple satellites, the receiver may determine its location.SUMMARY

[0003] In general, aspects of this disclosure are directed to mobile computing devices that maintain GNSS clocks based on received cellular signals. When establishing a position of itself using GNSS, a mobile computing device may acquire a first fix. To acquire the first fix, the mobile computing device may process satellite signals received from satellites of a GNSS constellation. The satellite signals may be relatively weak (e.g., have a low signal to noise ratio (SNR)). As such, to process the signals, the mobile computing device may perform integration operations across windows of time. Wider windows of time may take longer for the mobile computing device to process and / or may require more processing power than narrower windows of time. The width of the windows of time may be a function of anDocketNo.: 1333-985WO01 accuracy of a time used relative to GNSS time. The more accurate the time used by the mobile computing device, the narrower windows of time may be used. As such, increases in time accuracy may desirably improve time to first fix (TTFF).

[0004] A mobile computing device may maintain a local clock. For instance, the mobile computing device may include a crystal and maintain the local time based on vibrations of a crystal subject to an electrical signal. While accuracy of the local clock may be sufficient for most local operations, the accuracy of the local clock may be less than the accuracy of GNSS time (e.g., as the satellites may maintain GNSS time based on higher precision instruments, such as atomic clocks). As such, time maintained by the local clock may drift relative to GNSS time. This drift may yield inaccuracies that increase the width of windows used when acquiring a first fix using GNSS.

[0005] Cellular base stations (e.g., “cell towers”) may maintain clocks that are synchronized to clocks of satellites in the GNSS constellation. The time maintained by these clocks may be referred to as GNSS time. Cellular base stations may transmit frames of cellular data at regular pre-determined intervals, synchronized to GNSS time. For instance, a cellular base station may transmit frames at 10 millisecond (ms) intervals that are synchronized to GNSS time.

[0006] In addition to a local clock, a mobile computing device may maintain, based on received cellular signals, a GNSS clock and utilize time from the GNSS clock to refine windows when acquiring a first fix. For instance, when actively tracking its position using GNSS, the mobile computing device may maintain the GNSS clock based on received satellite signals. However, when tracking is lost, the mobile computing device may maintain the GNSS clock based on the pre -determined spacing of cellular frames. For instance, where the pre-determined spacing of cellular frames is X ms and the mobile computing device has received 10 frames since tracking was lost, the mobile computing device may advance the GNSS clock by 10X ms. The mobile computing device may utilize a time from the updated GNSS clock when next attempting to acquire a first fix using GNSS. As the timing of the frames is synchronized to GNSS time, maintaining the GNSS clock in this way may enable the mobile computing device to use a higher accuracy clock (e.g., as compared to the local clock). This may desirably reduce a TTFF or improve acquisition sensitivity.

[0007] While many cellular base stations maintain clocks that are correctly synchronized to clocks of satellites in the GNSS constellation, some cellular base stations may maintain clocks that are not properly synchronized. Additionally, different cellular base station models or versions may exhibit different clock behavior and / or error. Such different behavior and / orDocketNo.: 1333-985WO01 error may commutatively affect the accuracy of the GNSS clock maintained at the mobile computing device. With the TTFF improvement being proportional to the accuracy of the GNSS clock maintained at the mobile computing device, maintaining the GNSS clock at the mobile computing device based on an improperly synchronized cellular base station clock may not be desirable.

[0008] In accordance with one or more aspects of this disclosure, a mobile computing device may selectively maintain the GNSS clock based on identifying information of a cellular base station. For instance, the mobile computing device may determine, based on identifying information of a particular cellular base station, whether or not to update the GNSS clock based on the spacing of frames received from the particular cellular base station. By selectively maintaining the GNSS clock in this way, the mobile computing device may avoid updating the GNSS clock based on improperly / unreliably synchronized base station clocks. As such, the mobile computing device may maintain the accuracy of the GNSS clock at the mobile computing device. In this way, the mobile computing device may preserve the reduction in TTFF or improvement in acquisition sensitivity.

[0009] As one example, a method includes receiving, by a mobile computing device and from a cellular node, a plurality of radio frames; selectively maintaining, by the mobile computing device and based on information of the cellular node, a global navigation satellite system (GNSS) clock based on temporal spacing of the plurality of cellular radio frames; receiving, by a GNSS processor of the mobile computing device, a GNSS time via the GNSS clock; and acquiring, by the GNSS processor and based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.DocketNo.: 1333-985WO01

[0010] As another example, a mobile computing device comprises a cellular modem configured to receive a plurality of cellular radio frames from a cellular node; and one or more processors configured to selectively maintain, based on information of the cellular node, a global navigation satellite system (GNSS) clock based on temporal spacing of the plurality of cellular radio frames; compute a GNSS time via the GNSS clock; and acquire, based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.

[0011] As another example, a computer-readable storage medium stores instructions that, when executed, cause one or more processors of a mobile computing device to: receive, from a cellular node, a plurality of radio frames; selectively maintain, based on information of the cellular node, a global navigation satellite system (GNSS) clock based on temporal spacing of the plurality of cellular radio frames; receive a GNSS time via the GNSS clock; and acquire, based on the GNSS time received via the GNSS clock, a first fix for the mobile computing device.

[0012] The details of one or more examples of the disclosure are set forth in the accompanying drawings and the description below. Other features, objects, and advantages of the disclosure will be apparent from the description and drawings, and from the claims.BRIEF DESCRIPTION OF DRAWINGS

[0013] FIG. 1 is a conceptual diagram illustrating an example system that includes a mobile computing device that maintains a GNSS clock, in accordance with one or more aspects of this disclosure.

[0014] FIGS. 2A-2D are conceptual diagrams illustrating example mobile computing devices that maintain a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.

[0015] FIG. 3 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.

[0016] FIG. 4 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.

[0017] FIG. 5 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.DocketNo.: 1333-985WO01

[0018] FIG. 6 is a block diagram of an example system with a remote computing system and a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure.

[0019] FIG. 7 is a flowchart illustrating example operations of an example mobile computing device, in accordance with one or more aspects of the present disclosure.

[0020] FIG. 8 is a flowchart illustrating example operations of an example mobile computing device to selectively maintain a local GNSS clock, in accordance with one or more aspects of the present disclosure.

[0021] FIG. 9 is a flowchart illustrating example operations of an example mobile computing device to update a time quality database, in accordance with one or more aspects of the present disclosure.DETAILED DESCRIPTION

[0022] FIG. 1 is a conceptual diagram illustrating an example system that includes a mobile computing device that maintains a GNSS clock, in accordance with one or more aspects of this disclosure. As shown in FIG. 1, system 100 may include GNSS constellation 102, cellular network 108, and mobile computing device 116.

[0023] GNSS constellation 102 may include a plurality of GNSS satellites 104A-104N (collectively, “GNSS satellites 104”) that each transmit a respective GNSS signal of GNSS signals 106A-106N (collectively, “GNSS signals 106”). GNSS satellites 104 may be included in any GNSS constellation, such as GPS, GLONASS, Galileo, BeiDou, QZSS, and IRNSS.

[0024] Wireless network 108 (“network 108”) may represent components configured to wirelessly exchange data with computing devices, such as mobile computing device 116. As shown in FIG. 1, wireless network 108 may include one or more nodes 110A-110N (collectively, “nodes 110”) of network 108. Nodes 110 may represent any type of radio network node or any network node. Examples of nodes 110 may include Node B, base station (BS), multi-standard radio (MSR) radio node (e.g., MSR BS), gNB, eNode B (eNB), network controller, radio network controller (RNC), base station controller (BSC), etc.Nodes 110 may each transmit / receive a respective cellular signal of cellular signals 112A-112N (collectively, “cellular signals 112”). Wireless network 108 may be compliant with one or more standards, such as GSM, CDMA, and LTE.

[0025] Nodes 110 may maintain clocks that are synchronized to clocks of GNSS satellites 104. For instance, nodes 110 may themselves have GNSS receivers that are nearly always inDocketNo.: 1333-985WO01 tracking mode (e.g., and therefore have accurate GNSS time). In operation, nodes 110 may transmit frames of cellular data at regular pre-determined intervals, synchronized to GNSS time. For instance, nodes 110 may transmit frames at 10 millisecond (ms), 20 ms, 30 ms, etc. intervals that are synchronized to GNSS time. The time between frame boundaries is well established by the cellular protocols, and thus known a-priori.

[0026] Mobile computing device 116 may be a portable device that includes components that determine a position of mobile computing device (e.g., a latitude and a longitude). As shown in FIG. 1, mobile computing device 116 may include one or more system processors 118, cellular modem 120, GNSS processor 122, and storage device 124, which may include GNSS clock module 126 and location service 128. Examples of mobile computing device 116 include, but are not limited to, mobile phones, gaming devices, vehicles, tablets, cameras, laptops, wearable computing devices, e-book readers, etc.

[0027] System processors 118 may implement functionality and / or execute instructions within mobile computing device 116. Examples of system processors 118 include, but are not limited to, one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In some examples, system processors 118 may be an application processor, and may be included in a system on a chip (SoC).

[0028] Cellular modem 120 may communicate with a cellular network, such as wireless network 108. Cellular modem 120 may include one or more antennas, receivers, transmitters, and processors that exchange cellular signals 112 with nodes 110. Receivers of cellular modem 120 may receive cellular signals 112 from nodes 110, processors of cellular modem 120 may process the received signals and output data to one or more components of mobile computing device 116, such as system processors 118. For instance, processors of cellular modem 120 may process the received cellular signals 112 to identify frames of cellular data, and output payloads of the frames of cellular data to system processors 118. Cellular modem 120 may be a separate component within mobile computing device 116 from system processors 118 (e.g., cellular modem 120 may be a separate chip from processors 118).

[0029] GNSS processor 122 may be a processor of mobile computing device 116 that performs GNSS operations, such as acquisition and tracking. GNSS processor 122 may be a separate component within mobile computing device 116 from system processors 118 (e.g.,DocketNo.: 1333-985WO01 GNSS processor 122 may be a separate chip from processors 118). For example, GNSS processor 122 may be its own chip, or may be included in a baseband or modem chip. In some examples, GNSS processor 122 may be a special purpose section of one of system processors 118 (e.g., separate from an application processor). As such, GNSS processor 122 may be considered to be a different processor than processors 118.

[0030] Storage device 124 may include one or more computer-readable storage media. For example, storage device 124 may be configured for long-term, as well as short-term storage of information, such as instructions, data, or other information used by mobile computing device 116. In some examples, storage device 124 may include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard disks, optical discs, solid state discs, and / or the like. In other examples, in place of, or in addition to the non-volatile storage elements, storage device 124 may include one or more so-called “temporary” memory devices, meaning that a primary purpose of these devices may not be long-term data storage. For example, the devices may comprise volatile memory devices, meaning that the devices may not maintain stored contents when the devices are not receiving power. Examples of volatile memory devices include random-access memories (RAM), dynamic random-access memories (DRAM), static random-access memories (SRAM), etc.

[0031] Location service 128 may, with explicit user permission, provide a location of mobile computing device 116 (e.g., a latitude, longitude, and / or elevation of mobile computing device 116) to one or more applications and / or other modules of mobile computing device 116. In some examples, location service 128 may be a service executed by processors 118. Location service 128 may receive the location of mobile computing device 116 from one or more other components of mobile computing device 116, such as GNSS processor 122.

[0032] In operation, GNSS processor 122 may initially perform an acquisition phase to determine a first fix of mobile computing device 116. To determine the first fix, GNSS processor 122 may determine a respective code phase, frequency, and time for a plurality of GNSS satellites 104. For instance, GNSS processor 122 may receive a stream of I / Q samples from a GNSS RF front end (e.g., one or more antennas and associated processing components), and process the stream of I / Q samples to determine the respective code phase, frequency, and time for each GNSS satellite of the plurality of GNSS satellites 104. To process the stream of I / Q samples, GNSS processor 122 may search for the code phases, frequencies, and times by searching a correlation peak across a search window (e.g., potential PRN codes). GNSS processor 122 may utilize different times to perform the correlations. Longer times may provide higher noise suppression, but also increase the TTFF. GNSSDocketNo.: 1333-985WO01 processor 122 may determine that a particular GNSS satellite of GNSS satellites 104 is acquired / detected if a highest correlation peak is greater than a threshold.

[0033] Based on the determined code phases, frequencies, and times for the plurality of GNSS satellites 104, GNSS processor 122 may determine the first fix for mobile computing device 116. For instance, GNSS processor 122 may utilize the determined code phases, frequencies, and times for the plurality of GNSS satellites 104 to decode navigation messages (e.g., navbits) encoded in GNSS signals 106, and determine the first fix based on the decoded navigation messages.

[0034] Once GNSS processor 122 acquires the first fix, GNSS processor 122 may enter a tracking mode in which GNSS processor 122 tracks / monitors the position of mobile computing device 116. As part of operating in the tracking mode, GNSS processor 122 may generate a time that is synchronized to clocks in GNSS satellites 104 (e.g., GNSS time). The tracking mode may be substantially simpler and / or less complex than the acquisition mode.

[0035] As discussed above, when acquiring the first fix, GNSS processor 122 may utilize a time to process GNSS signals 106. For instance, GNSS processor 122 may utilize a time to select a search window in which to integrate GNSS signals 106. Wider windows of time may take longer for GNSS processor 122 to process and / or may require more processing power than narrower windows of time. The width of the windows of time may be a function of an accuracy of a time used relative to GNSS time. The more accurate the time used by GNSS processor 122, the narrower windows of time may be used. As such, increases in time accuracy may desirably decrease the TTFF.

[0036] Mobile computing device 116 may maintain a local clock. For instance, mobile computing device 116 may include a crystal and maintain the local based on vibrations of a crystal subject to an electrical signal. While accuracy of the local clock may be sufficient for most local operations, the accuracy of the local clock may be less than the accuracy of GNSS time (e.g., as the satellites may maintain GNSS time based on higher precision instruments, such as atomic clocks). As such, time maintained by the local clock may drift relative to GNSS time. This drift may yield inaccuracies that increase the width of windows used when acquiring a first fix using GNSS.

[0037] In addition to a local clock, mobile computing device 116 may include GNSS clock module 126 that may maintain, based on received cellular signal 112, a GNSS clock and GNSS processor 122 may utilize time from the GNSS clock to refine windows when acquiring a first fix. For instance, when actively tracking its position using GNSS, a GNSS time processor of mobile computing device 116 (e.g., a processor of system processors 118 orDocketNo.: 1333-985WO01 GNSS processor 122) may execute GNSS clock module 126 to maintain the GNSS clock based on received satellite signals. However, when tracking is lost, GNSS clock module 126 may maintain the GNSS clock based on the pre-determined spacing of cellular frames. For instance, responsive to receiving a cellular radio frame, cellular modem 120 may output a hardware pulse to a GNSS time processor (e.g., an analog electrical pulse via a trace connecting the GNSS time processor and cellular modem 120). Based on receiving the hardware pulse, GNSS clock module 126 may maintain the GNSS clock. For instance, where the pre-determined spacing of cellular frames is X ms and the mobile computing device has received 10 frames since tracking was lost, GNSS clock module 126 may advance the GNSS clock by 10*X ms.

[0038] GNSS processor 122 may utilize a time from the updated GNSS clock when next attempting to acquire a first fix using GNSS. For instance, when attempting to acquire the first fix, GNSS processor 122 may utilize a current time on the GNSS clock maintained by GNSS clock module 126. As the timing of the frames is synchronized to GNSS time, maintaining the GNSS clock in this way may enable mobile computing device 116 to use a higher accuracy clock (e.g., as compared to the local clock). This may desirably reduce a TTFF.

[0039] While many of nodes 110 maintain clocks that are correctly synchronized to clocks of satellites in the GNSS constellation, some of nodes 110 may maintain clocks that not properly synchronized. Additionally, different models or versions of nodes 110 may exhibit different clock behavior and / or error. Such different behavior and / or error may commutatively affect the accuracy of the GNSS clock maintained by GNSS clock module 126. With the TTFF improvement being proportional to the accuracy of the GNSS clock maintained by GNSS clock module 126, maintaining the GNSS clock at mobile computing device 116 based on an improperly synchronized node clock may not be desirable.

[0040] In accordance with one or more aspects of this disclosure, GNSS clock module 126 may selectively maintain the GNSS clock based on information of a node of nodes 110 from which mobile computing device 116 is currently receiving radio frames. For instance, GNSS clock module 126 may determine, based on information of a particular node of nodes 110, whether or not to update the GNSS clock based on the spacing of frames received from the particular node. By selectively maintaining the GNSS clock in this way, GNSS clock module 126 may avoid updating the GNSS clock based on improperly / unreliably synchronized node clocks. As such, GNSS clock module 126 may maintain the accuracy of the GNSS clock at the mobile computing device. In this way, aspects of this disclosure may enable mobileDocketNo.: 1333-985WO01 computing device 116 to preserve the reduction in TTFF or improvement in acquisition sensitivity.

[0041] As noted above, GNSS clock module 126 may determine, based on information of a particular node of nodes 110, whether or not to update the GNSS clock based on the spacing of frames received from the particular node. In some examples, GNSS clock module 126 may base the determination on records in time quality database 144. Time quality database 144 may represent a database, lookup table, or other data structure that stores records indicating GNSS clock synchronization quality of nodes 110 (e.g., indicating whether or not nodes of nodes 110 are accurately synchronized to GNSS time). As shown in FIG. 1, time quality database 144 may be stored at least in part locally (e.g., entirely locally or partially locally) at mobile computing device 116, such as by storage device 124. However, in other examples, time quality database 144 may be stored at least in part remotely (e.g., entirely remotely or partially remotely) from mobile computing device 116 (e.g., at a server or other device / system). Further details of an example of remote storage of a time quality database are discussed below with reference to FIG. 6.

[0042] FIGS. 2A-2D are conceptual diagrams illustrating example mobile computing devices that maintain a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. Mobile computing devices 216A-216D of FIGS. 2A-2D may each be an example of mobile computing device 116 of FIG. 1. Similarly, application processor 218, cellular modem 220, GNSS processor 222, GNSS clock module 226, location service 228, and time quality database 244 may respectively be examples of processors 118, cellular modem 120, GNSS processor 122, GNSS clock module 126, location service 128, and time quality database 244 of FIG. 1.

[0043] As discussed above, a GNSS time processor may maintain a GNSS clock. The GNSS time processor may be logically / physically located at different locations of a mobile computing device. FIG. 2A illustrates the GNSS time processor as being a part of GNSS processor 222 (e.g., in the example of FIG. 2A, GNSS processor 222 is the GNSS time processor). FIG. 2B illustrates mobile computing device 216B as including GNSS time processor 223 (e.g., in the example of FIG. 2B, the GNSS time processor is separate from GNSS processor 222 and application processor 218). FIG. 2C illustrates the GNSS time processor as being a part of application processor 218 (e.g., in the example of FIG. 2C, application processor 218 is the GNSS time processor). FIG. 2D illustrates the GNSS time processor as being a part of cellular modem 220 (e.g., in the example of FIG. 2D, cellular modem 220 is the GNSS time processor).DocketNo.: 1333-985WO01

[0044] In the example of FIG. 2A, GNSS tracking module 221 and GNSS clock module 226 are illustrated as being within GNSS processor 222. For instance, in the example of FIG. 2A, GNSS processor 222 may execute GNSS tracking module 221 and GNSS clock module 226. In the example of FIG. 2B, GNSS tracking module 221 is illustrated as being within GNSS processor 222 and GNSS clock module 226 is illustrated as being within GNSS time processor 223. For instance, in the example of FIG. 2B, GNSS processor 222 may execute GNSS tracking module 221 and GNSS time processor 223 may execute GNSS clock module 226. In the example of FIG. 2C, GNSS tracking module 221 is illustrated as being within GNSS processor 222 and GNSS clock module 226 is illustrated as being within application processor 218. For instance, in the example of FIG. 2C, GNSS processor 222 may execute GNSS tracking module 221 and application processor 218 may execute GNSS clock module 226. In the example of FIG. 2D, GNSS tracking module 221 is illustrated as being within GNSS processor 222 GNSS clock module 226 is illustrated as being within cellular modem 220. For instance, in the example of FIG. 2D, GNSS processor 222 may execute GNSS tracking module 221 and cellular modem 220 may execute GNSS clock module 226.

[0045] In each of FIGS. 2A-2D, location service 228 and user application 230 are illustrated as being within application processor 218. For instance, application processor 218 may execute location service 228 and user application 230.

[0046] In operation, cellular modem 220 may exchange cellular data 238 with application processor 218. For instance, cellular modem 220 may receive cellular frames and output payloads of the frames (e.g., data carried within the frames) to application processor 218. Similarly, application processor 218 may output cellular data 238 to cellular modem 220 for cellular modem 220 to package into frames for output via a cellular network.

[0047] In tracking mode, GNSS processor 222 may execute GNSS tracking module 221 to utilize signals from satellites (e.g., signals 106 from GNSS satellites 104), to track a position of mobile computing device 216. GNSS processor 222 may output the tracked location to application processor 218 as location 242. Location 242 may include one or more of a latitude, a longitude, and an elevation.

[0048] Similar to cellular modem 120, cellular modem 220 may output hardware pulses responsive to receiving cellular frames. For instance, cellular modem 220 may output hardware pulses to GNSS time processor 223, GNSS processor 222, and / or application processor 218. In some examples, cellular modem 220 may output a pulse responsive to receiving each cellular frame (e.g., one pulse per frame). In other examples, cellular modem 220 may output a pulse responsive to receiving every Nth cellular frame (e.g., one pulseDocketNo.: 1333-985WO01 every N frames). By sending pulses every Nth frame (where N is greater than 1), cellular modem 220 may save power (e.g., as sending a pulse may consume power).

[0049] Similar to GNSS clock module 126, GNSS clock module 226 may maintain a GNSS clock, such as GNSS clock 232. While GNSS processor 222 is in tracking mode, GNSS clock module 226 may maintain GNSS clock 232 with the GNSS time that is implicitly calculated by GNSS tracking module 221 as part of the GNSS tracking process (e.g., set the time on GNSS clock 232 equal to the GNSS time calculated by GNSS tracking module 221). However, when GNSS processor 222 loses tracking or is otherwise unable to calculate GNSS time directly based on received GNSS signals, GNSS clock module 226 may maintain GNSS clock 232 based on received cellular signals. For instance, GNSS clock module 226 may determine an offset and add the offset to a previous GNSS time (GNSStime-previous) of GNSS clock 232 to determine the current GNSS time (GNSStime-current) of GNSS clock 232 (e.g., GNSStime -current-GN S Stime-previous + offset).

[0050] GNSS clock module 226 may determine the offset based on hardware pulses 236. As hardware pulses 236 are output by cellular modem 220 based on received cellular radio frames and GNSS clock module 226 maintain GNSS clock 232 based on the offset, GNSS clock module 226 may be considered to determine the offset, and therefore maintain GNSS clock 232, based on received cellular radio frames. In some examples, GNSS clock module 226 may determine the offset based on a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames. For instance, where the predetermined time interval between successive cellular radio frames is 10 ms, GNSS clock module 226 may maintain GNSS clock 232 by adding 10 ms to the value of GNSS clock 232 responsive to receiving each hardware pulse of hardware pulses 236. Further details of examples of ways GNSS clock module 226 may determine the offset are discussed below with reference to FIGS. 3-5.

[0051] As noted above, GNSS processor 222 may utilize a current time of GNSS clock 232 (e.g., GNSS time 241) to obtain a first fix of mobile computing device 216, which may be a location of mobile computing device 216. GNSS processor 222 may output this determined location to location service 228 as location 242. GNSS processor 222 may continue to track mobile computing device 216 and update location 242. Location service 228, as discussed above, may provide location 242 (or another indication of the location of mobile computing device 216, with user consent) to one or more other components of mobile computing device 216, such as user application 230.DocketNo.: 1333-985WO01

[0052] Application processor 218 may maintain a local clock, such as system clock 234. For instance, application processor 218 may increment a value of system clock 234 based on vibration of a crystal onboard mobile computing device 216. As discussed above, system clock 234 may have a lower accuracy relative to GNSS time. Application processor 218 may output a value of system clock 234 to other components of mobile computing device 216, such as GNSS processor 222 and / or GNSS time processor 223 as local time 240 (e.g., as shown in FIGS. 2 A and 2B).

[0053] GNSS time processor 223 may be a processor of mobile computing device 216B that maintains a GNSS clock. GNSS time processor 223 may be a separate component within mobile computing device 216B from application processor 218. For example, GNSS time processor 223 may be its own chip. In some examples, GNSS time processor 223 may be a special purpose section of one of system processors 118 (e.g., separate from an application processor). For instance, GNSS time processor 223 may be included on a system on a chip (SoC) along with application processor 218. As one specific example, GNSS time processor 223 may be an “always on computer” processor, which may be a relatively small (e.g., when compared with application processor 218) processor that manages sensors that are “always on.”

[0054] As discussed above, in some examples (e.g., FIG. 2D), the GNSS time processor may be located within cellular modem 220. In some of such examples, cellular modem 220 may not output the aforementioned pulse. In particular, as GNSS clock module 226 is executed by cellular modem 220, GNSS clock module 226 may maintain GNSS clock 232 based on the received cellular signals (e.g., frame spacing) without the pulses being output to other components. As can be seen in the example of FIG. 2D, hardware pulses 236 are omitted. Cellular modem 220 may output GNSS time 241 to GNSS processor 222 (either directly, or via other components such as application processor 218).

[0055] As discussed above, in some examples, the clocks maintained by nodes may not be properly synchronized. Synchronizing GNSS clock 232 to an improperly synchronized clock of a node may not be desirable. For instance, with the TTFF improvement being proportional to the accuracy of GNSS clock 232, maintaining GNSS clock 232 based on an improperly synchronized node clock may frustrate the TTFF and / or acquisition sensitivity improvements.

[0056] In accordance with one or more aspects of this disclosure, GNSS clock module 226 may selectively maintain GNSS clock 232 based on information of a node from which cellular modem 220 is currently receiving radio frames. For instance, GNSS clock module 226 may determine, based on information of a current node, whether or not to update GNSSDocketNo.: 1333-985WO01 clock 232 based on the spacing of frames received from the current node. By selectively maintaining GNSS clock 232 in this way, GNSS clock module 226 may avoid updating GNSS clock 232 based on improperly / unreliably synchronized node clocks. As such, GNSS clock module 226 may maintain the accuracy of GNSS clock 232. In this way, aspects of this disclosure may enable mobile computing devices 216 to preserve the reduction in TTFF or improvement in acquisition sensitivity.

[0057] As noted above, GNSS clock module 226 may determine, based on information of the current node, whether or not to update GNSS clock 232 based on the spacing of frames received from the current node. In some examples, GNSS clock module 226 may base the determination on records in time quality database 244. Time quality database 244 may represent a database, lookup table, or other data structure that stores records indicating whether or not nodes are accurately synchronized to GNSS time. As shown in FIGS. 2A-2D, time quality database 244 may be stored at least in part locally at mobile computing device 216. However, in other examples, time quality database 244 may be stored at least in part remotely from mobile computing device 216 (e.g., at a server or other device / system).Further details of an example of remote storage of a time quality database are discussed below with reference to FIG. 6.

[0058] In operation, GNSS clock module 226 may obtain information of a particular node. The particular node may represent a node of nodes 110 of FIG. 1. Examples of information for the particular cellular node include, but are not limited to, a unique identifier of the particular cellular node (e.g., a serial number of the particular cellular node, a media access control (MAC) address of the particular cellular node, a cell identifier (Cell ID), and the like), a model of the particular cellular node, a manufacturer of the particular cellular node, a type of the particular cellular node (e.g., 4G, 5G), and an identifier of a cellular carrier on which the particular cellular node operates.

[0059] GNSS clock module 226 may compare the obtained information of the particular node with time quality database 244. In some examples, the information of the particular node may include identifying information of the particular node. For instance, GNSS clock module 226 may determine whether time quality database 244 includes an entry corresponding to the information that indicates GNSS clock synchronization quality of the particular node. The entry may indicate whether the particular node is properly synchronized, is not properly synchronized, or is properly synchronized with an offset.

[0060] GNSS clock module 226 may determine, based on the entry corresponding to the information, whether or not to update GNSS clock 232. As one example, responsive to theDocketNo.: 1333-985WO01 entry indicating that the particular node is properly synchronized, GNSS clock module 226 may determine to update GNSS clock 232 based on temporal spacing of cellular radio frames received from the particular node. As another example, responsive to the entry indicating that the particular node is not properly synchronized, GNSS clock module 226 may determine not to update GNSS clock 232 based on temporal spacing of cellular radio frames received from the particular node. As such, where time quality database 244 indicates that the particular node is not properly synchronized, GNSS clock module 226 may opt to not synchronize time, or to treat the synchronized time as untrustworthy and de-weight it or ignore it.

[0061] In some examples, GNSS clock module 226 may determine to update GNSS clock 232 with or without adjustment. For instance, in some examples, the error between the node clock and GNSS time may be a constant offset. Time quality database 244 entries may, in some examples, include such constant offset values. As such, the constant offset for the particular node may be known a-priori, and GNSS clock module 226 may utilize the constant offset value when updating GNSS clock 232. For example, if the offset of the particular node clock relative to GNSS time is known to be consistently lOus behind GNSS time (e.g., the entry in time quality database 244 for the particular node indicates an offset of lOus behind GNSS time), GNSS clock module 226 can update GNSS clock 232 with an adjustment of lOus. As one example, GNSS clock module 226 may restrict its code-phase search to an area around lOus delay within a chip.

[0062] Mobile computing device 216 may utilize its own GNSS time to build and / or update time quality database 244. As discussed above, once GNSS processor 222 acquires the first fix, GNSS processor 222 may enter a tracking mode in which GNSS processor 222 tracks / monitors the position of mobile computing device 216 and generates a time that is accurately synchronized to clocks in GNSS satellites (e.g., GNSS time). As one example, GNSS processor 222 may utilize this accurately synchronized GNSS time to build new entries for time quality database 244. For instance, if the time computed by GNSS processor 222 in the tracking mode based on the GNSS satellites matches (e.g., is within a threshold number of milliseconds of) GNSS clock 232 as maintained based on the time interval between successive cellular radio frames from a particular node, GNSS processor 222 may determine that the particular node is properly synchronized and generate a new (or update an existing) record in time quality database 244 indicating that the particular node is properly synchronized. Similarly, if the time computed by GNSS processor 222 in the tracking mode based on the GNSS satellites does not match GNSS clock 232 as maintained based on theDocketNo.: 1333-985WO01 time interval between successive cellular radio frames from a particular node, GNSS processor 222 may determine that the particular node is not properly synchronized and generate a new (or update an existing) record in time quality database 244 indicating that the particular node is not properly synchronized.

[0063] FIG. 3 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. FIG. 3 includes graph 350 that illustrates a time series of received cellular frames 360A-360F (collectively, “cellular frames 360”) and graph 352 that illustrates a time series of hardware pulses 336A-336F (collectively, “hardware pulses 336”) output by a modem of the mobile computing device responsive to receiving the cellular frames. Cellular frames 360 may represent cellular frames received by a modem of a mobile computing device, such as modem 220 of mobile computing device 216 of FIG. 2 and hardware pulses 336 may be an example of hardware pulses 236 of FIG. 2.

[0064] As shown in FIG. 3, at time Tl, modem 220 may output hardware pulse 336A responsive to receiving cellular frame 360A (e.g., at an edge of cellular frame 360A).Modem 220 may similarly output hardware pulses 336B-336F at times T2-T6 responsive to receiving cellular frames 360B-360F. As such, in the example of FIG. 3, modem 220 may output, for each respective cellular radio frame of cellular radio frames 360, a respective hardware pulse of hardware pulses 336.

[0065] As discussed above, a GNSS processor, such as GNSS processor 222 of FIG. 2, may maintain a GNSS clock, such as GNSS clock 232 based on hardware pulses 336. For instance, if GNSS processor 222 loses GNSS tracking and switches to maintaining GNSS clock 232 based on hardware pulses 336, GNSS processor 222 may increment a value of GNSS clock 232 based on a pre-determined time interval between successive cellular radio frames cellular radio frames 360 (e.g., 10 ms in the example of FIG. 3). In the example of FIG. 3, should GNSS processor 222 lose tracking at time T2 and begin acquisition of a new first fix at time T6, GNSS processor 222 may utilize a GNSS time value that is 40 ms larger than the GNSS time value when tracking (and thereby GNSS clock maintenance based on said tracking) was lost at time T2.

[0066] FIG. 4 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. FIG. 4 includes graph 450 that illustrates a time series of received cellular frames 460A-460F (collectively, “cellular frames 460”) and graph 452 that illustrates a time series of hardware pulses 436A-436C (collectively, “hardware pulses 436”)DocketNo.: 1333-985WO01 output by a modem of the mobile computing device responsive to receiving the cellular frames. Cellular frames 460 may represent cellular frames received by a modem of a mobile computing device, such as modem 220 of mobile computing device 216 of FIG. 2 and hardware pulses 436 may be an example of hardware pulses 236 of FIG. 2.

[0067] The example of FIG. 4 is similar to the example of FIG. 3 except that modem 220 may output hardware pulses of hardware pulses 436 for a subset of radio frames 460. For instance, modem 220 may output, for every Nth cellular radio frame of cellular radio frames 460, a respective hardware pulse of hardware pulses 436 (e.g., and not output hardware pulses of hardware pulses 436 for cellular radio frames other than every Nth cellular radio frame). In the example of FIG. 4, N may be 2. Modem 220 may determine a value of N to achieve a balance between power consumption and GNSS time maintenance accuracy.

[0068] GNSS processor 222 may take the value of N into account when maintaining GNSS clock 232. For instance, GNSS processor 222 may utilize a product of N and the predetermined time interval between successive cellular radio frames when determining the offset used to maintain GNSS clock 232. In this example of FIG. 4 where N=2 and the predetermined time interval is 10 ms, GNSS processor 222 may add 20 ms to GNSS clock 232 for each hardware pulse of hardware pulses 436.

[0069] FIG. 5 illustrates graphs illustrating example signals of a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. FIG. 5 includes graph 550 that illustrates a time series of received cellular frames 560A-560F (collectively, “cellular frames 560”) and graph 552 that illustrates a time series of hardware pulses 536A-536F (collectively, “hardware pulses 536”) output by a modem of the mobile computing device responsive to receiving the cellular frames. Cellular frames 560 may represent cellular frames received by a modem of a mobile computing device, such as modem 220 of mobile computing device 216 of FIG. 2 and hardware pulses 536 may be an example of hardware pulses 236 of FIG. 2.

[0070] In some scenarios, such as due to poor connectivity between modem 220 and a base station, modem 220 may “miss” (e.g., not receive) one or more radio frames of cellular radio frames 560. For instance, in the example of FIG. 5, modem 220 may not receive cellular frames 550B, 550C, and 550D (shown as dashed lines in FIG. 5). Modem 220 may not output hardware pulses for missed cellular frames. As such, in the example of FIG. 5, modem 220 may not output hardware pulses 536B, 536C, and 536D. As GNSS time still continues, it may be desirable for GNSS processor 222 to be able to maintain GNSS clockDocketNo.: 1333-985WO01 232 based on hardware pulses generated by modem 220 while taking missed pulses into account.

[0071] In accordance with one or more aspects of this disclosure, GNSS processor 222 may determine the offset (e.g., the offset used to maintain GNSS clock 232) by estimating a quantity of missed pulses based on a system clock of mobile computing device 216. For instance, GNSS processor 222 may determine, based on a value of the system clock, an amount of time elapsed on the system clock since the most recent hardware pulse and divide the determined amount of time elapsed by the pre-determined time interval between successive pulses (which may the pre-determined time interval between successive radio frames scaled by N as discussed above) to obtain the estimated quantity of missed hardware pulses. For instance, if GNSS processor 222 determines that 35 milliseconds have passed on the system clock since receipt of a hardware pulse and the pre-determined time interval is 10 ms, GNSS processor 222 may determine the estimated quantity of missed hardware pulses as 3.

[0072] In some examples, GNSS processor 222 may determine whether any hardware pulses were missed responsive to receiving each new hardware pulse. For instance, in the example of FIG. 5, responsive to receiving hardware pulse 536E, GNSS processor 222 may determine what 42 ms have elapsed on the system clock (which in this example has run 2 ms faster than GNSS time) since receipt of hardware pulse 536A (i.e., the most recently received hardware pulse), determine that 3 hardware pulses were missed, and determine that GNSS time at time T5 is GNSS time at time T1 plus 4 times the pre-determined time interval between successive pulses (1 may be added to the determined quantity of missed pulses when performing the operation responsive to receiving a new hardware pulse). In this way, GNSS processor 222 may utilize the system clock to compensate for missed cellular frames and their corresponding hardware pulses.

[0073] GNSS processor 222 may receive the value of the system clock as local time 240 in FIG. 2 as coming from application processor 218. However, in some examples GNSS processors 222 may receive local time 240 from other components of mobile computing device 216 such as cellular modem 220. In some examples, application processor 218 may also receive hardware pulses from cellular modem 220. The receipt of such hardware pulses by application processor 218 may enable application processor 218 to more accurately calculate the amount of time elapsed on system clock 234 between hardware pulses. As such, in some examples, GNSS processor 222 may receive the calculated elapsed time (e.g., as opposed to calculating the elapsed time itself).DocketNo.: 1333-985WO01

[0074] As discussed above, the local time from system clock 234 may be less accurate than GNSS time. In some examples, mobile computing device 216 may perform one or more operations to compensate for the reduced accuracy of system clock 234 (e.g., when calculating the estimated quantity of missed pulses and / or when generally maintaining GNSS clock 232). For instance, GNSS processor 222 or another component may adjust based on a rate ratio (R) of system clock 234, the determined amount of time elapsed on system clock 234. The rate ratio R may be a ratio of time passage of system clock 234 relative to GNSS clock 232. For instance, if the rate ratio R indicates that system clock 234 runs 10% faster than GNSS clock 232, GNSS processor 222 may multiply the determined amount of time elapsed on system clock 234 by 1.1. In this way, aspects of this disclosure may compensate for inaccuracies of system clock 234, which may improve an accuracy of maintaining GNSS clock 232.

[0075] In some examples, GNSS processor 222 may utilize a scaled value of system clock 234 to determine an estimated current GNSS time at an arbitrary point. For instance, GNSS processor 222 may add a scaled amount of time elapsed on system clock 234 (R*Timemeasured-since-iast-puise) to a time on GNSS clock 232 when a last pulse was received by GNSS processor 222 (TimeGNss-at-iast-puise) to obtain the estimated current GNSS time (TimeGNss -estimated) 111 accordance with the following equation TimeGNss-estimated = TimeGNss-at-iast-puise + R*TimCmeasured -since-last-pulse.

[0076] FIG. 6 is a block diagram of an example system with a remote computing system and a mobile computing device that maintains a GNSS clock based on received cellular signals, in accordance with one or more aspects of this disclosure. Mobile computing device 616 of FIG. 6 may be an example of mobile computing device 116 of FIG. 1 or an example of one of mobile computing devices 216A-216D of FIGS. 2A-2D. Similarly, application processor 618, cellular modem 620, GNSS processor 622, GNSS clock module 626, location service 628, and time quality database 644A may respectively be examples of processors 118, cellular modem 120, GNSS processor 122, GNSS clock module 126, location service 128, and time quality database 244 of FIG. 1 and / or application processor 218, cellular modem 220, GNSS processor 222, GNSS clock module 226, location service 228, and time quality database 244 of FIGS. 2A-2D.

[0077] Remote computing system 670 may represent a computing system that is physically separate from mobile computing device 616. Example of remote computing system 670 include, but are not limited to, servers, cloud systems, and the like. Remote computing system 670 may be communicatively coupled to mobile computing device 616 (e.g., remoteDocketNo.: 1333-985WO01 computing system 670 may be able to exchange data / information with mobile computing device 616) via any suitable medium. As one example, remote computing system 670 may be coupled to mobile computing device 616 via the Internet via cellular data networks. As shown in FIG. 6, remote computing system 670 may include system processors 619 and storage device 674.

[0078] System processors 619 may implement functionality and / or execute instructions within remote computing system 670. Examples of system processors 619 include, but are not limited to, one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein.

[0079] Storage device 674 may include one or more computer-readable storage media. For example, storage device 674 may be configured for long-term, as well as short-term storage of information, such as instructions, data, or other information used by remote computing system 670. In some examples, storage device 674 may include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard disks, optical discs, solid state discs, and / or the like. In other examples, in place of, or in addition to the non-volatile storage elements, storage device 674 may include one or more so-called “temporary” memory devices, meaning that a primary purpose of these devices may not be long-term data storage. For example, the devices may comprise volatile memory devices, meaning that the devices may not maintain stored contents when the devices are not receiving power. Examples of volatile memory devices include random-access memories (RAM), dynamic random-access memories (DRAM), static random-access memories (SRAM), etc.

[0080] As discussed above, in some examples, a time quality database may be stored at least in part remotely from a mobile computing device that maintains a GNSS clock based on received cellular signals. As shown in the example of FIG. 6, time quality database 644A may be stored at mobile computing device 616 and time quality database 644B may be stored at remote computing system 670 (e.g., by storage device 674). In some examples, time quality database 644B at remote computing system 670 may include more entries than are included in time quality database 644A at mobile computing device 616. For instance, time quality database 644B may include entries corresponding to nodes across a large geographical area (e.g., a whole state or country) while time quality database 644A may include entries corresponding to a smaller geographical area. Mobile computing device 616DocketNo.: 1333-985WO01 may update time quality database 644A to operate as a cache of a subset of entries from time quality database 644B.

[0081] As one example, mobile computing device 616 may update the database entries stored at time quality database 644A based on a position of mobile computing device 616. For instance, GNSS processor 622 may determine a current position of mobile computing device 616 and update time quality database 644 A to include entries for nodes having locations within a particular distance of the current position of mobile computing device 616 (e.g., 50 mile, 100 mile, 200 mile radius). To update time quality database 644A, mobile computing device 616 may request that remote computing system 670 provide entries from time quality database 644B that are within the particular distance from the current position of mobile computing device 616. Mobile computing device 616 may perform the update for each updated position of mobile computing device 616, in batches (e.g., at the end of the day or when charging), or the like.

[0082] In some examples, mobile computing device 616 may not have a locally stored entry for a particular node. For instance, mobile computing device 616 may not have any locally stored entries (e.g., may not store time quality database 644A), or may have some entries in time quality database 644A but none of the locally stored entries correspond to the particular node. In some of such examples, mobile computing device 616 may attempt to obtain an entry or other representation of GNSS clock synchronization quality of the particular node from remote computing system 670.

[0083] For instance, mobile computing device 616 may output, to remote computing system 670, a representation of the information of a particular cellular node. The representation of the information may be the actual information or some version thereof (e.g., a hashed or encrypted version).

[0084] Mobile computing device 616 may receive, from remote computing system 670, a representation of GNSS clock synchronization quality of the particular cellular node. As one example, mobile computing device 616 may receive an entry (e.g., for storage in time quality database 644A) that corresponds to the particular cellular node. As another example, mobile computing device 616 may receive an indication of the GNSS clock synchronization quality of the particular node (e.g., whether or not mobile computing device 616 should maintain its GNSS clock based on temporal spacing of frames received from the particular cellular node).

[0085] Mobile computing device 616 may determine, based on the representation of GNSS clock synchronization quality of the particular cellular node, whether or not to update theDocketNo.: 1333-985WO01 local GNSS clock based on the temporal spacing of the plurality of cellular radio frames received from the particular cellular node.

[0086] As discussed above, in some examples, a mobile computing device may utilize its own GNSS time to build and / or update a time quality database. For instance, mobile computing device 616 may use a GNSS time generated during tracking mode to determine a GNSS clock synchronization quality of a particular node (either original or revised). Mobile computing device 616 may store the generated and / or updated entries in time quality database 644A.

[0087] In some examples, mobile computing device 616 may output a representation of the determined GNSS clock synchronization quality for use by other mobile computing devices. For instance, mobile computing device 616 may output the generated and / or updated entries to remote computing system 670, which may store said entries in time quality database 644B (e.g., remote computing system 670 may update time quality database 644B based on an original or a revised GNSS clock synchronization quality determined by mobile computing device 616). The entries may include the GNSS clock synchronization quality, which may include a determined offset (e.g., as discussed above). In this way, remote computing system 670 may update time quality database 644B based on actual measurements performed by mobile computing device 616 and other mobile computing devices.

[0088] FIG. 7 is a flowchart illustrating example operations of an example mobile computing device, in accordance with one or more aspects of the present disclosure. Although the example operation of FIG. 7 is described as being performed by mobile computing device 116 of FIG. 1, in other examples some or all of the example operation may be performed by another computing device.

[0089] GNSS processor 122 may track, based on signals received from GNSS satellites, a position of mobile computing device 116 (702). For instance, GNSS processor 122 may operate in a tracking mode in which GNSS processor 122 continually determines, based on signals 106, a latitude, longitude, and elevation of mobile computing device 116. As part of operating in the tracking mode, GNSS processor 122 may necessarily determine a GNSS time that is synchronized to GNSS clocks of GNSS satellites 104. GNSS processor 122 may update, based on the determined GNSS time determined based on the signals received from GNSS satellites 104, a GNSS local GNSS clock (704). For instance, when operating in the tracking mode, GNSS processor 122 may maintain a GNSS clock, such as GNSS clock 232 of FIG. 2, (e.g., keep GNSS clock 232 updated with the currently determined GNSS time).DocketNo.: 1333-985WO01

[0090] GNSS processor 122 may determine whether tracking has been lost (706). For instance, GNSS processor 122 may determine whether or not signals 106 are strong enough for GNSS processor 122 to continue tracking the location of mobile computing device 116. Responsive to determining that tracking has not been lost (“No” branch of 706), GNSS processor 122 may continue to operate in the tracking mode (702).

[0091] Responsive to determining that tracking has been lost (“Yes” branch of 706), a GNSS time processor may maintain, based on temporal spacing of a plurality of cellular radio frames received from a particular cellular node, the GNSS clock (708). As discussed above, the GNSS time processor may be GNSS processor 122, may be one of system processors 118, or may be a discrete processor (e.g., separate from GNSS processor 122 and separate from an application processor of processors 118). The GNSS time processor may determine an offset, and determine a current time on GNSS clock 232 by adding the offset to a previous time on GNSS clock 232. The GNSS time processor may determine the offset based on hardware pulses output by modem 120 (e.g., temporal spacing between the pulses). For instance, modem 120 may output hardware pulses (e.g., to the GNSS time processor) responsive to receiving cellular radio frames, which may be spaced based on GNSS time maintained at cellular base stations.

[0092] In accordance with one or more aspects of this disclosure, the GNSS time processor may selectively maintain the GNSS clock based on temporal spacing of the plurality of cellular radio frames received from the particular cellular node. For instance, as opposed to blindly “trusting” that the particular cellular node is itself properly synchronized to GNSS time, the GNSS time processor may selectively maintain its local GNSS clock based on a GNSS clock synchronization quality of the particular cellular node (e.g., sometimes maintain the local GNSS clock based on the particular cellular node, sometimes not maintain the local GNSS clock based on the particular cellular node). Further details of one example of such selective maintenance are discussed below with reference to FIG. 8. By selectively maintaining (as opposed to always blindly maintaining), the GNSS time processor may avoid maintaining its local GNSS clock based on improperly synchronized clocks. In this way, the GNSS time processor may avoid degrading the precision of the local GNSS clock, which may improve TTFF and / or acquisition sensitivity.

[0093] GNSS processor 122 may acquire, based on a current time of GNSS clock 232, a first fix for the position of mobile computing device 116 (710). For instance, GNSS processor 122 may utilize the current time of GNSS clock 232 to select a search window for processing of received GNSS signals.DocketNo.: 1333-985WO01

[0094] With the first fix, GNSS processor 122 may return to the tracking mode (702). As discussed above, in some examples, GNSS processor 122 may use the correctly synchronized GNSS time determined in the tracking mode to update the database used to determine whether or not to maintain the local GNSS clock based on cellular nodes. Further details of such database updating are discussed below with reference to FIG. 9.

[0095] While described above as hardware pulses, the examples of this disclosure may not be so limited. For instance, in some examples, the GNSS time processor may maintain the GNSS clock based on software pulses (e.g., a software message or event) in addition to or in place of hardware pulses. As one example, cellular modem 220 may output such software pulses via one or more data busses, the GNSS time processor may receive the software pulses and maintain the GNSS clock in a similar fashion to the hardware pulses. While maintaining the GNSS clock based on hardware pulses may provide various advantages (e.g., avoiding software latency issues), maintaining the GNSS clock based on software pulses may also provide advantages (e.g., design simplification as an electrical route between the modem and the GNSS time processor may be omitted).

[0096] FIG. 8 is a flowchart illustrating example operations of an example mobile computing device to selectively maintain a local GNSS clock, in accordance with one or more aspects of the present disclosure. Although the example operation of FIG. 8 is described as being performed by mobile computing device 116 of FIG. 1, in other examples some or all of the example operation may be performed by another computing device.

[0097] As discussed above, mobile computing device 116 may selectively maintain a local GNSS clock based on signals received from a cellular node. Mobile computing device 116 may receive information (e.g., identifying information) for a particular cellular node (802). For instance, cellular modem 120 may obtain the information from the particular cellular node and provide said information to GNSS processor 122. As noted above, examples of information include, but are not limited to, a unique identifier of the cellular node, a manufacturer of the cellular node, a model of the cellular node, and an identifier of a cellular carrier on which the cellular node operates.

[0098] GNSS processor 122 may determine, based on the information, a GNSS clock synchronization quality of the particular cellular node (804). As discussed above, GNSS processor 122 may determine the GNSS clock synchronization quality of the particular cellular node based on a database, such as time quality database 144, that stores a mapping between information of cellular nodes and GNSS clock synchronization quality.DocketNo.: 1333-985WO01

[0099] GNSS processor 122 may determine, based on the information, whether to update a local GNSS clock (e.g., GNSS clock 232) based on the particular cellular node (806). As one example, responsive to the GNSS clock synchronization quality of the particular cellular node indicating that the particular cellular node is properly synchronized to GNSS time, GNSS processor 122 may determine to update the local GNSS clock based on the particular cellular node. As another example, responsive to the GNSS clock synchronization quality of the particular cellular node indicating that the particular cellular node is not properly synchronized to GNSS time, GNSS processor 122 may determine to not update the local GNSS clock based on the particular cellular node. As another example, responsive to the GNSS clock synchronization quality of the particular cellular node indicating that the particular cellular node is properly synchronized to GNSS time but with an offset, GNSS processor 122 may determine to update the local GNSS clock based on the particular cellular node while taking the offset into account.

[0100] Responsive to determining to update the local GNSS clock based on the particular cellular node (“Yes” branch of 806), GNSS processor 122 may update the local GNSS clock based on temporal spacing of cellular radio frames received from the particular cellular node. For instance, GNSS processor 122 may determine a previous GNSS time of the local GNSS clock, determine, based on the plurality of radio frames, an offset (e.g., determine the offset based on a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames), and add the offset to the previous GNSS time to determine the GNSS time of the local GNSS clock.

[0101] Responsive to determining to update the local GNSS clock based on the particular cellular node (“No” branch of 806), GNSS processor 122 may not update the local GNSS block based on the particular cellular node. Instead, in some examples, GNSS processor 122 may maintain the local GNSS clock based on a system clock (808), such as system clock 234. While maintaining the local GNSS clock based on the system clock may be less accurate than maintaining the local GNSS clock based on a properly synchronized cellular node, maintaining the local GNSS clock based on the system clock may be more accurate than maintaining the local GNSS clock based on an improperly synchronized cellular node.

[0102] FIG. 9 is a flowchart illustrating example operations of an example mobile computing device to update a time quality database, in accordance with one or more aspects of the present disclosure. Although the example operation of FIG. 9 is described as being performed by mobile computing device 116 of FIG. 1, in other examples some or all of the example operation may be performed by another computing device.DocketNo.: 1333-985WO01

[0103] GNSS processor 122 may determine, based on signals received from GNSS satellites, a GNSS time (902). For instance, while operating in a tracking mode, GNSS processor 122 may determine a GNSS time that is synchronized to GNSS clocks of GNSS satellites 104.

[0104] GNSS processor 122 may determine, based on a comparison between the GNSS time and temporal spacing of a plurality of cellular radio frames received from a particular cellular node, a GNSS clock synchronization quality of the particular cellular node (904). For instance, GNSS processor 122 may compute a time based on the temporal spacing of a plurality of cellular radio frames received from the particular cellular node and compare the computed time to the GNSS time determined based on the signals received from GNSS satellites. As one example, if the time computed by GNSS processor 122 based on the GNSS satellites matches (e.g., is within a threshold number of milliseconds of) the time computed based on the cellular radio frames, GNSS processor 122 may determine that the particular node is properly synchronized and has a high GNSS clock synchronization quality. As another example, if the time computed by GNSS processor 122 based on the GNSS satellites does not match the time computed based on the cellular radio frames, GNSS processor 122 may determine that the particular node is not properly synchronized and has a low GNSS clock synchronization quality.

[0105] While described above as either being high or low GNSS clock synchronization quality, this disclosure is not so limited to binary qualities. For instance, the time quality database may store error margins associated with nodes. GNSS processor 122 may computer the error margin by storing the offset (or error) between the time computed by GNSS processor 122 based on the GNSS satellites matches and the time computed based on the cellular radio frames, and using a heuristic to determine the margin. In one example, GNSS processor 122 may compute the margin as the max observed error within a previous time window. In another example, GNSS processor 122 may compute the margin as the nthpercentile (e.g., 90th, 95th, 99th) error over a time window.

[0106] GNSS processor 122 may update, based on the GNSS clock synchronization quality, a time quality database (906). As one example, where GNSS processor 122 determines that the particular cellular node has a high GNSS clock synchronization quality, GNSS processor may create a new record (e.g., if none previously existed in time quality database 144 for the particular node) or update an existing record in time quality database 144 indicating that cellular nodes with the information of the particular node have high GNSS clock synchronization quality. As another example, where GNSS processor 122 determines that the particular cellular node has a low GNSS clock synchronization quality, GNSS processor mayDocketNo.: 1333-985WO01 create a new record (e.g., if none previously existed in time quality database 144 for the particular node) or update an existing record in time quality database 144 indicating that cellular nodes with the information of the particular node have low GNSS clock synchronization quality.

[0107] As discussed above, in some examples, at least a portion of the time quality database may be located externally from a mobile computing device. For instance, in the example of FIG. 6, time quality database 644B may be located in remote computing system 670 that is external from mobile computing device 616. In some of such examples, mobile computing device 616 may update the time quality database by outputting an indication of the determined GNSS clock synchronization quality to remote computing system 670.

[0108] Aspects of this disclosure include the following examples.

[0109] Example 1. A method comprising: receiving, by a mobile computing device and from a cellular node, a plurality of radio frames; selectively maintaining, by the mobile computing device and based on information of the cellular node, a global navigation satellite system (GNSS) clock based on temporal spacing of the plurality of cellular radio frames; receiving, by a GNSS processor of the mobile computing device, a GNSS time from the GNSS clock; and acquiring, by the GNSS processor and using the GNSS time received from the GNSS clock, a first fix for the mobile computing device.

[0110] Example 2. The method of example 1, wherein selectively maintaining the GNSS clock comprises: determining, based on the information, whether or not to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames; and either: responsive to determining to update the GNSS clock, updating the GNSS clock based on the temporal spacing of the plurality of cellular radio frames; or responsive to determining not to update the GNSS clock, not updating the GNSS clock based on the temporal spacing of the plurality of cellular radio frames.

[0111] Example 3. The method of example 2, wherein determining whether or not to update the GNSS clock comprises determining, based on a comparison between the information of the cellular node and a database storing a mapping between node information and GNSS clock synchronization quality, whether or not to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames received from the cellular node.

[0112] Example 4. The method of example 3, wherein the database is stored at least in part at the mobile computing device.

[0113] Example 5. The method of example 4, wherein only a subset of the database is stored at the mobile computing device.DocketNo.: 1333-985WO01

[0114] Example 6. The method of example 5, further comprising: updating, based on a current position of the mobile computing device, the subset of the database stored at the mobile computing device to include database entries for nodes having locations within a particular distance of the current position of the mobile computing device.

[0115] Example 7. The method of example 3, wherein the database is stored at a remote computing system separate from the mobile computing device, the method further comprising: outputting, by the mobile computing device and to the remote computing system, a representation of the information of the cellular node; receiving, by the computing device and from the remote computing system, a representation of GNSS clock synchronization quality of the cellular node; and determining, based on the representation of GNSS clock synchronization quality of the cellular node, whether or not to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames received from the cellular node.

[0116] Example 8. The method of example 3, further comprising: determining, based on the first fix, a revised GNSS clock synchronization quality of the cellular node; and updating, based on the revised GNSS clock synchronization quality of the cellular node, the database.

[0117] Example 9. The method of example 8, wherein updating the database comprises outputting, to a remote computing system, a representation of the revised GNSS clock synchronization quality of the cellular node.

[0118] Example 10. The method of example 2, wherein determining to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames comprises either: determining to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames without adjustment; or determining to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames with adjustment.

[0119] Example 11. The method of example 1, wherein the information comprises one or more of: a unique identifier of the cellular node; a manufacturer of the cellular node; a model of the cellular node; and an identifier of a cellular carrier on which the cellular node operates.

[0120] Example 12. The method of example 1, wherein maintaining the GNSS clock comprises: determining a previous GNSS time of the GNSS clock; determining, based on the plurality of radio frames, an offset; and adding the offset to the previous GNSS time to determine the GNSS time.

[0121] Example 13. The method of example 12, wherein determining the offset comprises determining the offset based on a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames.DocketNo.: 1333-985WO01

[0122] Example 14. The method of example 1, further comprising: tracking, by the GNSS processor and based on the first fix, a position of the mobile computing device.

[0123] Example 15. A mobile computing device configured to perform the method of any of examples 1-14.

[0124] Example 16. A computer-readable storage medium storing instructions that, when executed, cause a mobile computing device to perform the method of any of examples 1-14.

[0125] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on or transmitted over, as one or more instructions or code, a computer-readable medium and executed by a hardware-based processing unit. Computer-readable media may include computer-readable storage media, which corresponds to a tangible medium such as data storage media, or communication media including any medium that facilitates transfer of a computer program from one place to another, e.g., according to a communication protocol. In this manner, computer-readable media generally may correspond to (1) tangible computer-readable storage media, which is non-transitory or (2) a communication medium such as a signal or carrier wave. Data storage media may be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and / or data structures for implementation of the techniques described in this disclosure. A computer program product may include a computer-readable medium.

[0126] By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage, or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection is properly termed a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the definition of medium. It should be understood, however, that computer-readable storage media and data storage media do not include connections, carrier waves, signals, or other transient media, but are instead directed to non-transient, tangible storage media. Disk and disc, as used herein, includes compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where disks usuallyDocketNo.: 1333-985WO01 reproduce data magnetically, while discs reproduce data optically with lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0127] Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Accordingly, the term “processor,” as used herein may refer to any of the foregoing structures or any other structure suitable for implementation of the techniques described herein. In addition, in some aspects, the functionality described herein may be provided within dedicated hardware and / or software modules. Also, the techniques could be fully implemented in one or more circuits or logic elements.

[0128] The techniques of this disclosure may be implemented in a wide variety of devices or apparatuses, including a wireless handset, an integrated circuit (IC) or a set of ICs (e.g., a chip set). Various components, modules, or units are described in this disclosure to emphasize functional aspects of devices configured to perform the disclosed techniques, but do not necessarily require realization by different hardware units. Rather, as described above, various units may be combined in a hardware unit or provided by a collection of interoperative hardware units, including one or more processors as described above, in conjunction with suitable software and / or firmware.

[0129] Various examples of the disclosure have been described. Any combination of the described systems, operations, or functions is contemplated. These and other examples are within the scope of the following claims.

Claims

DocketNo.: 1333-985WO01 WHAT IS CLAIMED IS:

1. A method comprising:receiving, by a mobile computing device and from a cellular node, a plurality of radio frames;selectively maintaining, by the mobile computing device and based on information of the cellular node, a global navigation satellite system (GNSS) clock based on temporal spacing of the plurality of cellular radio frames;receiving, by a GNSS processor of the mobile computing device, a GNSS time from the GNSS clock; andacquiring, by the GNSS processor and using the GNSS time received from the GNSS clock, a first fix for the mobile computing device.

2. The method of claim 1, wherein selectively maintaining the GNSS clock comprises:determining, based on the information, whether or not to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames; andeither:responsive to determining to update the GNSS clock, updating the GNSS clock based on the temporal spacing of the plurality of cellular radio frames; or responsive to determining not to update the GNSS clock, not updating the GNSS clock based on the temporal spacing of the plurality of cellular radio frames.

3. The method of claim 2, wherein determining whether or not to update the GNSS clock comprises determining, based on a comparison between the information of the cellular node and a database storing a mapping between node information and GNSS clock synchronization quality, whether or not to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames received from the cellular node.

4. The method of claim 3, wherein the database is stored at least in part at the mobile computing device.

5. The method of claim 4, wherein only a subset of the database is stored at the mobile computing device.DocketNo.: 1333-985WO01 6. The method of claim 5, further comprising:updating, based on a current position of the mobile computing device, the subset of the database stored at the mobile computing device to include database entries for nodes having locations within a particular distance of the current position of the mobile computing device.

7. The method of claim 3, wherein the database is stored at a remote computing system separate from the mobile computing device, the method further comprising:outputting, by the mobile computing device and to the remote computing system, a representation of the information of the cellular node;receiving, by the computing device and from the remote computing system, a representation of GNSS clock synchronization quality of the cellular node; and determining, based on the representation of GNSS clock synchronization quality of the cellular node, whether or not to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames received from the cellular node.

8. The method of any of claims 3-7, further comprising:determining, based on the first fix, a revised GNSS clock synchronization quality of the cellular node; andupdating, based on the revised GNSS clock synchronization quality of the cellular node, the database.

9. The method of claim 8, wherein updating the database comprises outputting, to a remote computing system, a representation of the revised GNSS clock synchronization quality of the cellular node.

10. The method of any of claims 2-9, wherein determining to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames comprises either: determining to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames without adjustment; ordetermining to update the GNSS clock based on the temporal spacing of the plurality of cellular radio frames with adjustment.DocketNo.: 1333-985WO01 11. The method of any of claims 1-10, wherein the information comprises one or more of:a unique identifier of the cellular node;a manufacturer of the cellular node;a model of the cellular node; andan identifier of a cellular carrier on which the cellular node operates.

12. The method of any of claims 1-11, wherein maintaining the GNSS clock comprises:determining a previous GNSS time of the GNSS clock;determining, based on the plurality of radio frames, an offset; andadding the offset to the previous GNSS time to determine the GNSS time.

13. The method of claim 12, wherein determining the offset comprises determining the offset based on a pre-determined time interval between successive cellular radio frames of the plurality of cellular radio frames.

14. The method of any of claims 1-13, further comprising:tracking, by the GNSS processor and based on the first fix, a position of the mobile computing device.

15. A mobile computing device configured to perform the method of any of claims 1-14.

16. A computer-readable storage medium storing instructions that, when executed, cause a mobile computing device to perform the method of any of claims 1-14.