Efficient Geolocation

By leveraging device location history and BSSID database searches, the method enhances geolocation efficiency and reduces API reliance, addressing the high request volume and cost issues in existing geolocation services.

JP2026504035APending Publication Date: 2026-02-03ABSOLUTE SOFTWARE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2025540294
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-01-10
Filing Date
2024-01-10
Publication Date
2026-02-03

AI Technical Summary

Technical Problem

Existing geolocation services rely heavily on third-party APIs, leading to a high number of requests and increased costs as device locations are rarely stored, necessitating an improved method for more efficient geolocation using device location history.

Method used

A method that utilizes device location history to determine geolocation by forming queries based on detected Basic Service Set Identifiers (BSSIDs) and searching a database for matching BSSID combinations, with alternative lookups via APIs or satellite systems if necessary.

Benefits of technology

Reduces the cost of resolving locations by minimizing API requests and improving geolocation efficiency through database searches of BSSID combinations, enhancing accuracy and reducing query times.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026504035000001_ABST
    Figure 2026504035000001_ABST
Patent Text Reader

Abstract

Access point identifiers associated with a common location are grouped into sets of three and stored in documents in a database. When the location of a device is required, the detected access points are searched in the database, and if there are three matching access points in the database, the corresponding location is searched in the document where the three access points exist.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] [CROSS-REFERENCE TO RELATED APPLICATIONS] This application claims the benefit of priority to U.S. Provisional Application No. 63 / 479,349, filed January 10, 2024, the contents of which are incorporated herein by reference in their entirety.

[0002] [Technical field to which the invention belongs] This disclosure relates to geolocation of electronic devices, and in particular to the use of Basic Service Set Identifier (BSSID) data. [Background technology]

[0003] Geolocation services may use third-party application programming interfaces (APIs) to resolve the location of mobile devices using detected Basic Service Set Identifiers (BSSIDs) or Medium Access Control (MAC) addresses. Large numbers of remote devices may need to make hundreds of millions or even billions of API requests each year. The number of API requests increases as the number of devices increases and as more location-dependent features are added to the services that manage the devices.

[0004] Typically, device locations are rarely, if ever, stored in a database, and these locations are used only for the single device itself.

[0005] There is a need for an improved method for geolocating devices. Summary of the Invention [Problem to be solved by the invention]

[0006] Embodiments of the present invention can use device location history extracted from numerous documents to more efficiently use geolocation data. A query can be formed based on the device's database location history to determine whether there are any locations that meet certain criteria, including, but not limited to, overlapping with the current list of access points detected by the device, having the same public IP, having a certain number of access points, etc. Thus, using the techniques described herein, a potential advantage of embodiments of the present invention is that the cost of resolving locations can be reduced. [Means for solving the problem]

[0007] In one embodiment, a method is provided that includes receiving a geolocation payload from a first device having a receiver, the geolocation payload including a first plurality of Basic Service Set Identifiers (BSSIDs) detected by the first device; and determining a location of the first device by using the first plurality of BSSIDs to search a database that includes a second plurality of BSSIDs and location data associated with the second plurality of BSSIDs.

[0008] In one embodiment, the method further includes determining the location using an alternate location lookup if the search does not find location data in the database based on the first plurality of BSSIDs.

[0009] In one embodiment, the alternative location lookup is a geolocation API, a location determined using a Global Navigation Satellite System (GNSS), or the location of the OS.

[0010] In one embodiment, the method further includes assembling the first plurality of BSSIDs into received BSSID combinations, each received BSSID combination including a first number of BSSIDs from the first plurality of BSSIDs, and storing the second plurality of BSSIDs as stored BSSID combinations, each stored BSSID combination including the first number of BSSIDs from the second plurality of BSSIDs, and determining the location includes searching for a match in the stored BSSID combinations using the received BSSID combinations.

[0011] In one embodiment, the first number is at least three.

[0012] In one embodiment, determining the location of the device involves searching a database using the received BSSID combinations until at least one received BSSID combination is found.

[0013] In one embodiment, the geolocation payload includes a signal strength for each of a first plurality of BSSIDs, and the search using the received BSSID combination is based on the signal strength.

[0014] In one embodiment, determining the location of the device includes searching a second plurality of BSSIDs from the first time period.

[0015] In one embodiment, the geolocation payload further includes a received Internet Protocol (IP) address of the device, the database includes stored device IP addresses associated with the location data, and determining the location of the device uses the received IP address.

[0016] In one embodiment, determining the location of the device comprises comparing the received IP address to determine if it is within a range of stored device IP addresses.

[0017] In one embodiment, the location data stored in the database includes previously stored location data of the first device, the second device, or a combination thereof.

[0018] In one embodiment, the location data stored in the database includes previously stored location data of the first device.

[0019] In one embodiment, the location data stored in the database includes previously stored location data of the second device.

[0020] In one embodiment, the method further includes enforcing device rules based on the determined location of the device.

[0021] In one embodiment, the method further includes updating the database with the determined location, the first plurality of BSSIDs, and a timestamp of the geolocation payload.

[0022] In one embodiment, the method further includes validating the determined location against a previous location of the first device.

[0023] In one embodiment, a system for determining a location of a first device is provided, the system including: a first device including a receiver for detecting a first plurality of BSSIDs, a processor for collecting a geolocation payload including the detected BSSIDs, and a transmitter for transmitting the geolocation payload; a database including a second plurality of BSSIDs and associated locations; and a second device including the receiver and a computer-readable medium having stored thereon instructions that, when executed, cause the second device to receive a geolocation payload from the first device having the receiver, the geolocation payload including the first plurality of Basic Service Set Identifiers (BSSIDs) detected by the first device, and to determine a location of the first device by using the first plurality of BSSIDs to search a database including the second plurality of BSSIDs and location data associated with the second plurality of BSSIDs. [Brief explanation of the drawings]

[0024] The present disclosure provides the following drawings: [Figure 1] 1 represents an environment in which the present disclosure may be deployed in accordance with some embodiments of the present invention. [Figure 2] 1 is a representation of an alternative environment in which the present disclosure may be deployed in accordance with some embodiments of the present invention. [Figure 3] 1 illustrates another alternative environment in which the present disclosure may be deployed in accordance with some embodiments of the present invention. [Figure 4] 1 is a flowchart of a method according to one embodiment of the present invention. [Figure 5] 1 is a flowchart illustrating database searching and updating according to one embodiment of the present invention. [Figure 6] 4 is a flowchart of a method according to another embodiment of the present invention. DETAILED DESCRIPTION OF THE INVENTION

[0025] The methods, processes, and systems described herein enable geolocation of a device based on wireless access points detected by the device. The geolocation of a device may be based on historical data of the device or multiple devices. Multiple wireless access points detected by a device may be grouped to reduce database size, query time, and increase accuracy.

[0026] Glossary Access Point (AP) or Wireless Access Point (WAP): A device that creates a wireless local area network (WLAN), usually within an office or large building.

[0027] Application Programming Interface (API): A method for computer programs to communicate with each other. For example, an API may be used by a first program to access a geolocation service available through a second program.

[0028] Basic Service Set Identifier (BSSID): The MAC address of an AP. BSSID is often used to refer to a device that provides connectivity to a network. Because a MAC address can be used to refer to the identifier of any network device, not just the identifier of an AP, this disclosure will use BSSID to refer to the MAC address of an AP unless the context dictates otherwise.

[0029] Geolocation: Identifying the geographic location of a device.

[0030] Media Access Control (MAC) Address: A unique identifier assigned to the network interface controller of a device such as an AP. A MAC address is provided as six groups of two hexadecimal digits separated by hyphens, colons, or no separators (e.g., 00:0C:E6:02:37:F8). WLAN: Wireless Local Area Network.

[0031] Illustrative Embodiments One embodiment involves looking up and finding a document in the location history database that has an AP list that overlaps with at least three items (i.e., the three APs currently detected by the device). If found, the location recorded in that document is reused without calling the geolocation API. However, since the size of the geolocation history collection is typically huge, there is a way to return results with minimal response time.

[0032] Another embodiment involves storing the geolocation history records in a new collection with an identification (_id) that is a combination of three BSSIDs. To ensure that the identification is unique among the three BSSIDs, the BSSIDs must first be sorted into a list.

[0033] FIG. 1 illustrates an example environment 100 in which the geolocation of a client device can be determined, according to some embodiments. The example environment 100 can include one or more devices, such as a client device 110. The client device 110 includes a receiver (not shown) for use in collecting information for use in detecting the BSSIDs of access points (APs) 104 in its vicinity signals. The receiver may be a wireless receiver, a WIFI antenna, or the like. As shown in FIG. 1, the client device 110 can include a desktop computer, a laptop computer, a tablet computer, a smartphone, a set-top box, a smartwatch, an IoT device, or the like. While shown using three APs, the client device 110 may detect fewer or more APs based on the number of APs in its vicinity and the strength of their signals.

[0034] Client device 110 includes network hardware (not shown), such as a transmitter, for communicating with server 130 over a wide area network (WAN) 120, such as the Internet. Although shown as connecting directly to WAN 120, client device 110 may connect to the WAN through other methods, such as through one of APs 104 detected by client device 110.

[0035] Server 130 can be in communication with location database 140. Location database 140 includes historical location data for client device 110 and BSSIDs detected by client device 110 at corresponding historical locations. Location database 140 can be stored on or remote from server 130.

[0036] If the location of the client device 110 is not found on the database 140, the client device 110 can use the API to communicate with the geolocation server 150 to obtain the location of the client device 110.

[0037] 2 illustrates another example of an environment 200 in which the geolocation of a client device may be determined, according to some embodiments. The example environment 200 includes a client device 210. The client device 210 includes a receiver for use in gathering information for use on the BSSIDs of APs 204 in its vicinity. As mentioned above, the client device 210 may detect fewer or more APs based on the number of APs in its vicinity and their signal strengths.

[0038] The client device 210 can communicate with the server 230 over a wide area network (WAN) 220, such as the Internet. Although shown as connecting directly to the WAN 220, the client device 210 may connect to the WAN through other methods, such as through one of the APs 204 detectable by the client device 210.

[0039] The server 230 can be in communication with a location database 240. The location database 240 includes historical location data for the client device 210 and the BSSIDs detected by the client device 210 at the corresponding historical locations. The location database 240 can be stored on or remote from the server 230.

[0040] If the location of the client device 210 is not found on the database 240, the client device 210 can use the API to communicate with the geolocation server 250 to obtain the location of the client device 210.

[0041] The client device 210 includes or is paired with a satellite navigation receiver that can communicate with a global navigation satellite system (GNSS) 260 to determine its location. Typically, such a client device includes a smartphone, although other client devices paired with a satellite navigation receiver may also be suitable. Exemplary GNSS implementations include the Global Positioning System (GPS), Global Navigation Satellite System (GLONASS), Beidou, and Galileo.

[0042] 3 illustrates yet another alternative example of an environment 300 in which the geolocation of a client device can be determined, according to some embodiments. The example environment 300 includes multiple client devices 310. Each client device 310 includes a receiver for use in collecting information for use in detecting the BSSIDs of APs 304 in its vicinity.

[0043] The client device 310 can communicate with the server 330 over a wide area network (WAN) 320, such as the Internet. Although shown as connecting directly to the WAN 320, the client device 310 may connect to the WAN through other methods, such as through one of the APs 304 detectable by the client device 310. As mentioned above, the client device 310 may detect fewer or more APs based on the number of APs in its vicinity and their signal strength.

[0044] The server 330 can be in communication with a location database 340. The location database 340 includes historical location data for all client devices 310 and the BSSIDs detected by the client devices 310 at the corresponding historical locations. The location database 340 can be stored on or remotely from the server 330.

[0045] Each client device 310 can use an API to communicate with the geolocation server 350 to obtain the location of the client device 310 if the location of the client device 310 is not found on the database 340 .

[0046] Each client device 310 may connect asynchronously within the environment 300 such that a different client device 310 may be connected to each of the servers 330, geolocation servers 340, etc. at one time.

[0047] Referring now to FIG. 4, an exemplary operational procedure for implementing these examples is shown, according to some embodiments. In operation 402, a geolocation payload is received from a first device (e.g., client device 110) having a receiver. The geolocation payload includes a first plurality of BSSIDs detected by the first device. In some embodiments, receiving the payload is at the first device. Performing a lookup locally at the first device can speed up the determination because it eliminates transit time for the geolocation payload. However, this may require significant storage space on the first device (e.g., see the exemplary database size in Table 1), may not have access to historical locations of other devices, may degrade performance if the first client does not have sufficient computing power, and may increase payload size if the received BSSID combinations are sent to a server to replicate the database or expand a secondary database. In some embodiments, receiving is by a second device (e.g., server 130, 230, 330) remote from the first device.

[0048] In operation 406, the geolocation payload is used to determine the location of the first device by searching a database including a second plurality of BSSIDs and location data associated with the second plurality of BSSIDs. If one or more of the BSSIDs in the first plurality of BSSIDs matches one or more of the BSSIDs in the second plurality of BSSIDs, the first device is determined to be located at a location associated with one or more of the matching BSSIDs in the second plurality of BSSIDs. The confidence in the location may increase as the number of matches increases. This may be useful, for example, when a single physical AP broadcasts multiple SSIDs (e.g., virtual APs, each with a distinct BSSID) or BSSID. Matching to such BSSIDs may not increase the accuracy of the location; therefore, increasing the number of matches may increase the likelihood that BSSIDs from different physical APs match. The speed of operation may be increased by reducing the number of searches performed (e.g., by searching based on only a subset of the first plurality of BSSIDs). In some embodiments, at least 3, 4, 5, 6, 7, 8, 9, or 10 of the first plurality of BSSIDs have corresponding entries in the second plurality of BSSIDs. In some embodiments, 3, 4, 5, 6, 7, 8, 9, or 10 of the first plurality of BSSIDs have corresponding entries in the second plurality of BSSIDs. In some embodiments, three of the first plurality of BSSIDs have corresponding entries in the second plurality of BSSIDs.

[0049] In some embodiments, in operation 404, the BSSIDs are optionally collected into received BSSID combinations, each of which includes a first number of BSSIDs from a first plurality of BSSIDs (see, for example, FIG. 1). The first number of BSSIDs may be 2, 3, 4, 5, 6, 7, 8, 9, 10, or more. Increasing the first number of BSSIDs may improve the accuracy, reliability, or both of the location determination. However, if the first number of BSSIDs is too large, the time required to perform a search, the size of the data set, or both may increase. In embodiments in which the BSSIDs are collected into received BSSID combinations, a second plurality of BSSIDs is stored as stored BSSID combinations, each having the same number of BSSIDs as the received BSSIDs. The location determination in 406 uses the received BSSID combinations to search for matches in the stored BSSID combinations.

[0050] In some embodiments, the first number is at least three, and each received BSSID combination includes at least three BSSIDs. In a preferred embodiment, the first number is three. The use of three APs (e.g., three different physical APs) helps reduce location uncertainty. Given the locations of three known APs, location can be determined using signal strength as a proxy for distance from a particular location.

[0051] The number of receive BSSID combinations depends on the number of BSSIDs in the first plurality of BSSIDs in the geolocation payload and the first number. For example, if the first plurality has 20 BSSIDs and the first number is 3, there are 1140 receive BSSID combinations (20 minus 3 (20C3)).

[0052] In some embodiments, the first plurality of BSSIDs includes all BSSIDs detected by the first device. In some embodiments, the first plurality of BSSIDs is limited based on a predetermined number, signal strength, or both. Depending on the number of APs in the first device's vicinity, the first device may detect a very large number of BSSIDs. Therefore, it may be desirable to limit the number of BSSIDs included in the geolocation payload. For example, if the first number is 3 and the predetermined number of BSSIDs is 20, there are 1,140 received BSSID combinations; if the predetermined number of BSSIDs is 30, there are 4,060 received BSSID combinations; and if the predetermined number of BSSIDs is 40, there are 9,880 received BSSID combinations.

[0053] In some embodiments, the predetermined number is selected to reduce the number of potential searches performed during the determination. In some embodiments, the predetermined number is between 10 and 30. In some embodiments, the predetermined number is 20.

[0054] In some embodiments, the BSSIDs selected for inclusion in the geolocation payload are based on the signal strength of the corresponding APs detected by the first device. For example, only the BSSIDs of the APs with the strongest signals are included in the geolocation payload. This may be limited to a predetermined number as described above. In some embodiments, only the BSSIDs of APs with a threshold signal strength are included.

[0055] In some embodiments, the database includes historical locations of the first device and, optionally, timestamps of the historical locations. In some embodiments, the location determination first searches the database based on a first time period, e.g., the first device's most recent location. If a location cannot be found in the first time period, the search is extended to locations in a second time period that is longer than the first time period.

[0056] In some embodiments, the database includes the historical locations of additional devices (eg, additional client devices 310).

[0057] 5, an embodiment of updating the database in operation 404 is provided for a group of BSSIDs 512 detected for a given longitude and latitude. The BSSIDs are then sorted numerically to provide a sorted array 514. The sorted array 514 is arranged into an array for each combination of BSSIDs 516 that may be collected from array 516 (shown with three BSSIDs in each combination). Each combination in each array 516 is combined into a separate string 518. Each combined combination 518 is associated with a particular longitude and latitude and stored in a database 540 (such as database 140, 240, or 340) in a separate document 542. Later, when a server (e.g., server 130, 230, 330) receives from the same device or another device (e.g., in operation 402) a geolocation payload (also called a WIFI payload) 502 containing the BSSIDs detected by the device, the server can create (e.g., in operation 404) received BSSID combinations 504 from the geolocation payload 502 similar to how the array of BSSID combinations 516 is created (e.g., a combination of three BSSIDs from the detected BSSIDs). If one of the received BSSID combinations 504 matches a combined document entry 542 in database 540 (e.g., in operation 407), the corresponding longitude and latitude can be obtained from document 542 without having to call a geolocation API.

[0058] Table 1 shows the results of an exemplary database, e.g., the LocationByWifiMacAddress collection.

[0059] [Table 1]

[0060] This shows that for 20 detected BSSIDs, there are 1140 possible combinations of 3 BSSIDs to choose from among those 20. It also shows that the typical query time is less than 1 second.

[0061] In other embodiments, groups of four or more BSSIDs (or APs) may be used instead of three. Increasing the number of APs may increase accuracy, reliability, or both, but may reduce database size, query time, or both.

[0062] The BSSIDs (e.g., three BSSIDs) may be combined in other ways for storage in the database. For example, in some embodiments, the BSSIDs are stored as individual arrays of BSSID combinations 506 and are not combined into strings. In such embodiments, document 512 includes the array of BSSIDs and, optionally, the relative signal strengths of the BSSIDs at a particular location.

[0063] Returning to FIG. 4 , in some embodiments, in operation 410, the database is updated with a document including the determined location, the first plurality of BSSIDs, and a timestamp of the geolocation payload. In some embodiments, the first plurality of BSSIDs are stored in the form of received BSSID combinations in a document including the determined location and a timestamp of the geolocation payload. In some embodiments, to reduce storage requirements, documents with unique BSSID combinations are stored in the database rather than duplicating BSSID combinations and locations. In some embodiments, documents with matching BSSID combinations are updated with the document's timestamp. In other embodiments, particular received BSSID combinations with matching stored BSSID combinations in an existing document are stored in a new document. In some embodiments, each received BSSID combination is combined into a single string. In some embodiments, each received combined BSSID is stored as an array.

[0064] In some embodiments, in operation 407, if a location is found in operation 406, the determined location may be used as described further in the method. However, if a location cannot be determined based on the database, an alternative location lookup is optionally performed in operation 408. The alternative location lookup includes using an API to determine the location of the first device, such as using a geolocation API (such as those provided by Google, Baidu, etc.), using a satellite navigation receiver to receive location using GNSS, using the OS location, or a combination thereof. For example, a second device that receives a geolocation payload may send a request to the first device for a location or OS location using GNSS if the first device is equipped with such information. Typically, the demand for using a satellite navigation receiver is limited due to higher power consumption, the time it takes to synchronize with GNSS, and the availability of satellite navigation receivers (e.g., not typically equipped with laptop or desktop devices). Furthermore, the OS location may have limited reliability because it can be manually entered by the user. Furthermore, geolocation API calls can incur costs, which increase when managing a large number of devices. Therefore, the use of BSSID is preferred.

[0065] In some embodiments, the determined location is optionally verified against a previous location of the first device, such as its last known location, in operation 409. In some embodiments, the previous location is stored in a database. If there is a seemingly implausible distance between the first device's location based on the timestamp of the geolocation payload and a previous location based on that timestamp, an inaccurate location may have been determined. In such a case, the location may optionally be determined or verified in operation 408. In some embodiments, the location determined in operation 408 is compared to the location determined in 406. If the determined locations are close to each other, the location may be presumed to be accurate. However, if the locations determined in 406 and 408 are not close to each other, the location may be erroneous. In such a case, in some embodiments, an alternative location lookup may be performed, the database may be updated to remove the association of the location with the particular BSSID, the case may be logged for further investigation, or a combination thereof.

[0066] In some embodiments, the geolocation payload includes an Internet Protocol (IP) address. In some embodiments, a historical IP address is associated with each location and a second plurality of BSSIDs stored in the database. The IP address, in some embodiments, may be used to filter requests from previously unknown locations. For example, the IP address may be used as error validation by determining whether the IP address was previously associated with any location. If the IP address in the geolocation payload does not match any IP address stored in the database, this indicates that the first device was not at such a location, and a BSSID search may be unnecessary. In some embodiments, the match of the IP address in the geolocation payload does not need to be an exact match with an IP address in the database, but within a specific IP range. For example, some Internet service providers do not assign static IPs to specific devices, but rather dynamically assign them. In such cases, a range of IPs may be assigned to the same location based on subnetting practices. In other embodiments, the IP address in the geolocation payload must be identical to the IP of the previous location. In some embodiments, the IP address from the geolocation payload may be used to determine or improve the reliability of the first device's location based on a database.

[0067] In some embodiments, the determined location is optionally used to implement geofencing rules in operation 412. In some embodiments, the determined location is used to provide a geotag for additional data received from the first device. In some embodiments, the determined location is used to deliver location-based services such as targeted advertising, navigation services, tracking, search results, to provide data for analysis and research, or a combination thereof.

[0068] 6, an alternative embodiment of the method is presented. At 602, a geolocation payload is received. The geolocation payload includes a timestamp, and optionally, a BSSID, GNSS data, OS location data, and an IP address.

[0069] At 604, an error check is performed using the timestamp, for example, if a timestamp is not available, it may have a time before the previous entry or before the receiving device.

[0070] At 606, the geolocation payload is inspected to verify whether it contains a BSSID. If it is determined that the geolocation payload does contain a BSSID, at 608, a database is searched to determine whether a historical location with those BSSIDs is available for a first time period (e.g., a recent location, such as the past 24 hours). If a historical location is found for the first time period at 610, at 612, the location is verified to determine whether the determined location is within a predetermined radius of the device's last known location. If the device is within the predetermined radius, the database is updated with the new BSSID detected by the device. If the device is not within the predetermined radius, an alternate location lookup is initiated to verify that the location in the database is still accurate.

[0071] If no historical locations are found in the first time period, the search is expanded to include historical locations found in the second time period, at 610. If an available location is found in the second time period, at 614, the location is verified, at 612. If no available location is found in the second time period, the location proceeds to an alternative location search, at 616.

[0072] If the geolocation payload does not contain a BSSID at 606, then an alternative location lookup is performed at 616.

[0073] After the location is verified at 612, the database is updated at 618 with the new geolocation payload location and time, and optionally the BSSID and IP address.

[0074] A description of an embodiment with several components or features does not imply that any particular components and / or features are required. On the contrary, a variety of optional components are described to illustrate the wide variety of possible embodiments of the present invention.

[0075] It will be readily apparent that the various methods and algorithms described in this disclosure can be implemented by an appropriately programmed computer and / or computing device. Typically, a processor will receive instructions from a memory or similar device and execute those instructions, thereby performing one or more processes defined by those instructions. Furthermore, programs implementing such methods and algorithms may be stored and transmitted in several ways using various media (e.g., computer-readable media). Thus, embodiments are not limited to any specific combination of hardware and software.

[0076] Thus, a description of a process also describes at least one apparatus for performing the process, which in turn describes at least one computer-readable medium and / or computer-readable memory for performing the process. An apparatus for performing a described process may include components and / or devices (e.g., a processor, input and output devices) suitable for performing the process. A computer-readable medium may store program elements and / or instructions suitable for performing the described method.

Claims

1. receiving a geolocation payload from a first device having a receiver, the geolocation payload including a first plurality of basic service set identifiers (BSSIDs) detected by the first device; determining a location of the first device by searching a database containing a second plurality of BSSIDs and location data associated with the second plurality of BSSIDs using the first plurality of BSSIDs; A method comprising:

2. if the search does not find location data in the database based on the first plurality of BSSIDs, determining the location using an alternate location lookup; The method of claim 1 further comprising:

3. The method of claim 2 , wherein the alternative location lookup is a location determined using a geolocation API, a Global Navigation Satellite System (GNSS), or an OS location.

4. further comprising: aggregating the first plurality of BSSIDs into received BSSID combinations, each received BSSID combination including a first number of BSSIDs from the first plurality of BSSIDs; the second plurality of BSSIDs are stored as stored BSSID combinations, each stored BSSID combination including the first number of BSSIDs from the second plurality of BSSIDs; determining the location includes searching for a match in the stored BSSID combinations using the received BSSID combination; The method of claim 1.

5. The method of claim 4 , wherein the first number is at least three.

6. The method of claim 4 , wherein determining the location of the device includes searching the database using the received BSSID combination until at least one received BSSID combination is found.

7. The method of claim 4 , wherein the geolocation payload includes a signal strength for each of the first plurality of BSSIDs, and wherein the searching using the received BSSID combinations is based on the signal strength.

8. The method of claim 1 , wherein determining the location of the device searches the second plurality of BSSIDs from a first time period.

9. 10. The method of claim 1, wherein the geolocation payload further includes a received Internet Protocol (IP) address of the device, the database includes stored device IP addresses associated with the location data, and determining the location of the device uses the received IP address.

10. 10. The method of claim 9, wherein determining the location of the device comprises comparing the received IP address to determine whether it is within the range of stored device IP addresses.

11. The method of claim 1 , wherein the location data stored in the database comprises previously stored location data of the first device, the second device, or a combination thereof.

12. The method of claim 1 , wherein the location data stored in the database includes previously stored location data of a second device.

13. The method of claim 1 , wherein the location data stored in the database includes previously stored location data of a second device.

14. The method of claim 1 , further comprising enforcing a device rule based on the determined location of the device.

15. 2. The method of claim 1, further comprising updating the database with the determined location, the first plurality of BSSIDs, and a timestamp of the geolocation payload.

16. The method of claim 1 , further comprising validating the determined location against a previous location of the first device.

17. 1. A system for determining a location of a first device, comprising: a first device comprising: a receiver for detecting a first plurality of BSSIDs; a processor for collecting a geolocation payload including the detected BSSIDs; and a transmitter for transmitting the geolocation payload; a database comprising a second plurality of BSSIDs and their associated locations; and a second device including a receiver and a computer-readable medium, the computer-readable medium being configured to, when executed, cause the second device to: receiving a geolocation payload from a first device having a receiver, the geolocation payload including a first plurality of basic service set identifiers (BSSIDs) detected by the first device; determining a location of the first device by using the first plurality of BSSIDs to search a database including a second plurality of BSSIDs and location data associated with the second plurality of BSSIDs. system.