Patent Publication Number: US-11641604-B1

Title: Systems and methods for handovers between cellular networks on an asset gateway device

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. patent application Ser. No. 17/485,042, filed Sep. 24, 2021, entitled “SYSTEMS AND METHODS FOR HANDOVERS BETWEEN CELLULAR NETWORKS ON AN ASSET GATEWAY DEVICE,” which claims the benefit of priority of U.S. Provisional Patent Application No. 63/261,088, filed Sep. 10, 2021, entitled “SYSTEMS AND METHODS FOR HANDOVERS BETWEEN CELLULAR NETWORKS ON AN ASSET GATEWAY DEVICE,” which are each hereby incorporated by reference herein in their entirety and for all purposes. Any and all applications for which a foreign or domestic priority claim is identified in the Application Data Sheet as filed with the present application are hereby incorporated by reference under 37 CFR 1.57 for all purposes and for all that they contain. 
    
    
     TECHNICAL FIELD 
     Embodiments of the present disclosure relate to gateway devices, sensors, systems, and methods that allow for generation of network coverage maps and assisting in dynamic network activation and/or handovers between cellular networks. 
     BACKGROUND 
     The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section. 
     Fleet management devices may provide services such as location tracking, ELD compliance, routing and dispatch, wireless reporting and generating alerts, and the like. 
     SUMMARY 
     The systems, methods, and devices described herein each have several aspects, no single one of which is solely responsible for its desirable attributes. Without limiting the scope of this disclosure, several non-limiting features will now be described briefly. 
     Further, for fleet management devices used to provide services such as locating tracking (e.g., global position system (“GPS”) tracking), electronic logging device (“ELD”) compliance, routing and dispatch, wireless reporting and generating alerts, and the like, network connectivity is vital. However, when a device relies on a single subscription identification module (e.g., a “SIM”) to communicate with a wireless provider, network connectivity may not be reliable in certain areas. While currently available network handover systems and methods (e.g., roaming service) do provide a back-up SIM when a primary SIM is unavailable, such static network handover often fails to provide flexible, dynamic wireless network handover that can provide optimal network connectivity and efficiency depending on the location of a fleet management device. Further, while network handover systems enable the handover of devices between SIMS, when switching between SIMS (e.g., from a primary SIM to a back-up SIM), the back-up SIM may be sub-optimal for a particular device. For example, while the back-up SIM may enable network connectivity for the device, the device may have a network preference for the primary SIM (e.g., based on a carrier plan). Therefore, a particular device may desire to return to a primary SIM once the primary SIM reaches a particular level of reliability. While currently available network handover systems and methods (e.g., roaming service) do enable a device to switch between a back-up SIM and a primary SIM, such network handover may require a device to delink from the back-up SIM and attempt a connection with the primary SIM. Due to the delinking process and the subsequent connection attempt with the primary SIM, it is time consuming and difficult to efficiently complete a handover between the back-up SIM and the primary SIM. Additionally, when the primary SIM remains unreliable, the power consumed by the device to reconnect with the back-up SIM after the delinking process can be extensive and the loss in efficiency can be significant, so just determining when the device can switch from the back-up SIM to the primary SIM can be a significant issue. 
     Embodiments of the present disclosure relate to gateway devices, systems, and methods that allow for dynamic network activation and/or handovers. Embodiments of the present disclosure further relate to systems and methods that provide network provider maps to the gateway devices, systems, and methods. For example, according to various embodiments, the present disclosure includes one or more gateway systems that provide network communications and include a communication module. The communication module may include a primary network subscription identifier and a secondary network subscription identifier. The gateway system may further include a computer readable storage medium having program instructions embodied therewith. The gateway system may further include one or more processors that execute the program instructions to cause the gateway system to activate the gateway system on a secondary network using the secondary network subscription identifier. The one or more processors may further cause the gateway system to access a cached list of networks of the primary network subscription identifier. The one or more processors may further cause the gateway system to, while the gateway system is active on the secondary network, scan for other available networks. The one or more processors may further cause the gateway system to, based on the scan, determine that a network, from the cached list of networks of the primary network subscription identifier, is available. The one or more processors may further cause the gateway system to, in response to determining the network is available, disconnect the gateway system from the secondary network and connect the gateway system on the network using the primary network subscription identifier. 
     In various embodiments, the one or more processors may further cause the gateway system to identify one or more preferred networks of the primary network subscription identifier. The cached list of networks may include the one or more preferred networks. 
     In various embodiments, the one or more processors may further cause the gateway system to identify a current network associated with the primary network subscription identifier. The one or more processors may further cause the gateway system to dynamically update the cached list of networks based on identifying the current network associated with the primary network subscription identifier. 
     In various embodiments, the one or more processors may further cause the gateway system to identify one or more supported networks of the primary network subscription identifier. The one or more processors may further cause the gateway system to dynamically update the cached list of networks based on identifying the one or more supported networks of the primary network subscription identifier. 
     In various embodiments, the one or more processors may further cause the gateway system to identify a group of network subscription identifiers. The group of network subscription identifiers may include the primary network subscription identifier. The one or more processors may further cause the gateway system to identify supported networks of each of the group of network subscription identifiers. The one or more processors may further cause the gateway system to dynamically update the cached list of networks based on identifying the supported networks of each of the group of network subscription identifiers. 
     In various embodiments, the cached list of networks may include one or more networks previously utilized by the primary network subscription identifier. 
     In various embodiments, the cached list of networks may be based at least in part on a carrier plan with a network carrier associated with the primary network subscription identifier. 
     In various embodiments, the one or more processors may further cause the gateway system to activate the gateway system on the network using the primary network subscription identifier. The one or more processors may further cause the gateway system to determine to switch the gateway system from the network associated with the primary network subscription identifier to the secondary network associated with the secondary network subscription identifier. Activating the gateway system on the secondary network may be based at least in part on determining to switch the gateway system from the network associated with the primary network subscription identifier to the secondary network associated with the secondary network subscription identifier. 
     In various embodiments, to scan for other available networks, the one or more processors may further cause the gateway system to, while the gateway system is inactive on the network, scan for other available networks. 
     In various embodiments, the one or more processors may further cause the gateway system to determine one or more network characteristics of the network. The one or more network characteristics may include data transmissibility, data transmission speed, signal strength, signal availability, signal to noise ratio, or number of dropped calls or dropped communications. Determining that the network is available may be based on the one or more network characteristics. 
     In various embodiments, the one or more processors may further cause the gateway system to determine one or more network characteristics of the network. The one or more processors may further cause the gateway system to compare the one or more network characteristics with one or more network thresholds. Determining that the network is available may be based at least in part on comparing the one or more network characteristics with the one or more network thresholds. 
     In various embodiments, activating the gateway system on the network may be based on a network preference associated with the gateway system. The network preference may indicate which network subscription identifier of a plurality of network subscription identifiers is prioritized over other network subscription identifiers of the plurality of network subscription identifiers. 
     In various embodiments, the network preference may be based at least in part on a location of the gateway system or a prior activation of the gateway system on the network. 
     In various embodiments, activating the gateway system on the network may include activating the gateway system on the network after disconnecting the gateway system from the secondary network. 
     In various embodiments, the one or more processors may further cause the gateway system to identify a vehicle metric. The vehicle metric may be associated with at least one of: cruise control, coasting, accelerator pedal, idling, anticipating, engine rotations per minute, motor rotations per minute, or motor power. The one or more processors may further cause the gateway system to determine the vehicle metric corresponds to a particular status. The scan may be based on determining the vehicle metric corresponds to the particular status. 
     In various embodiments, the scan may include a passive scan, an active scan, a continuous scan, a periodic scan, or an aperiodic scan. 
     In various embodiments, the primary network subscription identifier and the secondary network subscription identifier may be each associated with a same network provider. 
     In various embodiments, the primary network subscription identifier may be associated with a first network provider and the secondary network subscription identifier may be associated with a second network provider. 
     In various embodiments, each of the primary network subscription identifier and the secondary network subscription identifier may include a particular subscriber identification module card, a particular subscriber identification module profile, or a particular carrier subscription. 
     According to various embodiments, the present disclosure includes a computer-implemented method. The computer-implemented method may include activating a gateway system on a secondary network using a secondary network subscription identifier. The gateway system may include a primary network subscription identifier and the secondary network subscription identifier. The computer-implemented method may further include accessing a cached list of networks of the primary network subscription identifier. The computer-implemented method may further include, while the gateway system is active on the secondary network, scanning for other available networks. The computer-implemented method may further include, based on the scan, determining that a network, from the cached list of networks of the primary network subscription identifier, is available. The computer-implemented method may further include, in response to determining the network is available, disconnecting the gateway system from the secondary network and connecting the gateway system on the network using the primary network subscription identifier. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The following drawings and the associated descriptions are provided to illustrate embodiments of the present disclosure and do not limit the scope of the claims. Aspects and many of the attendant advantages of this disclosure will become more readily appreciated as the same become better understood by reference to the following detailed description, when taken in conjunction with the accompanying drawings, wherein: 
         FIG.  1    illustrates a block diagram of an example operating environment  100  in which one or more aspects of the present disclosure may operate, according to various embodiments of the present disclosure. 
         FIG.  2    illustrates a block diagram including an example implementation of a management server, according to various embodiments of the present disclosure. 
         FIG.  3    illustrates a block diagram of an example gateway devices, according to various embodiments of the present disclosure. 
         FIGS.  4 A- 4 D  illustrate example diagram representing an example network provider map, according to various embodiments of the present disclosure. 
         FIG.  5    illustrates an example network provider map, according to various embodiments of the present disclosure. 
         FIG.  6    illustrates an example method of determining an initial network provider for a gateway devices, according to various embodiments of the present disclosure. 
         FIG.  7    illustrates an example method of performing dynamic network activations and/or handovers for a gateway devices, according to various embodiments of the present disclosure. 
         FIG.  8    illustrates an example method of generating a network provider map, according to various embodiments of the present disclosure. 
         FIG.  9    illustrates an example cached list of networks, according to various embodiments of the present disclosure. 
         FIG.  10    illustrates a flow diagram for handovers between cellular networks, according to various embodiments of the present disclosure. 
         FIG.  11    illustrates an example method of performing dynamic network activations and/or handovers for a gateway device, according to various embodiments of the present disclosure. 
         FIG.  12    illustrates an example method of determining available networks of a cached list of networks, according to various embodiments of the present disclosure. 
     
    
    
     DETAILED DESCRIPTION 
     Although certain preferred embodiments and examples are disclosed below, inventive subject matter extends beyond the specifically disclosed embodiments to other alternative embodiments and/or uses and to modifications and equivalents thereof. Thus, the scope of the claims appended hereto is not limited by any of the particular embodiments described below. For example, in any method or process disclosed herein, the acts or operations of the method or process may be performed in any suitable sequence and are not necessarily limited to any particular disclosed sequence. Various operations may be described as multiple discrete operations in turn, in a manner that may be helpful in understanding certain embodiments; however, the order of description should not be construed to imply that these operations are order dependent. Additionally, the structures, systems, and/or devices described herein may be embodied as integrated components or as separate components. For purposes of comparing various embodiments, certain aspects and advantages of these embodiments are described. Not necessarily all such aspects or advantages are achieved by any particular embodiment. Thus, for example, various embodiments may be carried out in a manner that achieves or optimizes one advantage or group of advantages as taught herein without necessarily achieving other aspects or advantages as may also be taught or suggested herein. 
     I. Overview 
     As mentioned above, according to various embodiments, the present disclosure includes one or more gateway devices that include at least a location determination module for generating location information associated with a gateway device. A gateway device may be attached to each vehicle in a fleet of vehicles. The location information may be analyzed by a remote computing system to, for example, determine location of the gateway device. The gateway device may include one or more network subscription identifiers, where each of the one or more network subscription identifiers is associated with a corresponding network provider. The gateway device may further include components for communicating with other devices/systems, including via one or more networks and/or one or more network providers. 
     In various embodiments, the gateway devices may be configured to automatically connect to a remote management server (for example, a “cloud”-based management server), and may transmit data associated with location of the gateway devices to the remote management server via wired or wireless communications. The gateway devices may further communicate with the management server or user computing devices, for example, to provide remote access to the gateway device, provide real-time information from the gateway device, receive configurations/updates, provide interactive graphical user interfaces, and the like. 
     In various embodiments, the management server may aggregate data associated with location and configuration from one or more gateway devices, and provide statuses, alerts, analyses, etc., including via interactive graphical user interfaces that may be accessed via user computing devices. The management server may provide interactive graphical user interfaces through which a user may configure one or more gateway devices. 
     The gateway device (e.g., a vehicle gateway device) can include multiple network subscription identifiers. Each of the network subscription identifiers may be a particular SIM card, a particular SIM profile (e.g., the network subscription identifiers may be SIM profiles on a SIM card), a particular carrier subscription, a particular SIM subscription, etc. to enable the gateway device to connect to different networks. Each of the network subscription identifiers may be utilized to identify the gateway device (e.g., an International Mobile Subscriber Identify (an “IMSI”) associated with the gateway device) and connect the gateway device to different networks based on identifying the gateway device. Each network subscription identifier may be associated with different networks and, based on an activation of the gateway device with a particular network subscription identifier, the gateway device can utilize the particular network subscription identifier to scan networks associated with the particular network subscription identifier. Based on identifying a particular network, the gateway device can utilize the particular network subscription identifier to send an identifier of the gateway device (e.g., an IMSI) to a wireless network provider associated with the network. Based on the identifier of the gateway device, the wireless network provider may enable the gateway device to access the network. Each of the network subscription identifiers may be associated with a same wireless network provider or may be associated with different wireless network providers. The gateway device can include a dynamic network handover system that can utilize two or more network subscription identifiers. For example, the dynamic network handover system can utilize separate SIM cards and/or separate SIM subscriptions on the same SIM card. The gateway device can be activated on a first network using a first network subscription identifier or on a second network associated using a second network subscription identifier. Based on network preference, a network subscription identifier can be designated as the primary network subscription identifier. Further, the dynamic network handover system can detect changes in network desirability associated with the two or more network subscription identifiers and automatically perform network handover between a network associated with a primary network subscription identifier and a network associated with a second network subscription identifier. 
     The gateway device may have a network preference to be activated on a network using the primary network subscription identifier. However, changes in conditions may cause a network handover to occur such that the gateway device is disconnected from the network using the primary network subscription identifier and connected to a network using a second (e.g., back-up) network subscription identifier. As the gateway device may have a network preference to be activated on a network using the primary network subscription identifier, while activated on the network using the second network subscription identifier, the gateway device can scan additional networks associated with different network subscription identifiers to determine if any of the additional networks are available and/or reliable. 
     In order to determine networks to scan, the gateway device can cache a list of networks that are associated with each network subscription identifier (e.g., one or more back-up network subscription identifiers and a primary network subscription identifier). For example, the gateway device can include a list of a plurality of networks that are preferred or supported networks for the primary network subscription identifier. The gateway device can cache the list of networks for each network subscription identifier in a local cache of the gateway device and periodically update, or receive updates for, the list of networks for each network subscription identifier. 
     Based on a network preference for a network associated with a primary network subscription identifier, the gateway device may scan, while activated on a network associated using a back-up network subscription identifier, the networks of the cached list of networks associated with the primary network subscription identifier to determine when a network associated with the primary network subscription identifier is available. For example, the gateway device may be connected to a network (e.g., based on network availability) using a back-up network subscription identifier (e.g., a non-preferred network subscription identifier) and may scan for networks associated with a primary network subscription identifier (e.g., a preferred network subscription identifier) to determine when the gateway device can perform a handover from the back-up network subscription identifier to the primary network subscription identifier. The gateway device can periodically or aperiodically scan networks from the list of networks. Further, the gateway device may determine whether a given network can be characterized as available based on identified network characteristics of the network. Based on determining that the network is available and/or reliable, the gateway device can perform a handover between the back-up network subscription identifier and the primary network subscription identifier. In order to perform the handover, the gateway device may be disconnected from the network associated with the back-up network subscription identifier and may be connected to an available network using the primary network subscription identifier. 
     Various aspects of the present disclosure may individually and/or collectively provide various technical advantages as described herein, and may overcome various disadvantages of prior systems and methods. For example, embodiments of the present disclosure may include gateway devices that include built-in wireless and/or wired communications capabilities. The gateway devices may automatically establish communication with a remote management server, user devices, data sources, and the like. The gateway devices may be remotely and centrally monitored and configured via the management server, for example, via a wired or wireless network. The gateway devices may include location determination module(s), user interface module(s), communication module(s), configurations database, network database, or server database that may operate autonomously based on a current configuration. The gateway device may include one or more determination modules, user interface modules, communication modules, configurations databases, network databases, server databases, etc. 
     The gateway devices may transmit location information associated with the gateway devices to a remote database (for example, via the management server and the network). Such location information or configuration information may be useable by the management server for providing further analyses, insights, alerts, summaries, etc. to users via interactive graphical user interfaces. The gateway devices may provide remote access to live location information via a web-server operating on the gateway devices. Additional devices may communicate with the gateway devices via wired or wireless, direct or networked communications. The gateway devices may provide interactive graphical user interfaces to such additional devices, enabling synchronization of gateway device status at multiple additional devices and/or other user devices. 
     Advantageously, according to various embodiments, the present disclosure may provide a network handover system that provides dynamic network handover between a network of a secondary network subscription identifier and a network of a primary network subscription identifier for gateway devices. 
     Embodiments of the disclosure will now be described with reference to the accompanying figures, wherein like numerals refer to like elements throughout. The terminology used in the description presented herein is not intended to be interpreted in any limited or restrictive manner, simply because it is being utilized in conjunction with a detailed description of certain specific embodiments of the disclosure. Furthermore, embodiments of the disclosure may include several novel features, no single one of which is solely responsible for its desirable attributes or which is essential to practicing the embodiments of the disclosure herein described. 
     Terms 
     In order to facilitate an understanding of the systems and methods discussed herein, a number of terms are defined below. The terms defined below, as well as other terms used herein, should be construed broadly to include the provided definitions, the ordinary and customary meaning of the terms, and/or any other implied meaning for the respective terms. Thus, the definitions below do not limit the meaning of these terms, but only provide example definitions. 
     User Input (also referred to as “Input”): Any interaction, data, indication, etc., received by a system/device from a user, a representative of a user, an entity associated with a user, and/or any other entity. Inputs may include any interactions that are intended to be received and/or stored by the system/device; to cause the system/device to access and/or store data items; to cause the system to analyze, integrate, and/or otherwise use data items; to cause the system to update to data that is displayed; to cause the system to update a way that data is displayed; and/or the like. Non-limiting examples of user inputs include keyboard inputs, mouse inputs, digital pen inputs, voice inputs, finger touch inputs (for example, via touch sensitive display), gesture inputs (for example, hand movements, finger movements, arm movements, movements of any other appendage, and/or body movements), and/or the like. Additionally, user inputs to the system may include inputs via tools and/or other objects manipulated by the user. For example, the user may move an object, such as a tool, stylus, or wand, to provide inputs. Further, user inputs may include motion, position, rotation, angle, alignment, orientation, configuration (for example, fist, hand flat, one finger extended, etc.), and/or the like. For example, user inputs may comprise a position, orientation, and/or motion of a hand or other appendage, a body, a 3D mouse, and/or the like. 
     Data Store: Any computer readable storage medium and/or device (or collection of data storage mediums and/or devices). Examples of data stores include, but are not limited to, optical disks (for example, CD-ROM, DVD-ROM, etc.), magnetic disks (for example, hard disks, floppy disks, etc.), memory circuits (for example, solid state drives, random-access memory (RAM), etc.), and/or the like. Another example of a data store is a hosted storage environment that includes a collection of physical data storage devices that may be remotely accessible and may be rapidly provisioned as needed (commonly referred to as “cloud” storage). 
     Database: Any data structure (and/or combinations of multiple data structures) for storing and/or organizing data, including, but not limited to, relational databases (for example, Oracle databases, PostgreSQL databases, etc.), non-relational databases (for example, NoSQL databases, etc.), in-memory databases, spreadsheets, comma separated values (CSV) files, eXtendible markup language (XML) files, TeXT (TXT) files, flat files, spreadsheet files, and/or any other widely used or proprietary format for data storage. Databases are typically stored in one or more data stores. Accordingly, each database referred to herein (for example, in the description herein and/or the figures of the present application) is to be understood as being stored in one or more data stores. Additionally, although the present disclosure may show or describe data as being stored in combined or separate databases, in various embodiments such data may be combined and/or separated in any appropriate way into one or more databases, one or more tables of one or more databases, etc. As used herein, a data source may refer to a table in a relational database, for example. 
     Example Operating Environment 
       FIG.  1    illustrates a block diagram of an example operating environment  100  in which one or more aspects of the present disclosure may operate, according to various embodiments of the present disclosure. The operating environment  100  may include one or more user devices  160 , a management server  150 , one or more gateway devices  110 , one or more data sources  140 , and one or more additional devices  120 . The various devices may communicate with one another via, for example, one or more networks  130 , as illustrated. 
     In general, the gateway device  110  comprises a housing including processor(s), memory, data input/output (I/O) interface(s), communication module(s), location determination module(s), controller(s), and etc. For example, the gateway device  110  may be installed to or positioned inside a moving vehicle. The gateway device  110  may determine location information associated with the gateway device, determine a current configuration information associated with the gateway device, and transmit the location information and configuration information to the management server based at least in part on the current configuration of the gateway device  110 . 
     Configurations of the gateway device  110  may include default network information, location determination frequency, organization preference information, and the like, as described herein. 
     The default network information, the location information, the configuration information, and other types of information associated with the gateway device  110  may be stored in a memory of the gateway device  110  (for example, a computer readable storage medium). In some embodiments, such data may be automatically transmitted intermittently or continuously from the gateway device  110  to the management server  150 . The management server  150  may thereby receive location information and configuration information from multiple gateway devices  110 , and may aggregate and perform further analyses on the location information and configuration information from multiple gateway devices  110 . 
     The management server  150  may communicate with the gateway device(s)  110  to enable remote, rapid configuration of the gateway device(s)  110 . Such configuration may be accomplished via interactive graphical user interfaces provided by the management server  150 . In some embodiments, such interactive graphical user interfaces may be accessible by the user device(s)  160 . Via the management server  150 , and/or directly by communication with the gateway device(s)  110 , user device(s)  160  may access real-time views of status, location information analysis, configuration information analysis, and the like of the gateway device(s)  110 . Communications with the gateway device(s)  110  may be accomplished via web-servers executing on the gateway devices  110  themselves. 
     In some embodiments, the management server  150  may have access to network subscription information associated with network providers. The network subscription information may include pricing information, subscription term information, and the like. Based at least in part on the network subscription information, the management server  150  may automatically determine appropriate configuration for the gateway device(s)  110 . For example, by comparing network subscription information associated with network providers, the management server  150  may identify a default network provider and network activation and handover schemes. 
     In general, the data sources  140  may be any type of database or server that can collect and store various types of information, for example, network availability information, network drop information, data transmissibility information, data transfer speed information, network connectivity information, and the like. The data sources  140  may be remote from the management server  150  and may have communication capabilities to wireless communication with the management server  150 , for example, via the network  130 . 
     The additional device(s)  120  may include sensors, programmable logic controllers (PLCs), and other devices that may be capable of generating and providing the gateway devices  110  real-time or delayed visibility via alerts, notifications, and data associated with assets associated with the gateway device  110 . For example, the asset may be a trailer transported by a vehicle. In this regard, the additional devices  120  get collect and generate information related to the trailer and such information may include, but not limited to, temperature of the trailer, pressure inside the trailer, video feedback of the trailer, trailer door operation, and the like. 
     In general, the user devices  160  can be any computing device such as a desktop, laptop or tablet computer, personal computer, tablet computer, wearable computer, server, personal digital assistant (PDA), hybrid PDA/mobile phone, mobile phone, smartphone, set top box, voice command device, digital media player, and the like. A user device  160  may execute an application (for example, a browser, a stand-alone application, etc.) that allows a user to access interactive user interfaces, view images, analyses, or aggregated data, and/or the like as described herein. In various embodiments, users may interact with various components of the example operating environment  100  (for example, the management server  150 , the gateway device(s)  110 , the additional device(s)  120 , etc.) via the user device(s)  160 . Such interactions may typically be accomplished via interactive graphical user interfaces, however alternatively such interactions may be accomplished via command line, and/or other means. 
     The network  130  may include any wired network, wireless network, or combination thereof. For example, the network  130  may be a personal area network, local area network, wide area network, over-the-air broadcast network (for example, for radio or television), cable network, satellite network, cellular telephone network, or combination thereof. As a further example, the network  130  may be a publicly accessible network of linked networks, possibly operated by various distinct parties, such as the Internet. In some embodiments, the network  130  may be a private or semi-private network, such as a corporate or shared intranet. The network  130  may include one or more wireless networks, such as a Global System for Mobile Communications (GSM) network, a Code Division Multiple Access (CDMA) network, a Long Term Evolution (LTE) network, or any other type of wireless network. The network  130  can use protocols and components for communicating via the Internet or any of the other aforementioned types of networks. For example, the protocols used by the network  130  may include Hypertext Transfer Protocol (HTTP), HTTP Secure (HTTPS), Message Queue Telemetry Transport (MQTT), Constrained Application Protocol (CoAP), and the like. Protocols and components for communicating via the Internet or any of the other aforementioned types of communication networks are well known to those skilled in the art and, thus, are not described in more detail herein. 
     In some embodiments, the network  130  may include an external network, a local network, or both. The local network can be local to a particular organization (for example, a private or semi-private network), such as a corporate or shared intranet. In some implementations, devices may communicate via the local network without traversing the external network such as the Internet. In some implementations, devices connected via the local network may be walled off from accessing the external network (for example, the Internet), for example, by a gateway device, unless specifically granted access to the external network. Accordingly, for example, the user device(s)  160  may communicate with the gateway device  110  directly (via wired or wireless communications) or via the local network, without traversing the external network. Thus, even if the external network is down, or is not currently providing connectivity to the management server  150 , the gateway device(s)  110 , and the user device(s)  160  may continue to communicate and function via the local network (or via direct communications). 
     As described herein, the gateway devices  110  may be capable of, or configured to, communicate via multiple networks  130 . Accordingly, while the diagram of  FIG.  1    include a representation of a single network, it is to be understood that the network  130  may include multiple networks  130 , each of which may be operated by different network providers, and which may utilize different communications technologies, protocols, bands, etc. 
     In various embodiments, communications among the various components of the example operating environment  100  may be accomplished via any suitable means. For example, the gateway device(s)  110  may communicate with one another, the additional device(s)  120 , the data sources  140 , the management server  150 , and/or the user device(s)  160  via any combination of the network  130  and any other wired or wireless communications means or method (for example, Bluetooth, WiFi, infrared, cellular, etc.). 
     Further details and examples regarding the implementations, operation, and functionality, including various interactive graphical user interfaces, of the various components of the example operating environment  100  are described herein in reference to various figures. 
     Example Management Device/Server 
       FIG.  2    illustrates a block diagram including an example implementation of a management server  150 , according to various embodiments of the present disclosure. The management server  150  may be a Web or cloud server, or a cluster of servers, running on one or more sets of server hardware. In an embodiment, the management server  150  may work for multiple organizations with different administrators that may have, for example, multiple gateway devices and additional devices. 
     According to various embodiments, management server  150  may include one or more communication interfaces  215 , one or more processors  210 , and one or more computer readable storage mediums  250 , each of which may be in communication with one another. The computer readable storage medium  250  includes data processing module  252 , user interface module  254 , network manager module  256 , devices database  258 , location database  260 , organizations database  262 , network database  264 , configuration database  266 , and a network provider database  268 . In various implementations, the various databases of the management server  150  may be combined or separated/partitioned as appropriate to implement the functionality described herein, and to maintain security and separation of data, for example, for different organizations. In various implementations, the various databases may or may not be stored separately from the management server  150 . 
     In various implementations one or more interfaces, APIs, communication layers, buses, interconnects, wires/cables, etc. may be used to interconnect the various components of the management server  150 . 
     In operation, the one or more communication interfaces  215 , one or more processors  210 , and one or more computer readable storage mediums  250  communicate with one another to, for example, execute by the processor(s)  210  computer program instructions (for example, as provided by the user interface module  254 ); receive, access, and transmit data (for example, to/from the databases and via the communication interface(s)  215 ); and/or the like. In general, the processor  210 , the communication interface  215 , and the computer readable storage medium  250  enable the functionality of the management server  150  as described herein. Further implementation details are described below. 
     In operation, the communication interface(s)  215  may provide wired and/or wireless communications with other devices and networks, as described herein. In various embodiments, communications among the various components of the example operating environment  100  may be accomplished via any suitable means. For example, the management server  150  may communicate with the gateway device  110 , the data source(s)  140 , the additional device(s)  120 , and/or the user device(s)  160  via any combination of the network  130  or any other communications means or method (for example, Bluetooth, WiFi, infrared, cellular, etc.). Accordingly, the communications interface(s)  215  may include one or more of wired and wireless transceivers, such as a Joint Test Action Group (JTAG) transceiver, a Bluetooth or Bluetooth Low Energy (LE) transceiver, an IEEE 802.11 transceiver, an Ethernet transceiver, a USB transceiver, a Thunderbolt transceiver, an infrared transceiver, a wireless cellular telephony transceiver (for example, 2G, 3G, 4G, 5G), or the like. 
     In operation, data processing module  252  may provide processing and analysis of data (for example, data received from the various devices, including the gateway devices) as described herein. The data processing/analysis may usefully provide insights and information that may be provided via various interactive graphical user interfaces, as described herein. 
     In operation, the user interface module  254  may provide the various interactive graphical user interface functionality described herein. This may include, for example, generating user interface data useable for rendering the various interactive user interfaces described. The user interface data may be used by various computer systems, devices, and/or software programs (for example, a browser program of a user device  160 ), to render the interactive user interfaces. The interactive user interfaces may be displayed on, for example, electronic displays (including, for example, touch-enabled displays). For example, the user interface module  254  may provide various network accessible interactive graphical user interfaces, for example, to allow the administrators of the various organizations and devices to create and log into an account associated with an organization to which a set of devices belong (for example, gateway devices and additional devices), and manage, and access data associated with, those devices as described herein. 
     In operation, the network manager module  256  may provide communication with and configuration and management of the various devices associated with each organization. This may include, for example, receiving and managing information related to the various devices (for example, gateway devices and additional devices) at the time of manufacture, associating devices with particular organizations when they are purchased/claimed and implemented by the organizations (for example, the claiming may be performed at least in part by populating the devices database  258  and the organizations database  262  with appropriate information when the devices are associated with an organization), receiving data from the various devices (for example, and storing the data in the devices database  260  or other appropriate database), sending data to various devices (for example, sending and/or syncing configurations stored in the configurations database  266  to/with various devices), and/or the like. 
     In operation, the devices database  258  may store information regarding the gateway devices  110  and/or additional devices  120 , and various relationships and associations among these devices. This information may include identifiers associated with these devices, location data received from these devices, network preference data from these devices, and etc. 
     In operation, the locations database  260  can include map information and location information. The map information can be associated with different geographical area and may further be linked with network information stored within the network database  264 . The location information may be associated with various locations associated with the gateway devices  110 . For example, the location information can include longitudinal and latitudinal information associated with the gateway devices  110 . In some embodiments, the location information can be associated the location of the gateway devices  110  within a map tile of a grid. 
     In operation, the organizations database  262  may store information regarding the organizations to which the gateway devices  110  or additional devices  120  belong. In various embodiments, different configurations from the configurations database  266  may be applied for the gateway devices  110  or the additional devices  120  based at least in part on the organization the gateway devices  110  or additional devices  120  belong. 
     In operation, the network database  264  may store network information related to one or more network service providers and the network provided by those network service providers. The network information may include, but not limited to, data transmissibility, data transmission speed, signal strength, signal availability, signal to noise ratio, or number of dropped calls or disconnected wireless communications associated with each of the network service providers associated with the gateway device  110 . The management server  150  may receive the network information stored in the network database  264  from the data sources  140 , the gateway devices  110 , the user devices  160 , or any other remote data servers that may collect, store, or process network provider related information. 
     In various embodiments, the network information stored in the network database  264  may include network desirability information. The network desirability information may include at least one of, or any combination of the network information as described herein. As described herein, the gateway device  110  can be associated with one or more network service providers, wherein each of the one or more network service providers has corresponding network desirability information. In some embodiments, the network desirability information for a given network service provider may vary based at least in part on the location of the gateway device  110 . In some embodiments, the network desirability information may be include a network desirability index. The network desirability index may represent the overall desirability of a network provider. The network desirability index may be a number that vary between 0 and 1. Alternatively, the network desirability index may vary between 0 and 100. 
     In operation, the network information stored in the network database  264  may be linked with the location information stored in the locations database  260 , as described herein. The network information and the location information may be combined to create a network provider map. The network provider map may indicate which areas of the map may be associated with which network provider associated with the gateway device  110 . Based on the information provided by the network provider map, the gateway device  110  may perform dynamic network handovers as described herein. In some embodiments, the network provider maps may be stored within the network database  264 , or in any other modules or databases of the management server  150 . 
     In operation, the configurations database  266  may store information regarding configurations of the gateway devices  110  or the additional devices  120 . The information stored in the configuration database  266  may be configuration information specific to certain gateway devices  110  or certain organizations associated with the gateway devices  110 . 
     In operation, the network provider database  268  may store information regarding a list of networks associated with one or more network providers. For example, the network provider database  268  may store information regarding networks supported by or preferred by one or more network providers. In some embodiments, the management server  150  may not store the network provider database  268 . For example, the network provider database  268  may be stored locally at a gateway device as a network cache. Further, the information stored in the network provider database  268  may be a list of networks specific to a particular gateway device, a particular type of network provider, a particular location, etc. 
     In various embodiments, the management server  150  may include various other modules, components, engines, etc. to provide the functionality as described herein. It will be appreciated that additional components, not shown, may also be part of the management server  150  and, in certain embodiments, fewer components than that shown in  FIG.  2    may also be used in the management server  150 . For example, the management server  150  may include a security module used to manage cryptographic keys, certificates, and/or other data associated with establishing secure communication with various other devices. For example, the devices database  260  may include an identifier of each device (for example, a serial number), a secret to be used to establish a secure communication with the devices of the same organization, and/or a mechanism to authenticate the devices&#39; identity (for example, the public key of a private public key pair, the private key of which was embedded or stored in the device during the manufacturing, etc.). 
     Example Gateway device 
       FIG.  3    illustrates a block diagram of an example gateway device  110 , according to various embodiments of the present disclosure. A gateway device  110  may comprise one or more location determination modules  310 , one or more user interface modules  320 , and one or more controller modules  330 . In various implementations, the location determination modules  310 , the user interface module  320 , and the controller module  330  may be housed in different housings, and/or may be housed in a same housing. In various implementations, the various components and functionality of the gateway device  110  (including the components and functionality of the location determination modules  310 , the under interface module  320 , and the controller module  330 ) described herein may be combined, separated, and/or re-organized. 
     The location determination module  310  may include one or more location determination devices  312  (e.g., global positioning system (GPS) devices, GLONASS devices, and/or the like). In some embodiments, the location determination devices  312  may determine location of the gateway device  110  using various methods including, but not limited to, Wi-Fi, Bluetooth, Internet Protocol (IP) look up, and proximity to beacons (for example, other location determination devices  312 ). The location determination device(s)  312  may determine location of the gateway device  110  and generate location information associated with the location of the gateway device  110 . The location information may include geographical positioning information (e.g., GPS coordinates, latitudinal or longitudinal data, and/or the like) that may represent the location of the gateway device  110 . Additionally or alternatively, the location information may identify a map tile within a grid for identifying or estimating the location of the gateway device  110 . 
     The user interface module  320  may generate various graphical user interfaces that can be displayed on other devices, for example, the user devices  160 . The graphical interfaces may be transmitted, for example, to the user devices  160  via the network  130 . The graphical user interfaces may be interactive. The graphical user interfaces may be able to detect user inputs and such user inputs may be transmitted to the gateway device  110  via the network  130  and the user interface module  320 . The user interface module  320  may furthermore, for example, generate user interface data useable for rendering the various interactive user interfaces. 
     The controller module  330  may include one or more processors  332 , one or more communication modules  340 , and one or more computer readable storage mediums  350 , each of which may be in communication with one another. The computer readable storage medium(s)  350  may include network data  354 , configurations data  356 , web server module  358 , and network cache  360 . The configurations data  356 , the web server module(s)  358 , and/or the network cache  360  may be stored in one or more databases of the controller module  330 , or may be stored on virtualization mediums in the cloud. The communication module  340  may include one or more transceivers and one or more network subscription identifiers (e.g., subscriber identification modules (SIMs)), wherein each of the one or more network subscription identifiers is associated with a network provider. In various implementations one or more buses, interconnects, wires/cables, etc. may be used to interconnect the various components of the controller module  330 , and of the gateway device  110  more generally. 
     In operation, the one or more of the communication modules  340 , one or more processors  332 , and one or more computer readable storage mediums  350  communicate with one another to, for example, execute by the processor(s)  332  computer program instructions (for example, as provided by the configurations data  356 ); receive, access, and transmit data (for example, to/from the configurations data  356  or network data  354 , via the communication module(s)  340 ); and/or the like. In general, the controller module  330 , in connection with the location determination module  310  and the user interface module  320 , enables the functionality of the gateway device  110  as described herein. Further implementation details are described below. 
     In operation, the communication module(s)  340  may provide wired and/or wireless communications with other devices and networks, as described herein. In various embodiments, communications among the various components of the example operating environment  100  may be accomplished via any suitable means. For example, the gateway device(s)  110  may communicate with one another, the additional device(s)  120 , the management server  150 , and/or the user device(s)  160  via the network  130  or any other communications means or method (for example, Bluetooth, WiFi, infrared, cellular, etc.). Accordingly, the communication module(s)  340  may include one or more of wired and wireless transceivers, such as a Joint Test Action Group (JTAG) transceiver, a Bluetooth or Bluetooth Low Energy (LE) transceiver, an IEEE 802.11 transceiver, an Ethernet transceiver, a USB transceiver, a Thunderbolt transceiver, an infrared transceiver, a wireless cellular telephony transceiver (for example, 2G, 3G, 4G, 5G) configured with one or more radios for communicating on various cellular networks (e.g., GSM, CDMA, LTE, EDGE, and/or the like), or the like. As noted herein, the communications module(s)  340  may further include one or more application programming interfaces (“APIs”). 
     In operation, the network data  354  may include, for example, association between the network subscription identifiers  342  to the network providers, network communication settings, router configurations, firewall settings, network sharing settings, IP address settings, user authentication settings, network traffic settings, and the like. The network data  354 , together with the configuration data  356 , may control and facilitate network connectivity of the gateway device  110  with the network  130 , the management server  150 , the user device(s)  160 , and the additional device(s)  120 . 
     In operation, the configuration data  356  includes one or more configurations that configure operation of the gateway device  110 , as described herein. For example, such configurations may be received from a user via the user device(s)  160  or the management server  150  (other devices in communication with the gateway device  110 ). Each of the configurations stored in the configuration data  356  may include network preference information, location determination frequency, network connectivity information, and the like. The gateway device  110  may store multiple configurations in the configuration data  356 , which may be selectively run or implemented, for example, via user selection via the management server  150  or the user device(s)  160 . 
     In various embodiments, the configurations of the gateway device  110  may include default network settings. For example, the default network settings may indicate which network provider is to be used for the gateway device  110  to establish network communications. The default network settings may be based at least in part on network preference associated with an organization associated with the gateway device  110 , cost information associated with network providers associated with the gateway device  110 , or any other information associated with the network providers and the organization associated with the gateway device  110 . 
     In operation, the web server module(s)  358  may include program code executable, for example, by the processor(s)  332  to provide a web-based access (for example, interactive graphical user interfaces accessible via web-based communications protocols, rendering of interactive graphical user interfaces written in web-based languages by web-based browsers, etc.) to the gateway device  110 , for example, to configure the gateway device  110  and/or access data of the gateway device  110 . Such web-based access may be via one or more communications protocols, for example, TCP/IP, UDP, WebRTC, etc., and may include one or more secure communications/cryptographic protocols, for example, TLS, SSL, etc., and may further be provided via communications module(s)  340 . This may include, for example, generating user interface data useable for rendering the various interactive user interfaces described. The user interface data may be used by various computer systems, devices, and/or software programs (for example, a browser program of a user device  160 ), to render the interactive user interfaces. The interactive user interfaces may be displayed on, for example, electronic displays (including, for example, touch-enabled displays). In various implementations one or more of the management server  150  and the user device(s)  160  may communicate with the gateway device  110  via one or more of the web server module(s)  358 . 
     In operation, the network cache  360  may store information regarding a list of networks associated with one or more network providers. The one or more network providers may be network providers associated with or linked to the network subscription identifiers  342 . In some embodiments, the gateway device  110  may not store the network cache  360 . In other embodiments, multiple devices and/or systems may store the network cache  360 . Further, the information stored in the network cache  360  may be a list of networks specific to a particular gateway device, a particular type of network provider, a particular location, etc. 
     The location information, the network data, or the configuration data may be communicated, for example, via the communications module(s)  340 , to other devices, such as the management server  150  or user device(s)  160 . For example, the gateway device  110  may be configured to reliably and securely transmit data to the management server  150  regardless of whether the connectivity of the gateway device  110  (for example, to the management server  150 ) is intermittent. For example, data may be stored by the gateway device  110  until connectivity is available, and may then by transmitted to the management server  150 . In another example, data may be stored by the gateway device  110  for a predetermined duration, and may then be transmitted to the management server  150 . 
     In various implementations, as described above, the gateway device(s)  110  may communicate with one or more additional devices  120 , which may include, for example, sensors or programmable logic controller (PLC) capable of generating and providing real-time or delayed alerts, notifications, data, for example, related to assets associated with the gateway device(s)  110 . Communications with additional device(s)  120  may be via direct (for example, not via a network) wired and/or wireless communications, and/or may be via a network (for example, a local network) wired and/or wireless communications. 
     In various embodiments, the gateway device  110 , may include various other modules, components, engines, etc. to provide the functionality as described herein. It will be appreciated that additional components, not shown, may also be part of the gateway device  110 , and, in certain embodiments, fewer components than that shown in  FIG.  3    may also be used in the gateway device  110 . 
     In various embodiments, firmware of the gateway device  110  may be updated such that the gateway device  110  may provide additional functionality. Such firmware updating may be accomplished, for example, via communications with the management server  150 , thereby enabling updating of multiple gateway device  110  remotely and centrally. Additional functionality may include additional ways of communicating with additional devices  120 , additional configurations or options for configurations, and/or the like. 
     Example Embodiments of Network Provider Map 
       FIGS.  4 A- 4 D  illustrate various examples of a network provider map. The examples of a network provider map illustrated in  FIGS.  4 A- 4 D  are for purposes of describing the processes of dynamic network handovers only and by no way limit the illustration of network provider maps. 
     An example network provider map is shown in  FIGS.  4 A- 4 D , which may include a first map tile  402 , a second map tile  404 , and a third map tile  406 . The network provider map can further include location indicators  408 ,  418 , and  428 . The location indicators  408 ,  418 , and  428  may represent different locations of the gateway device  110  within the network provider map. The map tiles may represent geographical areas or geographical regions of a geographical map. The network provider map and the map tiles described herein may be overlaid over, or comprise a part of, a geographical map. 
     Each of the first map tile  402 , the second map tile  404 , and the third map tile  406  may include information associated with network providers associated with the gateway device  110  and/or organization(s) associated with the gateway device  110 . For example, each of the first map tile  402 , the second map tile  404 , and the third map tile  406  may include information associated with two network providers, three network providers, five network providers, ten network providers, and the like. The network providers associated with the first map tile  402 , the second map tile  404 , the third map tile  406  may be different or the same. In some embodiments, each of the map tiles may be associated with a network provider that has the best/better network desirability in respective, corresponding map tile. 
     In various embodiments, each of the first map tile  402 , the second map tile  404 , and the third map tile  406  may be associated with network desirability information of network providers associated with the gateway device  110  and/or organization(s) associated with the gateway device  110 . For example, the first map tile  402  may be associated with Network Provider A and Network Provider B that may be associated with the gateway device  110 . Moreover, as described herein, the first map tile  402  may be associated with a network desirability information associated with the Network Provider A and Network Provider B. 
     In the examples illustrated by  FIGS.  4 A- 4 D , the first map tile  402  may represent a geographical area in which Network Provider A has high network desirability. The third map tile  406  may represent a geographical area in which Network Provider B has high network desirability. The second map tile  404 , which may be an overlap between the first map tile  402  and the third map tile  406 , may represent a geographical area in which both Network Provider A and Network Provider B have high network desirability. 
     In some embodiments, for example, the network desirability information may include a network desirability index. The network desirability index may be a number ranging between 0 and 1, between 0 and 10, between 0 and 100, or the like. The network desirability index may represent a degree of network desirability. For example, a network desirability index having a small value may represent poor, inadequate, or low network desirability, a network desirability index having a large value may represent good, adequate, or high network desirability. By comparing network desirability index of different network providers, the gateway device  110  may determine which network provider has the better/poorer network desirability. 
       FIG.  5    illustrates another example network provider map  500  according to various embodiments described herein. The network provider map  500  may include map tiles  502 , grid lines  504 , map tile identifiers  506 , and a location indicator  510 . As described herein, one or more network provider maps may be stored in the gateway device, and may be used by the gateway device to implement the various functionality described herein. The stored network provider maps may be stored on the gateway device during manufacture of the gateway device, and may be updated thereafter periodically or on demand, via communication with the management server.  FIGS.  4 A- 4 D and  5    provide visual representations of example network provider maps for illustrative and explanatory purposes, however it is to be understood that the network providers maps may or may or may not be displayed by the gateway device visually, and may cover a much larger geographical area (e.g., a city, country, multiple countries, a continent, etc.) that are represented in the examples of  FIGS.  4 A- 4 D and  5   . 
     The grid lines  504  may define boundaries of each of the map tiles  502 . In various embodiments, the grid lines  504  may extend vertically and horizontally to define a rectangular grid on the network provider map  500 . The grid on the network provider map  500  may be regular or irregular. The sizes or shapes of the map tiles  502  may or may not be the same. The shape of the map tiles  502  may be rectangular, square, quadrilateral, triangular, hexagonal, circular, another shape, and the like. The boundaries of the map tiles  502  may not be straight. In various implementations, the map tiles may or may not overlap with one another. In various implementations, the map tiles may each correspond to a same size geographical area, or varying sizes of geographical areas. For example, the map tiles may correspond to geographical areas of approximately 1 block, 1 square mile, 5 square miles, 10 square miles, and/or any other size of geographical area. 
     Each map tile  502  may be associated with a network provider that has the best/better network desirability for the corresponding map tile  502 . For example, map tile “7” of the network provider map  500  may be associated with Network Provider A since Network Provider A&#39;s network desirability index (that is, 0.9) is greater than that of Network Provider B (that is, 0.2). Likewise, map tile “14” of the network provider map  500  may be associated with Network Provider B since Network Provider B&#39;s network desirability index (that is, 0.9) is greater than that of Network Provider A (that is, 0.1). Additionally, some of the map tiles  502  of the network provider map  500  may not be associated with any of the network providers associated with the gateway device  110  for various reasons. For example, map tile “12” of the network provider map  500  may not be associated with either Network Provider A or Network Provider B because network desirability indexes for both networks are bad. Likewise, map tile “13” of the network provider map  500  may not be associated with either Network Provider A or Network Provider B because network desirability indexes for both networks are good. In some embodiments, the map tiles are not “associated” with any particular network provider, but rather each of the map tiles is associated with network provider desirability information as described herein. 
     In some embodiments, the map tiles  502  may be given a respective corresponding map tile identifier  506  that can uniquely identify each of the map tiles  502 . The map tile identifiers  506  may include alphabets, numbers, or both. The map tile identifiers  506  may be assigned in a specific order. For example, as shown in  FIG.  5   , the first map tile  502  located at the top left corner may be given “1” as its map tile identifier  506 , while the last map tile  502  located at the bottom right corner may be given “25” as its map tile identifier  506 . In some embodiments, the map tile identifier  506  may be generated at random. 
     In operation, each of the map tiles  502  may include network information of network providers associated with the gateway device  110 . In the example illustrated in  FIG.  5   , the gateway device  110  is associated with network providers A and B and each of the map tiles  502  may be associated with network desirability information of network providers A and B. In some embodiments, each of the map tiles  502  may be associated with network desirability indexes described herein. For example, map tile “13” may include network desirability indexes of 0.8 and 0.9 for Network Provider A and Network Provider B, respectively. 
     As described herein, a network provider map  500  may be associated with one or more network providers such that it contains network desirability information associated with the one or more network providers. Alternatively, in some embodiments, each network provider map  500  may be associated with a single network provider. For example, when the gateway device  110  is activated on an initial network provider (for example, Network Provider A), it may have access to a network provider map associated with the initial network provider. When the gateway device  110  is simultaneously activated on the initial network provider and a second network provider, it may have access to a network provider map associated with the initial network provider and another network provider map associated with the second network provider. Alternatively, a gateway device  110  may have access to network provider maps associated with each of network providers that it is associated with, regardless of which network provider it is activated on. 
     Example Embodiments of Network Handovers 
     In operation, as discussed herein, the gateway device  110  may activate on an initial network provider based at least in part on network desirability information and/or preference information associated with network providers associated with the gateway device  110 . For example, the preference information may be provided by users or organizations associated with the gateway device  110 . The preference information may be based at least in part on cost, network desirability, network reliability, network connectivity, network data transmissibility, and the like associated with each of available network providers associated with the gateway device  110 . The preference information may or may not depend on the location of the gateway device  110 . For example, the preference information may indicate that Network Provider A is a preferred network provider when the gateway device  110  is located within urban areas and Network Provider B is a preferred network provider when the gateway device  110  is located within suburban areas. In some embodiments, the preference information may indicate which network provider is prioritized in different situations/circumstances. 
     Referring to  FIG.  4 A , the location of the gateway device  110  is represented by the location indicator  408 , which is positioned within the first map tile  402 . As such, the location of the gateway device  110  may be associated with the first map tile  402  of the network provider map. The location of the gateway device  110  represented by the location indicator  408  may be determined by the location determination module  310  of the gateway device  110 . 
     In operation, the gateway device  110  may choose an initial network provider for activation, for example, network provider A, based at least in part on the network desirability information as described herein. In some embodiments, the gateway device  110  may determine the initial network provider based at least in part on its location. In the example illustrated in  FIG.  4 A , the gateway device  110  may determine its initial network provider based at least in part on comparison or analysis of network desirability information associated with the first map tile  402 . An example method of determining an initial network provider will be further described herein. 
     In operation, the gateway device  110  may move from one location associated with one map tile to another location associated with a different map tile. When the gateway device  110  moves to a subsequent, different map tile, it may receive/retrieve/access network desirability information associated with the subsequent map tile. Based at least in part on the network desirability information of network providers associated with the subsequent map tile, the gateway device  110  may determine whether to perform an additional network activation and/or handover (that is, switch from one network provider to another). 
     In some embodiments, the gateway device  110  may prefer to stay activated on its initial network provider, and not activate on a second network provider. As such, the gateway device  110  may consider preference information in addition to network desirability information to determine whether to switch from its initial network provider to a different network provider, and to activate on that different network provider. The preference information may provide different standard/condition for performing network activations and/or handovers in following example situations: (1) when the gateway device  110  is activated only on its initial network provider; and (2) when the gateway device  110  is activated on more than one network providers. As described herein, when the gateway device  110  is activated only on its initial network provider, it may prefer to remain on the initial network provider. On the other hand, when the gateway device  110  is activated on more than one network providers, it may prefer to switch to a network provider that provides the best (or the better) network desirability. 
     For example, the gateway device  110  may move from the first map tile  402  to the second map tile  404  as illustrated by the position indicators  408  and  418  in  FIGS.  4 A and  4 B . The gateway device  110  may be activated only on, for example, Network Provider A. When the gateway device  110  determines that it has moved to the second map tile  404 , it may receive/retrieve/access network desirability information associated with the second map tile  404 . The gateway device  110  may analyze the network desirability information associated with the second map tile  404  to determine whether to perform a network activation and/or handover (that is, switch from Network Provider A to a different network provider (for example, Network Provider B). 
     In some embodiments, when the gateway device  110  is activated on more than one network provider (for example, Network Provider A and Network Provider B), the management server  150  may generate updated map tiles that identify network providers that have the best/better network desirability. For example, the gateway device  110  initially activated on a first network may later be activated on a second network after moving to a new, different location. Upon the gateway device  110  being activated on the second network, the management server  150  may update at least one or all of map tiles of a network provider map. For example, each of updated map tiles may be associated with a network provider having a network desirability (for example, network desirability index) greater than network desirability of other network providers. In some embodiments, as shown in  FIG.  4 D , at least a portion of a map tile (for example, the second map tile  404 ) may be associated with a network provider as described herein. The association between a map tile or a portion of a map tile may be represented using different colors, shadings, or patterns. In some examples, network provider identifies, names, abbreviations, and the like may be used to indicate association between a map tile or a portion of a map tile and a network provider. 
     A map tile or at least a portion of a map tile may be identified with different colors (or a network provider identifier) to identify a network provider, as illustrated in  FIG.  4 D . 
     As discussed herein, the gateway device  110  may apply different conditions/thresholds/standards when determining whether to perform a network activation and/or handover upon moving from the first map tile  402  to the second map tile  404 . Since the gateway device  110  is activated Network Provider A, it may prefer to stay on Network Provider A unless, for example, Network Provider A has poor network desirability in the second map tile  404  and/or Network Provider B has much better network desirability than Network Provider A in the second map tile  404 . 
     For example, the gateway device  110  may perform a network handover in second map tile  404  (that is, activate on and switch to Network Provider B) and subsequently move from the second map tile  404  to the third map tile  406 , as illustrated by the location indicators  418  and  428  in  FIGS.  4 B and  4 C . When the gateway device  110  determines that it is located in the third map tile  406 , it can receive/retrieve/access network desirability information associated with the third map tile  406 . The gateway device  110  may analyze the network desirability information associated with the third map tile  406  to determine whether to perform another network handover upon moving to the third map tile  406 . 
     In various embodiments, when the gateway device  110  switches to a different network provider, the gateway device  110  may be activated on both the initial network provider and the new, different network provider. In some embodiments, the gateway device  110  may only be activated on the new, different network provider (for example, deactivated on the previous network provider). 
     Accordingly, in an embodiment, the gateway device  110  may prefer to remain activated on only an initial network provider if the network desirability of that initial network provider remains sufficiently good (e.g., satisfying a threshold or condition) as the gateway device  110  moves from one map tile to another. This is because, although other network providers may be available, there may be a cost to activating on a second network provider. However, if the network desirability of that initial network provider does not remain sufficiently good, the gateway device  110  may then, in certain circumstances, activate on the second network provider. Those circumstances may include, for example, that the network desirability of the second network provider is sufficiently good (e.g., satisfying a threshold or condition). 
     In some embodiments, a predetermined temporal condition may be satisfied before the gateway device  110  activates on the second network provider. The gateway device  110  may activate on the second network provider if the network desirability of the initial network, for example, fails to satisfy a predetermined threshold or condition, for a predetermine length of time. For example, the predetermined length of time may be ten minutes. As such, if the network desirability of the initial network fails to satisfy a predetermined threshold or condition for more than ten minutes, the gateway device  110  may activate on the second network provider. 
     Once activated on both the first and second network providers, the gateway device  110  may thereafter handoff between the first and second network providers, as the gateway device  110  moves from one map tile to another, based on relative or absolute network desirabilities of the two networks. Alternatively, once activated on both the first and second network providers, the gateway device  110  may thereafter handoff between the first and second network providers, as the gateway device  110  moves from one map tile to another, based on various conditions or other criteria associated with the two networks, optionally including the relative or absolute network desirabilities of the two networks. Such conditions or other criteria may include, for example, costs of data transfer on the two networks, among other conditions or criteria. 
     Referring to  FIG.  5   , the location of the gateway device  110  may change from one location to another such that the location indicator  510  moves from one map tile  502  to another map tile  502 . When the gateway device  110  moves to a different map tile  502 , it may use information including, but not limited to, network desirability information, preference information, and the like, to determine whether to perform a network handover (for example, switch from one activated network provider to another activated network provider or activate on another network provider). Various examples of network activations and handovers are described herein as non-limiting examples. 
     In some embodiments, the gateway device  110  may compare network desirability information (for example, network desirability index) of its current (or present) network provider to that of another, different network provider to determine whether to perform a network activation and/or handover. For example, the gateway device  110  may determine to not to perform a new network activation or a network handover if the network desirability index of the current network provider is greater than that of the other network provider. In contrast, the gateway device  110  may decide to perform a network activation and/or handover, for example, activate on the other network provider (if the other network provider has not yet been activated) or switch from the current network provider to the other network provider (if the other network provider has already been activated), if the network desirability index of the other network provider is greater than that of the current network provider. 
     In some embodiments, the gateway device  110  may analyze the network desirability information, for example, of its current network provider (for example, Network Provider A) and the other network provider (for example, Network Provider B), with predetermined conditions to determine whether to perform network activations and/or handovers. The predetermined conditions may include a first desirability condition and a second desirability condition. The first desirability condition may be associated with the network desirability information of a first network provider (for example, Network Provider A). The second desirability condition may be associated with the network desirability information of a second network provider (for example, Network Provider B). In some embodiments, the first network provider may be a network provider the gateway device  110  is currently activated on. Additionally or optionally, the second network provider may be another network provider the gateway device  110  may or may not be activated on. In some embodiments, the second desirability condition may be associated with network desirability information of more than one other network providers different from the first network provider. While the examples described below are based on two network providers, in various implementations, similar functionality may be applied to three or more network providers. 
     In operation, the gateway device  110  may use the predetermined conditions in conjunction with each other to determine whether to perform network activations and/or handovers. An example method of determining whether to perform network activation and/or handover with predetermine conditions is illustrated in  FIG.  7   . For example, the gateway device  110  may remain activated on its current network provider (for example, Network Provider A) and not perform network activation or handover so long as the network desirability index of the current network provider satisfies the first desirability condition. In another example, if the network desirability index of the current network provider (for example, Network Provider A) fails to satisfy the first desirability condition, the gateway device  110  may not perform a network activation or handover (for example, remain activated on the current network provider) so long as the network desirability index of the other network provider (for example, Network Provider B) also does not satisfy the second desirability condition. If the network desirability index of the other network provider (for example, Network Provider B) does satisfy the second condition, the gateway device  110  may perform a network activation and/or handover (for example, activate the other network provider (if the other network provider has not yet been activated) or switch from the current network provider to the other network provider (if the other network provider has already been activated)). 
     In various embodiments, the predetermined conditions may be associated with respective, corresponding threshold network desirability values. The predetermined conditions may include a first desirability condition associated with a first threshold value. Additionally, the predetermined condition may include a second desirability condition associated with a second threshold value. For example, the gateway device  110  may not perform a network activation and/or handover (for example, remain activated on its current network provider) so long as the network desirability index of the current network provider satisfies the first desirability condition, for example, greater than 0.75. In another example, if the network desirability index of the current network provider (for example, Network Provider A) fails to satisfy the first desirability condition, the gateway device  110  may still not perform a network activation and/or handover (for example, remain activated on the current network provider) so long as the network desirability index of the other network provider does not satisfy the second desirability condition, for example, greater than 0.6. On the other hand, if the network desirability index of the current network provider (for example, Network Provider A) fails to satisfy the first desirability condition, the gateway device  110  may perform a network activation and/or handover (for example, activate on and/or handover to an other network provider) when the network desirability index of the other network provider does satisfy the second desirability condition, for example, greater than 0.6. 
     In some embodiments, the predetermined conditions, for example, the first desirability condition and the second desirability condition, may or may not be the same or similar to one another. Additionally, the desirability conditions associated with network activations (e.g., when deciding whether to activate on a second network) may differ from those associated with network handovers (e.g., handing off to a second network on which the gateway device is already activated). For example, in some implementations in which the desirability conditions are the same or similar to one another (e.g., equalized or equal to one another), the predetermined conditions may be associated with the same threshold desirability values. Additionally or alternatively, equalized conditions may be associated with the same desirability conditions. 
     When the predetermined conditions are not the same or similar to one another (e.g., not equalized or equal to one another), the predetermined conditions may be associated with different desirability values or desirability conditions. For example, the first desirability condition and the second desirability condition may be equalized when the gateway device  110  is activated on both a first network provider associated with the first desirability condition and a second network provider associated with the second desirability condition (for example, in cases in which the gateway device is determining whether to handoff from among multiple activated network providers). In some examples, the first desirability condition and the second desirability condition may not be equalized when the gateway device  110  is activated on only one of the first network provider and the second network provider (e.g., in cases in which the gateway device is determining whether to activate on a second network provider). 
     In some embodiments, the conditions described herein may reflect different network activation and/or handover situations for the gateway device  110 . For example, in some situations, the gateway device  110  may compare network desirability information of more than one network providers and activate on a network provider that has the best/better network desirability. In some examples, the gateway device  110  may prefer to stay activated on its current network provider. 
     In some embodiments, the conditions may reflect preference information, for example, provided by the management server  150 , the user device(s)  160 , or users or organizations associated with the gateway device  110 . The preference information may be based at least in part on costs associated with remaining on the initial network provider, costs associated with activating on another network provider, costs associated with maintaining just the initial network provider, costs associated with maintaining the initial and the other network provider, and the like. 
     Example 1A: Only One Network Provider is Activated—Current Network Provider Satisfies Condition &amp; Other Network Provider does not Satisfy Condition) 
     For example, the gateway device  110  may have Network Provider A as its current (or present) network provider and may move from map tile “1” to map tile “7” of the network provider map  500 . Map tile “7,” as illustrated in  FIG.  5   , may be associated with network desirability information for the Network Provider A and Network Provider B. The network desirability information associated with map tile “7”, for example, may include network desirability index of 0.9 for Network Provider A and network desirability index of 0.2 for Network Provider B. 
     In some embodiments, the gateway device  110  may use predetermined conditions to determine whether to perform network handovers. For example, the gateway device  110  may utilize a method illustrated in  FIG.  7    to determine whether to perform network activations. For example, a first desirability condition of the predetermined conditions may ask whether the network desirability index of a current network provider (for example, Network Provider A) is greater than 0.6. For example, a second desirability condition of the predetermined conditions may ask whether the network desirability index of another network provider (for example, Network Provider B) is greater than 0.75. (for example, in this example the two conditions are not equal.) 
     In map tile “7,” the first desirability condition is satisfied since the network desirability index of Network Provider A (that is, 0.9) is greater than 0.6. On the other hand, the second desirability condition is not satisfied since the network desirability index of Network Provider B (that is, 0.1) is not greater than 0.8. Accordingly, the gateway device  110  may decide to not perform network activation or handover (for example, remain activated on Network Provider A instead of activating on and switching to Network Provider B). 
     Example 1B: Only One Network Provider is Activated—Current Network Provider does not Satisfy Condition &amp; Other Network Provider Satisfies Condition) 
     In another example, the gateway device  110  may have Network Provider A as its current (or present) network provider and may move from map tile “1” of the network provider map  500  to map tile “14” of the network provider map  500 . Map tile “14,” as illustrated in  FIG.  5   , may be associated with network desirability information for the Network Provider A and Network Provider B. The network desirability information associated with map tile “14”, for example, may include network desirability index of 0.1 for Network Provider A and network desirability index of 0.9 for Network Provider B. 
     In some embodiments, the gateway device  110  may use predetermined conditions to determine whether to perform network handovers. For example, the gateway device  110  may utilize a method illustrated in  FIG.  7    to determine whether to perform network activations. For example, a first desirability condition of the predetermined conditions may ask whether the network desirability index of an initial network provider (for example, Network Provider A) is greater than 0.6. For example, a second desirability condition of the predetermined conditions may ask whether the network desirability index of another network provider (for example, Network Provider B) is greater than 0.75. 
     In map tile “14,” the first desirability condition is not satisfied since the network desirability index of Network Provider A (that is, 0.1) is not greater than 0.6. On the other hand, the second desirability condition is satisfied since the network desirability index of Network Provider B (that is, 0.8) is greater than 0.75. Accordingly, the gateway device  110  may perform a network activation and handover (for example, activate on and switch to Network Provider B). Occasionally, the gateway device  110  may not be able to activate on a new network provider (for example, Network Provider B) for various reasons. In such circumstances, the gateway device  110  may remain activated on its current network provider (for example, Network Provider A). 
     Example 1C: Only One Network Provider is Activated—Current Network Provider Satisfies Condition &amp; Other Network Provider Satisfies Condition 
     In another example, the gateway device  110  may have Network Provider A as its current (or present) network provider and may move from map tile “1” of the network provider map  500  to map tile “13” of the network provider map  500 . Map tile “13,” as illustrated in  FIG.  5   , may be associated with network desirability information for the Network Provider A and Network Provider B. The network desirability information associated with map tile “13”, for example, may include network desirability index of 0.8 for Network Provider A and network desirability index of 0.9 for Network Provider B. 
     In some embodiments, the gateway device  110  may use predetermined conditions to determine whether to perform network handovers. For example, the gateway device  110  may utilize a method illustrated in  FIG.  7    to determine whether to perform network activations. For example, a first desirability condition of the predetermined conditions may ask whether the network desirability index of an initial network provider (for example, Network Provider A) is greater than 0.6. For example, a second desirability condition of the predetermined conditions may ask whether the network desirability index of another network provider (for example, Network Provider B) is greater than 0.75. 
     In map tile “13,” the second desirability condition is satisfied since the network desirability index of Network Provider B (that is, 0.9) is greater than 0.75. However, the first desirability condition is also satisfied since the network desirability index of Network Provider A (that is, 0.8) is greater than 0.6. Accordingly, the gateway device  110  may not perform a network activation or handover (for example, not activate on Network Provider B) and instead remain activated on Network Provider A. In the above example, the gateway device  110  may not perform network handover for various reasons. For example, as discussed herein, activating on a new, different network provider may be associated with additional costs that may not be necessary if the gateway device  110  remained with its current network provider. Since network providers may remain activated once they are activated, the benefit of providing marginally better network desirability may be outweighed by costs associated with having another network provider activated. 
     Example 1D: Only One Network Provider is Activated— Current Network Provider does not Satisfy Condition &amp; Other Network Provider does not Satisfy Condition 
     In another example, the gateway device  110  may have Network Provider A as its current (or present) network provider and may move from map tile “1” of the network provider map  500  to map tile “12” of the network provider map  500 . Map tile “12,” as illustrated in  FIG.  5   , may be associated with network desirability information for the Network Provider A and Network Provider B. The network desirability information associated with map tile “12”, for example, may include network desirability index of 0.1 for Network Provider A and network desirability index of 0.2 for Network Provider B. 
     In some embodiments, the gateway device  110  may use predetermined conditions to determine whether to perform network handovers. For example, the gateway device  110  may utilize a method illustrated in  FIG.  7    to determine whether to perform network activations. For example, a first desirability condition of the predetermined conditions may ask whether the network desirability index of an initial network provider (for example, Network Provider A) is greater than 0.6. For example, a second desirability condition of the predetermined conditions may ask whether the network desirability index of another network provider (for example, Network Provider B) is greater than 0.75. 
     In map tile “12,” the first desirability condition is not satisfied since the network desirability index of Network Provider A (that is, 0.1) is not greater than 0.6. On the other hand, the second desirability condition is also not satisfied since the network desirability index of Network Provider B (that is, 0.2) is not greater than 0.75. Despite the low network desirability index of Network Provider A, the gateway device  110  may not perform a network activation or handover, and instead remain activated on Network Provider A. This may be because despite Network Provider A&#39;s low network desirability index, Network Provider B too has a low network desirability index. 
     Example 2: Multiple Network Providers are Activated 
     In operation, the gateway device  110  may be activated on more than one network provider. For example, the gateway device  110  may be activated on Network Provider A and Network Provider B. When the gateway device  110  is activated on more than one network provider, network handover may include switching between the activated network providers (for example, Network Provider A and Network Provider B) to operate on a network provider that provides the best (or the better) network desirability or otherwise staying on a current network provider if the network desirabilities of the multiple activated networks are similar or the same. 
     For example, the gateway device  110  may be activated on Network Provider A and Network Provider B and move from map tile “1’ to map tile “13.” As shown in  FIG.  5   , the map tile “13” is associated with network desirability index of 0.8 for Network Provider A and network desirability index of 0.9 for Network Provider B. The gateway device  110 , upon determining that it has moved to map tile “13,” it may access/receive/retrieve network desirability information associated with map tile “13.” The gateway device  110  may analyze the network desirability information (for example, network desirability indexes) associated with the map tile “13” and may determine that Network Provider B providers better network desirability than Network Provider A. Accordingly, the gateway device  110  may perform a network handover by switching from Network Provider A to Network Provider B. 
     In some embodiments, regardless of whether network providers all provide adequate or inadequate network desirability, the gateway device  110  may decide to select a network provider that provides the best (or the better) network desirability. For example, the gateway device  110  may be activated on Network Provider A and Network Provider B and move from map tile “1’ to map tile “12.” As shown in  FIG.  5   , the map tile “12” is associated with network desirability index of 0.1 for Network Provider A and network desirability index of 0.2 for Network Provider B. The gateway device  110  may analyze the network desirability information (for example, network desirability indexes) associated with the map tile “12” and may determine that Network Provider B providers better network desirability than Network Provider A. Accordingly, the gateway device  110  may perform a network handover, for example, by switching from Network Provider A to Network Provider B. 
     In other embodiments, when the gateway device is activated on multiple network providers, the gateway device  110  may utilize the method illustrated in  FIG.  7    to determine whether to perform network handover, but as mentioned above, may use different desirability conditions that those used for determining whether to perform network activation. In these embodiments, the first desirability condition may apply to the currently in-use network provider, and the second desirability condition may apply to a second network provider on which the gateway device is activated, and to which the gateway device may switch. As noted above, when determining handovers (as opposed to activations, as described above), the desirability conditions may be the same or similar (e.g., both 0.5), resulting in a preference to stay on a current network provider, but a lower threshold for switching as compared to the activation scenarios described above. Alternatively, the desirability conditions may be different. 
     In various implementations, as mentioned above, the network desirability information may include considerations such as, for example, cost. Accordingly, even when activated on multiple network providers, the gateway device may prefer to use a particular network when it provides adequate performance. In these example implementations, referring again to  FIG.  7   , the first desirability condition may apply to the preferred network provider, and the second desirability condition may apply to a second network provider on which the gateway device is activated, and to which the gateway device may remain or switch. As with the examples noted above, when determining handovers (as opposed to activations, as described above), the desirability conditions may be the same or similar, or they may be different, depending on the network preference of the gateway device. 
     As noted above, the desirability conditions associated with network activations (e.g., when deciding whether to activate on a second network) may differ from those associated with network handovers (e.g., handing off to a second network on which the gateway device is already activated). 
     In some embodiments, the gateway device  110  may be activated on, for example, three or more network providers (for example, Network Provider A, Network Provider B, and Network Provider C). The gateway device  110  may be activated on Network Provider A and may, upon moving to a new location, look to switch to a new network provider. As described herein, the gateway device  110  may compare network desirability information of Network Provider A, Network Provider B, and Network Provider C associated with the new location, and may decide to switch from Network Provider A to Network Provider C. However, under certain situations, the gateway device  110  may not be able to switch from Network Provider A to Network Provider C for various types of reasons. In such situations, based at least in part on comparison of network desirability information and desirability conditions associated with Network Provider A and Network Provider B, the gateway device  110  may determine whether to remain on Network Provider A or possibly switch to Network Provider B. 
     Example Method of Determining an Initial/Default Network Provider 
     In operation, the gateway device  110  may determine its location via the more location determination devices  312  (e.g., global positioning system (GPS) devices, GLONASS devices, and/or the like) of the location determination module  310 . Once the gateway device  110  determines its location, the gateway device  110  may access a network provider map. As described herein, the network provider map (for example, the network provider map as shown in  FIG.  4 A ), may provide information indicating associations between different areas of a map (for example, the map tiles  502  of the network provider map  500  illustrated in  FIG.  5   ) and network providers associated with the gateway device  110 . The gateway device  110  may determine its location within the network provider map using the location information provided by the location determination module  310 . For example, as shown in  FIG.  5   , the location of the gateway device  110 , as illustrated by the location indicator  510 , may be in map tile “9.” Based on its location within the network provider map (for example, the network provider map  500 ), the gateway device  110  may determine which network provider to use for establishing network communication. 
     In various embodiments, the gateway device  110  may fail to determine its location via the location determination module  310  for various reasons such as location determination device malfunction, lack of network connection for the location determination device  312 , and the like. In such situations, the gateway device  110  may establish communication network using a default network provider. 
     In some embodiments, the management server  150  may provide the default network provider for the gateway device  110 . The management server  150  may determine the default network provider based at least in part on a network preference, default setting information, network desirability information, and the like. In some embodiments, the management server  150  may access network subscription information of different network providers, where the network subscription information may include pricing information, subscription term information, and the like associated with network providers. In some cases, network providers may update the network subscription information from time to time. Accordingly, the management server  150  may periodically access the network subscription information and update the default network provider when needed. In some embodiments, users may manually prompt the management server  150  to access and assess the network subscription information, and check whether the default network provider is up-to-date. 
       FIG.  6    illustrates an example method  600  of determining an initial network provider for the gateway device  110 . At block  602 , the gateway device  110  determines whether it is able to determine its location. The location of the gateway device  110  may be determined using location information collected by the location determination device  312  of the location determination module  310 . If the gateway device  110  is unable to determine its location, the gateway device  110  at block  614  identifies and activates on a default network provider. On the other hand, if the gateway device  110  is able to determine its location, the gateway device  110  at block  604  may identify its location. At block  606 , the gateway device  110  may access a network provider map. At block  608 , the gateway device  110  may determine a first map tile of the network provider map. The first map tile may be determined based at least in part on the first location and the network provider map. The first location of the gateway device  110  may be within the first map file of the network provider map. At block  610 , the gateway device  110  may identify and analyze network desirability information associated with the first map tile. As described herein, the first network provider may be associated with the first map tile of the network provider map. The first network provider may be one of many network providers associated with the gateway device  110 . At block  612 , the gateway device  110  activates on a first network provider based at least in part on the analysis of the network desirability information associated with the first map tile. As described herein, the gateway device  110  may activate on the first network provider because the first network provider may have network desirability higher than that of other network providers. 
     In some embodiments, the gateway device  110  may not be able to activate on the first network provider. For example, the gateway device  110  may not be able to establish wireless connection with the first network provider for various types of reasons including, but not limited to, inability to establish IP with the first network provider, high bit error rates, and the like. In such cases, the gateway device  110  may decide not to activate on the first network provider, and instead activate on a second network provider different from the first network provider. 
     Example Method of Performing Network Handovers when a Single Network Provider is Activated 
       FIG.  7    illustrates an example method  700  of performing a network handover when a single network provider is activated for the gateway device(s)  110 . At block  702 , the gateway device  110  determines an updated location. As described herein, the gateway device  110  may determine its location using the location determination module  310 . At block  704 , the gateway device  110  identifies another map tile of the network provider map. The new map tile may be different from a previous map tile the gateway device  110  was located within. The identification of the new map tile may be based at least in part on the updated location of the gateway device  110 . The updated location of the gateway device  110  may be associated with the new map tile. 
     At block  706 , the gateway device  110  identifies network desirability information associated with the new map tile. As described herein, each map tile of a network provider map may be associated with network desirability information, which may include network desirability index associated with each of network providers associated with the gateway device  110 . For example, the gateway device  110  may be associated with Network Provider A and Network Provider B. The network provider map for the gateway device  110  may in turn include network desirability information associated with Network Provider A and Network Provider B. 
     At block  708 , the gateway device  110  analyzes the network desirability information associated with the updated map tile to determine whether the network desirability information satisfies a first desirability condition. As described herein, the network desirability information may include network desirability index associated with each of network providers, for example, Network Provider A and Network Provider B, associated with the gateway device  110 . If the first desirability condition is satisfied, the gateway device  110 , at block  710 , does not perform a network activation (for example, maintains activation on Network Provider A, and does not activation Network Provider B). 
     If the first desirability condition is not satisfied, the gateway device  110 , at block  712 , analyzes the network desirability information associated with the updated map tile with respect to a second desirability condition. If the second desirability condition is not satisfied, the gateway device  110 , at block  714 , does not perform a network activation (for example, maintains activation on Network Provider A, and does not activation Network Provider B). If the second desirability condition is satisfied, the gateway device  110 , at block  716 , performs a network activation (for example, activates on and switches to a new network provider). As described herein, if, for example, the gateway device  110  is unable to activate on Network Provider B (a new network provider) for various reasons, the gateway device  110  remain activated on Network Provider A instead of activating on Network Provider B. 
     In various embodiments, the first desirability condition and the second desirability condition may be associated with different network providers. For example, the first desirability condition may be associated with an initial network provider (for example, Network Provider A) of the gateway device  110 , and the second desirability condition may be associated with another network provider (for example, Network Provider B) associated with the gateway device  110 . 
     In some embodiments, the first and the second desirability conditions may be associated with the same (for example, equalized) or different (for example, not equalized) threshold network desirability index values. When the gateway device  110  is activated on just one network provider, it may apply desirability conditions that are not equalized. For example, a first desirability condition may be associated with a first threshold value of 0.6 while a second desirability condition may be associated with a second threshold value of 0.75, where the first desirability condition is associated with a current (or present) network provider for the gateway device  110  and the second desirability condition is associated with another network provider. 
     The difference between the first desirability condition and the second desirability condition may reflect certain preference for performing network handovers. In some embodiments, the difference between the first desirability condition and the second desirability condition (for example, not equalized as described herein) may reflect a preference to remain with an initial network provider and not activate on another, different network provider. For example, as described herein, the first desirability condition may be associated with the initial network provider and may be associated with the first threshold value of 0.6 and the second desirability condition may be associated with a network provider other than the initial network provider and may be associated with the second threshold value of 0.75. As such, per the method  700  described herein, the gateway device  110  will remain on the initial network provider so long as the network desirability index of the initial network provider is greater than 0.6. However, the gateway device  110  will not activate on and switch to a new network provider unless network desirability index of the new network provider is greater than 0.75. Accordingly, such desirability conditions may indicate that wider range of network desirability index (between 0.6 and 1.0) may be acceptable for the initial network provider than for the new network provider (between 0.75 and 1.0). 
     Example Method of Performing Network Handovers when One or More Network Providers are Activated 
     In operation, the gateway device  110  may be activated on more than one network provider, for example, Network Provider A and Network Provider B. Depending on whether the gateway device  110  is activated on just one network provider or more than one network providers, the gateway device  110  may apply different network desirability conditions. In some embodiments, the network desirability conditions (or thresholds) may automatically update depending on the number of network providers activated for the gateway device  110 . 
     For example, the gateway device  110  may initially be activated only on Network Provider A, and have a first desirability condition associated with Network Provider A and a second desirability condition associated with Network Provider B. The first desirability condition and the second desirability condition may not be equalized to reflect the preference the gateway device  110  may have on its current network provider (for example, Network Provider A). For example, by configuring the first desirability condition less stringent than the second desirability condition, the gateway device  110  may be configured to prefer Network Provider A over Network Provider B. 
     In some embodiments, the first desirability condition and the second desirability condition may change when the gateway device  110  is activated on both Network Provider A and Network Provider B. The first desirability condition and the second desirability condition may or may not be equalized when the gateway device  110  is activated on both Network Provider A and Network Provider B 
     When the conditions are equalized, for example, one condition may not be less or more stringent than other condition(s). In some examples, the first desirability condition and the second desirability condition may be the same when the conditions are equalized. In some embodiments, equalized conditions may be associated with the same threshold condition or threshold value. For example, prior to being equalized, the first desirability condition may have a first desirability threshold value of 0.5 and the second desirability condition may have a second desirability threshold value of 0.75. When equalized, the first desirability threshold value and the second desirability threshold value may both be 0.5. 
     In various embodiments, the first desirability condition and the second desirability condition may not be equalized when the gateway device  110  is activated on both Network Provider A and Network Provider B. Such configuration, as described herein, may reflect the preference of the gateway device  110 . For example, if the gateway device  110  prefers to be activated on Network Provider B over Network Provider A, it may adjust the desirability conditions (for example, the first desirability condition and the second desirability condition) accordingly so that the conditions favor activation on Network Provider B over Network Provider A, and vice versa. 
     In some embodiments, the first desirability condition and the second desirability condition may not change when the gateway device  110  is activated on both Network Provider A and Network Provider B. 
     In some instances, the gateway device  110  may not be able to establish a reliable connection with a network provider that otherwise satisfies desirability conditions. For example, the gateway device  110  may not be able to establish a reliable connection with a network provider for many reasons including, but not limited to, inability to establish IP with the network provider, high bit error rates, and the like. In such instances, the gateway device  110  may decide handover and/or activate on a second network provider instead of remaining on the currently preferred network provider. 
     Example Method of Generating a Network Provider Map 
       FIG.  8    illustrates an example method  800  of generating a network provider map, according to various embodiments described herein. 
     In some embodiments, at block  802 , the management server  150  optionally receives an image of a geographical location. The image can be received from the data sources  140  via the network  130 , or from the location database  260  as described herein. In some embodiments, at block  804 , the management server  150  optionally divides the image into a grid with map tiles. The map tiles may be associated with a geographical map or a geographical region. Each of the map tiles may be associated with a portion of the geographical map or the geographical region represented by the map tiles. The grid may be drawn to divide the image into different boundaries including, but not limited to, physical boundaries (for example, rivers, mountain ranges, oceans, lakes, deserts, canyons, and the like), city boundaries, town boundaries, country boundaries, and the like. Alternatively, the map tiles may reflect regular or semi-regular shapes, as described above. 
     At block  806 , the management server  150  receives network desirability information associated with network providers associated with the gateway device  110  or the management server  150 . A list of network providers associated with the gateway device  110  and a list of network providers associated with the management server  150  may be the same or different. In some embodiments, the network desirability information associated with network providers may be collected and gathered from one or more gateway devices  110 . The network desirability information may include historical network desirability data for network providers at different geographical locations. 
     At block  808 , the management server  150  identifies a first map tile from the image. The identification of the first map tile can include assigning each of the map tiles with a unique map tile identifier and identifying the first map tile base at least in part on the respective, corresponding unique map tile identifier. 
     At block  810 , the management server  150  identifies a first network desirability information associated with a first network provider and the first map tile. As described herein, the management server  150  can receive the first network desirability information from the network database  264  or the data sources  140  via the network  130 . The first network desirability information may include a network desirability index associated with the first network provider and the first map tile. At block  812 , the management server  150  identifies a second network desirability information associated with a second network provider and the first map tile. As described herein, the management server  150  can receive the second network desirability information from the network database  264  or the data sources  140  via the network  130 . The second network desirability information may include a network desirability index associated with the second network provider and the first map tile. 
     At block  814 , the management server  150  associates the first map tile with the first network desirability information with the second network desirability information. In some embodiments, the management server  150  may be associated the first map tile with analysis of the first network desirability information and the second network desirability information. The analysis of the network desirability information may include: comparison between the first network desirability index and the second network desirability index; comparison of the first network desirability index to a first threshold; comparison of the second network desirability index to a second threshold; and the like. 
     At block  816 , the management server  150  displays the first network desirability information and the second network desirability information in the first map tile. In some embodiments, the management server  150  may display: comparison between the first network desirability index and the second network desirability index; comparison of the first network desirability index to a first threshold; comparison of the second network desirability index to a second threshold; and the like. 
     Handovers from Back-Up Network Subscription Identifiers to Primary Network Subscription Identifiers 
     As discussed above, the gateway device may be connected to a network of a network subscription identifier A and may determine to switch to a network of network subscription identifier B. Thus the gateway device may be disconnected from the network of the network subscription identifier A and activated on the network of the network subscription identifier B. Each of the network subscription identifier A and the network subscription identifier B may be associated with a particular network provider. In some embodiments, the network subscription identifier A and the network subscription identifier B may be associated with the same network provider. In other embodiments, the network subscription identifier A and the network subscription identifier B may be associated with different network providers. As the gateway device may have a network preference to be connected on a network of the network subscription identifier A (e.g., a cost preference, a performance preference, or any other preference), the gateway device may periodically scan (e.g., an active scan or a passive scan) network data to determine if a network of the network subscription identifier A is available. For example, while connected to the network of the network subscription identifier B, the gateway device can scan additional networks of the network subscription identifier A (e.g., networks from a cached list of networks or a general list of networks). Further, the gateway device can scan additional networks associated with a plurality of different network subscription identifiers to determine if service for any of the other network subscription identifiers are available and/or reliable and if the gateway device can switch to any of the different network subscription identifiers. The additional networks scanned by the gateway device may be based on preference (e.g., a gateway device preference, a user preference, etc.) for the additional networks over the network that the gateway device is currently activated on. By scanning the additional networks that include preferred networks of the gateway device, the gateway device can active on a preferred network. Further, this ensures that, while a gateway device may be activated on or switched to a secondary network (as discussed above), the gateway device can disconnect from the secondary network and activate on a preferred network based on scanning the additional networks. This enables the gateway device to avoid extended activation on a secondary network when a preferred network is available for activation. Further, by scanning the additional networks to determine when to switch from the secondary network to the primary network, the cost-effectiveness, efficiency, and performance of the gateway device can be improved. 
     The gateway device can identify the additional networks for scanning from a cached list of networks. For example, the gateway device can identify one or more networks from the cached list of networks and scan the one or more networks. In some embodiments, the gateway device can conduct a general scan of a plurality of networks to identify a subset of the plurality of networks and compare the subset of the plurality of networks to the cached list of networks. Based on the comparison, the gateway device can identify available networks. The cached list of networks can be stored or cached locally or remotely to the gateway device. The cached list of networks may include one or more networks associated with a particular network subscription identifier. For example, the cached list of networks may include a subset of networks associated with a first network subscription identifier and another subset of networks associated with a second network subscription identifier. Further, the cached list of networks may identify a network preference for each of these networks. The gateway device may periodically update the cached list of networks to identify networks associated with a particular network subscription identifier. Further, the gateway device may periodically receive updates for the cached list of networks. 
     Based on scanning the networks of the cached list of networks while activated on a network of a back-up network subscription identifier, gateway device can determine when a network of a primary network subscription identifier is available for activation. The gateway device may be activated on a back-up network subscription identifier based on particular factors (e.g., network availability, prior network preference, etc.) and the gateway device may periodically or non-periodically scan networks associated with the primary network subscription identifier(s) to determine when a switch can occur from the network associated with the back-up network subscription identifier to the network. Based on scanning the networks associated with the primary network subscription identifier(s), the gateway device may determine whether a given network can be characterized as available based on identified network characteristics of the network. Based on this availability information, the gateway device can determine when the gateway device can perform a handover from the back-up network subscription identifier to the primary network subscription identifier. In order to perform the handover, the gateway device may be disconnected from the network associated with the back-up network subscription identifier and may be activated on an available network associated with the primary network subscription identifier. 
     Example Embodiments of Network Handovers Between Networks 
       FIG.  9    depicts interactions among various components shown in  FIG.  1    for handover between network subscription identifiers of a gateway device in accordance with aspects of the present disclosure. The environment  900  may include various components implemented in a configuration as identified in  FIG.  1   . The environment  900  may include a gateway device  110 , a primary network subscription identifier  902 , a secondary network subscription identifier  904 , and a network cache  906 . The network cache  906  may include any cache or database identifying a list of networks (e.g., a list of networks associated with a SIM). Further, the network cache  906  may include one or more of the network provider database  268  as seen in  FIG.  2    or the network cache  360  as seen in  FIG.  3   . The network cache  906  may be generated by the management server and transmitted and/or provided to the gateway device  110 . Further, the network cache  906  may be location specific. For example, the network cache  906  may store a list of networks specific to a particular SIM in a particular country or geographic location. It will be understood that the environment  900  may include more, less, or different components. 
     As shown in  FIG.  9    at [1], the gateway device  110  can activate on a first network associated with a first network provider using a primary network subscription identifier  902 . The first network provider and/or the primary network subscription identifier  902  may be associated with multiple networks and the gateway device may identify the first network from the multiple networks for activation. Further, the gateway device  110  may activate on the first network based on a network preference for the first network provider, the primary network subscription identifier  902 , and/or the first network. The gateway device  110 , based on activating on the first network associated with the first network provider using the primary network subscription identifier  902 , may identify networks associated with the primary network subscription identifier  902 . While activated on the first network associated with the first network provider, the gateway device  110  can generate a list of networks based on the identified networks and cache the list of networks in a network cache (e.g., the network cache  906 ). 
     At [2], the gateway device  110  determines to switch from the first network associated with a first network provider to a secondary network associated with a second network provider using a secondary network subscription identifier  904 . In some embodiments, the first network provider and the second network provider may be the same or different network providers. As discussed above, the gateway device  110  may determine to switch (e.g., handover) from the first network to the secondary network based on a network desirability of the first network and/or the secondary network. For example, the location of the gateway device  110  may be updated from a first location to a second location. Based on the updated location of the gateway device  110 , the network desirability of the secondary network may increase and it may be desirable for the gateway device  110  to switch to the secondary network. While the first network, the primary network subscription identifier  902 , and/or the first network provider may be preferred (e.g., by the gateway device or the user), the network desirability of the secondary network and/or the first network may cause the gateway device to switch to the secondary network. Further, the gateway device  110  may periodically (e.g., every minute, every ten minutes, every hour, every two hours, etc.) or aperiodically send a ping to the management server via the primary network subscription identifier  902  to determine the responsiveness of the management server. In some embodiments, if the gateway device  110  does not receive a response to the ping within a certain time period (e.g., one minute), the gateway device  110  may retry (one or more times) to ping the management server via the primary network subscription identifier  902 . For example, the gateway device  110  may restart the primary network subscription identifier  902  and retry the ping. If the gateway device  110  does not receive a response to the ping within a certain number of retries (e.g., two) or a certain time period (e.g., two minutes), the gateway device  110  can determine to switch from the first network to the secondary network. Therefore, while the gateway device  110  determines to switch from the first network to the secondary network, the gateway device  110  may maintain a preference for the first network and/or the primary network device. 
     At [3], the gateway device  110  activates on the secondary network using a secondary network subscription identifier  904 . Prior to activating on the secondary network using the secondary network subscription identifier  904 , the gateway device  110  may disconnect from the first network using the primary network subscription identifier  902 . The second network provider and/or the secondary network subscription identifier  902  may be associated with multiple networks and the gateway device may identify the secondary network from the multiple networks associated with the second network provider and/or the secondary network subscription identifier  902 . 
     At [4], the gateway device  110  identifies particular networks. The gateway device  110  may identify networks associated with the primary network subscription identifier  902 . In some embodiments, the gateway device  110  may not identify the particular networks and a separate system (e.g., the management server) may identify the particular networks. In order to identify the particular networks, the gateway device  110  may perform various operations to identify the networks. The gateway device  110  may periodically identify the networks and update a corresponding list of networks associated with the primary network subscription identifier  902 . Further, the list of networks may be based on a mobile carrier (e.g., a network provider) associated with the primary network subscription identifier  902  and/or a mobile carrier plan. For example, particular networks (e.g., roaming networks) may not be supported by the gateway device  110  under certain carrier plans. Therefore, the gateway device may verify networks using a list of networks supported by the mobile carrier and/or the mobile carrier plan. Based on identifying the networks, the gateway device  110  can generate a list of networks for the primary network subscription identifier  902 . Further, the gateway device  110  can generate a list of networks for the primary network subscription identifier  902  and the secondary network subscription identifier  904 . It will be understood that the gateway device  110  can generate a list of networks for each network subscription identifier associated with the gateway device  110 . 
     In some embodiments, the gateway device  110  may identify the networks by identifying preferred networks of a user, manager, provider, or any other entity associated with the gateway device  110 . The user may provide information identifying the preferred networks to the gateway device  110 . The user may update (e.g., periodically) the preferred networks. Further, the gateway device  110  may be associated with information identifying preferred networks of the primary network subscription identifier  902  or the user. 
     In other embodiments, the gateway device  110  may interrogate (e.g., ping, request information from, etc.) the primary network subscription identifier  902  in order to determine networks that are supported by the primary network subscription identifier  902 . For example, the primary network subscription identifier  902  may track and store information identifying networks supported by the primary network subscription identifier  902  and provide the information to the gateway device  110  (e.g., prior to, during, or after activation of the primary network subscription identifier  902 ). The supported networks may include networks that the primary network subscription identifier  902  is configured to support to (e.g., networks operating within utilizing technology such as a bandwidth supported by the primary network subscription identifier). For example, the supported networks may include networks utilizing a 100 megahertz bandwidth and 4G network technology. 
     In other embodiments, the gateway device  110  may interrogate the primary network subscription identifier  902  in order to identify a network currently being utilized by the primary network subscription identifier  902 . For example, the primary network subscription identifier  902  may be utilizing a particular network, and in response to a particular scan (e.g., a query) from the gateway device, the primary network subscription identifier  902  may provide information identifying the network currently being utilized. The primary network subscription identifier  902  and/or the gateway device  110  may dynamically track the networks utilized by the primary network subscription identifier  902  and the gateway device  110  may obtain (e.g., periodically) information identifying the networks from the primary network subscription identifier  902 . 
     In other embodiments, the management server may track networks supported by particular types of network subscription identifiers. For example, each network subscription identifier may be associated with a particular type of network subscription identifier, a particular company, a particular technology, a particular use, or other identifying information. Based on this shared identifying information, certain network subscription identifiers may be grouped together. Further, based on this shared identifying information, the network subscription identifiers may be capable of utilizing the same networks. Based on this capability, the management server may track the networks supported by or utilized by particular network subscription identifiers. Based on identifying that a particular network is supported by a particular network subscription identifier, the management server may update a list of networks for a group of network subscription identifiers associated with the particular subscription identifier identifying that the network is supported by the group of network subscription identifiers. The management server may obtain (e.g., periodically) information identifying supported or preferred networks from the network subscription identifiers and update corresponding lists of networks. Further, the gateway device  110  may request (e.g., periodically) information identifying supported networks from the management server. The gateway device  110  may provide an indication of the primary network subscription identifier  902  and based on this indication, the management server may identify a group of network subscription identifiers corresponding to the primary network subscription identifier  902  and an associated list of networks. The management server may provide the list of networks for the primary network subscription identifier  902  to the gateway device  110 . 
     At [5], the gateway device  110  may dynamically update the cached list of networks stored in a network cache  906  using the list of networks. For example, the gateway device  110  may dynamically update a cached list of networks stored in a cache of the network subscription identifier to which the gateway device  110  is currently connected. In some embodiments, the gateway device  110  may dynamically update the cached list of networks stored in a cache of a different network subscription identifier. The network cache  906  may be a cache storing network data. Further, the network cache  906  may be local to or remote from the gateway device  110 . For example, the network cache  906  may be stored by the management server or the gateway device  110 . The gateway device  110  may initially cache the list of networks in the network cache  906  to generate a cached list of networks for the primary network subscription identifier  902 . Subsequently, the gateway device  110  may update the cached list of networks. The gateway device  110  may dynamically update the cached list of networks based on identifying previously unidentified networks supported by the primary network subscription identifier  902 . In some embodiments, the gateway device  110  may periodically update the cached list of networks. 
     At [6], the gateway device  110  may identify the cached list of networks from the network cache  906 . In some embodiments, the gateway device  110  may obtain the cached list of networks directly from the primary network subscription identifier  902 . For example, the gateway device  110  may periodically or aperiodically scan the primary network subscription identifier  902  and request identification of the networks preferred and/or supported by the primary network subscription identifier  902 . The gateway device  110  may update the cached list of networks and, subsequently, obtain the cached list of networks from the network cache  906 . For example, the gateway device  110  may obtain the cached list of networks based on a monitoring and/or scanning schedule. Further, the gateway device  110  may generate the monitoring schedule based on determining that the gateway device  110  is activated on a secondary network. Based on the monitoring schedule, the gateway device  110  may obtain the cached list of networks from the network cache  906  for monitoring. In some embodiments, any portion of the steps may be implemented separately. For example, steps [4], [5], and [6] may occur separately from steps [1]-[3] and [7]-[10]. Further, steps [4], [5], and [6] may be implemented separately and iteratively in order to identify a cached list of networks associated with a particular network subscription identifier. 
     At [7], the gateway device  110  may monitor for networks of the cached list of networks. The gateway device  110  may monitor for the networks of the cached list of networks by scanning external airwaves to determine which networks listed within the cached list of networks are available. In some embodiments, the gateway device  110  may scan each network of the cached list of networks. The gateway device  110  may implement any scan (e.g., a public land mobile network scan) to determine the availability of a network of the cached list of networks. For example, the gateway device  110  may implement an active scan (e.g., an interfering scan), a passive scan (e.g., a non-interfering scan), a continuous scan, a periodic scan, an aperiodic scan, etc. The gateway device  110  may submit a transmission (e.g., a probe request) to a node of the network and based on the response, the gateway device can determine an availability of the network. Further, the gateway device  110  may passively monitor activity on the network and determines an availability of the network based on the monitored activity of the network. In some embodiments, the gateway device  110  can periodically or continuously implement the scans. The gateway device  110  can implement scans based on temporal information, spatial information, or other information associated with the gateway device  110 . For example, the gateway device  110  may implement a scan during certain time periods and/or at certain time intervals (every hour, every twenty-four hours, etc.). Further, the gateway device  110  may implement a scan based on a geolocation or geofence. For example, the gateway device  110  may implement a scan based on the location of the gateway device  110  being outside or within a geofence or based on the location of the gateway device  110  corresponding to a particular geolocation. Further, the gateway device  110  may implement a scan based on additional information associated with the gateway device  110  or a corresponding vehicle. For example, the gateway device  110  may implement a scan when the gateway device  110  is in motion, is moving at a certain speed, has been moving for a particular time period, etc. Further, the gateway device  110  may implement a scan based on multiple conditions being satisfied. For example, the gateway device  110  may implement a scan when the gateway device  110  is in motion and the time is between 12:00 PM and 8:00 PM. In other embodiments, the gateway device  110  may implement the scans based on a status of a vehicle associated with the gateway device  110 . For example, the gateway device  110  may implement the scans when the vehicle is in motion and may not implement the scans when the vehicle is not in motion. 
     At [8], the gateway device  110  may determine that a second network associated with the primary network subscription identifier  902  is available. The gateway device  110  may determine that the second network is available based on monitoring for the cached list of networks. In some embodiments, the first network and the second network may be the same network. For example, the first network may be unavailable at a first time and available at a second, subsequent time. In other embodiments, the first network and the second network may be different networks. The gateway device  110  may determine that the gateway device  110  should be handed over from the secondary network to the second network based on a network preference for the second network, the first network provider, and/or the primary network subscription identifier  902 . The cached list of networks may include priority information associated with the second network and the gateway device  110  may determine to handover to the second network from the secondary network based on the priority information. 
     At [9], the gateway device  110  may disconnect from the secondary network using the secondary network subscription identifier  904 . The gateway device  110  may disconnect from the secondary network by removing (delinking) the connection between the gateway device  110  and the secondary network. The gateway device  110  may disconnect from the secondary network based on determining that the second network is available and based on determining that the gateway device  110  has a network preference for the second network, the first network provider, and/or the primary network subscription identifier  902  when compared to the secondary network, the second network provider, and/or the secondary network subscription identifier  904 . At [10], the gateway device  110  may activate on the second network using the primary network subscription identifier  902 . Therefore, the gateway device  110  may perform a handover (e.g., switch) from the secondary network utilizing the secondary network subscription identifier  904  to a second network utilizing the primary network subscription identifier  902 . 
     Example Embodiments of a Cached Network List 
       FIG.  10    depicts an example schematic diagram depicting an example cached list of networks  1000  in accordance with aspects of the present disclosure. Illustratively, the example cached list of networks  1000  may include a list of networks that are associated with one or more network subscription identifiers. For example, the cached list of networks  1000  may include a corresponding subset of networks for each network subscription identifiers of a plurality of network subscription identifiers. Further, the cached list of networks may identify networks associated with one or more primary network subscription identifiers and/or networks associated with one or more back-up network subscription identifiers. The cached list of networks  1000  may include information identifying the networks. For example, the information may identify a network, a network subscription identifier associated with the network, a preference for the network, etc. Therefore, the cached list of networks  1000  can correspond to a list of networks associated with a gateway device. 
     The cached list of networks  1000  may include separate lists of networks. For example, the cached list of networks  1000  can include a first primary list of networks and a second primary list of networks. Each of the separate lists of networks may be associated with particular network subscription identifiers. It will be understood that the cached list of networks  1000  may include more, less, or different lists of networks. For example, the cached list of networks  1000  may include multiple lists of networks associated with multiple network subscription identifiers. Each network of the cached list of networks  1000  may correspond to a particular network. For example, the network may be associated with information identifying the particular network. Further, each network may correspond to a particular network subscription identifier. For example, the network may correspond to a network subscription identifier providing the network to the gateway device. Further, the network may be associated with one or more network technologies. The one or more network technologies may correspond to network technologies that are offered by the network subscription identifier via the network. Each network may further be associated with a priority or preference. For example, the priority or preference may indicate a gateway device&#39;s and/or user&#39;s preference for a particular network. 
     In the example of  FIG.  10   , the cached list of networks  1000  includes a plurality of networks. Further, the cached list of networks  1000  includes Network A, Network B, Network C, Network D, and Network E. It will be understood that the cached list of networks  1000  may include more, less, or different networks. The cached list of networks  1000  may identify networks that are preferred or supported by the gateway device. In some embodiments, the cached list of networks  1000  may identify networks that are associated with a primary network subscription identifier of the gateway device. The gateway device may periodically update and/or modify the cached list of networks  1000  based on the preference or support by the gateway device. In some embodiments, another system such as the management server can update and/or modify the cached list of networks  1000 . For example, the gateway device and/or the management server may periodically identify networks and update the cached list of networks  1000 . 
     Each network of the cached list of networks  1000  may correspond to a particular network subscription identifier. Further, Network A, Network B, and Network C are each associated with a first network subscription identifier, Network D is associated with a second network subscription identifier, and Network E is associated with a third network subscription identifier. It will be understood that the cached list of networks  1000  may be associated with more, less, or different network subscription identifiers. 
     Each network of the cached list of networks  1000  may further correspond to particular network technologies. Further, the network technologies may correspond to particular network generations. For example, the network technologies may correspond to a signal strength as defined by a set of network standards. The network technologies may correspond to a list of potential network technologies. For example, the list of potential network technologies may include one or more second generation (“2G”), third generation (“3G”), fourth generation (“4G”), fifth generation (“5G”), or 4G long term evolution (“LTE”). Each network technology may support data speeds up to a certain speed and may utilize certain bandwidths. For example 2G networks may support data speeds up to 64 kilobytes per second and a bandwidth of 25 megahertz. Further, each network technology may correspond to a type of internet service (e.g., narrowband, broadband, etc.), a type of switching (e.g., packet switching, circuit switching, etc.), an access system (e.g., code division multiple access, beam division multiple access, etc.), and/or different sub-technologies (e.g., multiple input multiple output, global system for mobiles, etc.). It will be understood that the cached list of networks may correspond to more, less, or different network technology information. In the example of  FIG.  10   , Network A correspond to 2G network technology, Network B corresponds to 2G network technology and 3G network technology, Network C corresponds to 2G network technology, 3G network technology, and LTE network technology, Network D corresponds to 2G network technology, 3G network technology, 4G network technology, 5G network technology, and LTE network technology, and Network E corresponds to 4G network technology and 5G network technology. 
     Each network of the cached list of networks  1000  may further correspond to a priority or preference level. The priority or preference level may correspond to any numerical, alphabetical, alphanumerical, symbolical, etc. representation of a system preference for a particular network. Further, the gateway device, the user, or another computing system may identify the priority or preference level for particular networks. In some embodiments, the priority or preference level may correspond to the particular network subscription identifier. The gateway device may dynamically assign or map networks to priority or preference levels based on a network strength or other network capabilities. In some embodiments, each of the networks of the cached list of networks  1000  may include the same priority or preference level. For example, the gateway device may include networks in the cached list of networks  1000  based upon determining that the networks satisfy a desired preference level. Further, the cached list of networks  1000  may include only networks that are associated with a preference level of 5. In the example of  FIG.  10   , the priority of the cached list of networks  1000  may correspond to a range between 1 and 5 where a priority of 1 represents a low priority and a priority of 5 represents a high priority. Further, the Network A has a priority of 1, the Network B has a priority of 5, the Network C has a priority of 4, the Network D has a priority of 4, and the Network E has a priority of 2. Therefore, the cached list of networks  1000  may indicate a highest preference for Network B and a lowest preference for Network A. It will be understood that the cached list of networks  1000  may correspond to any priorities or preference levels. Further, the cached list of networks  1000  may correspond to any range of priorities or preferences levels. 
     Example Method of Performing Network Handovers from a Secondary Network 
       FIG.  11    illustrates an example method  1100  of performing a handover from a secondary network associated with a secondary network subscription identifier to a primary network associated with a primary network subscription identifier, according to various embodiments described herein. 
     At block  1102 , the gateway device (e.g., the gateway system) activates on the secondary network using a secondary network subscription identifier. The gateway device may include a communication module including one or more network subscription identifiers. For example, the communication module may include a primary network subscription identifier and a secondary network subscription identifier. The primary network subscription identifier may be associated with a primary network provider and the secondary network subscription identifier may be associated with a secondary network provider. Prior to activating on the secondary network, the gateway device may activate on a network using the primary network subscription identifier. Further, the gateway device may determine to switch from the network to the secondary network (e.g., based on network desirability) and the activation on the secondary network may be based on determining to switch from the network to the secondary network. In some embodiments, the gateway device may, periodically or aperiodically, confirm a connectivity of the communication module to the management server. For example, after activating on the secondary network, the gateway device may periodically confirm that the communication module can communicate with the management server via the secondary network. In some embodiments, the communication module may indicate a level of connectivity (e.g., an indication of a signal level). In other embodiments, the gateway device may not rely on the indicated level of connectivity by the communication and, instead or additionally, may cause the communication module to ping the management server by sending a test message to confirm a connection between the communication module and the management server. If the communication module is unable to send the ping and/or does not receive a response to the ping, the gateway server may restart the communication module. Further, after restarting the communication module, the gateway server may retry the ping. Therefore, the gateway device may determine connectivity and/or signal quality of the communication module in different locations. If the gateway device determines that the communication module is not connected to the management server and/or the connection is insufficient after a particular number of pings and/or restarts, the gateway device may activate on a different network via another network subscription identifier of the gateway device. Further, the gateway device may activate on another communication module associated with the gateway device (e.g., where the gateway device includes multiple communication modules). 
     At block  1104 , the gateway device accesses a cached list of networks of the primary network subscription identifier. The cached list of networks may include one or more primary networks associated with the primary network subscription identifier. Further, the cached list of networks may include one or more networks previously utilized by the primary network subscription identifier. The gateway device may periodically generate the list of networks and store the list of networks in a network cache to generate the cached list of networks. The gateway device may periodically update the cached list of networks. In order to generate and/or update the cached list of networks, the gateway device may identify one or more preferred networks of the primary network subscription identifier and may include the one or more preferred networks in the cached list of networks. Further, the gateway device may obtain (e.g., periodically, continuously, etc.) a current network associated with the primary network subscription identifier and may dynamically update the cached list of networks based on identifying the current network associated with the primary network subscription identifier. Further, the gateway device may identify one or more supported networks of the primary network subscription identifier and dynamically update the cached list of networks based on identifying the one or more supported networks of the primary network subscription identifier. Additionally, the gateway device may identify a group of network subscription identifiers including the primary network subscription identifier. The gateway device may identify supported networks of each network subscription identifier of the group of network subscription identifiers and dynamically update the cached list of networks based on identifying the supported networks of each of the group of network subscription identifiers. In some embodiments, the cached list of networks may be based on networks supported by a particular carrier (network provider) and/or carrier plan (network provider plan) associated with the primary network subscription identifier. 
     At block  1106 , the gateway device scans for other available networks. Further, the gateway device may scan the cached list of networks for other available networks. The gateway device may scan for other available networks while the gateway device is active (e.g., activated) on the secondary network. Further, the gateway device may scan for other available networks while the gateway device is inactive on the network associated with the primary network subscription identifier. The scan may include a passive scan, an active scan, a continuous scan, a periodic scan, or an aperiodic scan. For example, the scan may include a public land mobile network scan. The gateway device may implement the scan in response to identifying a vehicle metric and determining that the vehicle metric corresponds to a particular status. The vehicle metric may include one or more of cruise control, coasting, accelerator pedal, idling, anticipating, engine rotations per minute, motor rotations per minute, or motor power. The gateway device may verify that the vehicle metric corresponds to a particular status (e.g., the vehicle is idling or is not idling) prior to implementing the scan. 
     At block  1108 , the gateway device determines that a primary network associated with the primary network subscription identifier and obtained from the cached list of networks is available. The gateway device may determine that the primary network is available based on scanning the cached list of networks for other available networks. In some embodiments, determining that the primary network is available may be based on network characteristics of the primary network (e.g., comparing the network characteristics with particular network thresholds). 
     At block  1110 , the gateway device disconnects from the secondary network. The gateway device may deactivate on the secondary network using the secondary network subscription identifier in response to determining that the primary network is available. 
     At block  1112 , the gateway device connects to the primary network using the primary network subscription identifier. The gateway device may connect to the primary network the primary network subscription identifier in response to determining that the primary network is available. Further, the gateway device may connect to the primary network after disconnecting from the secondary network. The gateway device may connect to the primary network based on a network preference associated with the gateway device. The network preference may indicate which network subscription identifier over other network subscription identifiers is prioritized or preferred by the gateway device. For example, the network preference may be based at least in part on a location of the gateway device or a prior connection of the gateway device on the network. 
     Example Method of Determining Availability of Networks 
       FIG.  12    illustrates an example method  1200  of determining an availability of a network in order to perform a handover between a primary network subscription identifier and a secondary network subscription identifier, according to various embodiments described herein. 
     At block  1202 , the gateway device determines network characteristics of the network. The gateway device may determine the network characteristics of the network in order to determine the availability of the network. In some embodiments, a different device and/or system may determine the network characteristics of the network. For example, the management server may determine the network characteristics of the network. Further, the gateway device may determine the network characteristics based on identifying the network from the cached list of networks. The network characteristics may include one or more of data transmissibility, data transmission speed, signal strength, signal availability, signal to noise ratio, a number of dropped calls or dropped communications, etc. 
     At block  1204 , the gateway device compares the network characteristics with network thresholds. The gateway device may obtain the network thresholds for the comparison from the management server, a user computing device, or any other device or system. Further, the gateway device may periodically obtain the network thresholds. The network thresholds may identify required network characteristics for a network to be considered available. For example, the network thresholds may include a required bandwidth, a required signal strength, required security settings, required network stability, a required internet speed (e.g., an upload speed and/or a download speed), or any other network characteristics. The network characteristics may be based on user preference, gateway device preference, or any other preference or requirements. For example, a particular gateway device may require 25 megabytes per second download speed and 25 megabytes per second upload speed. Each of the network thresholds may correspond to a particular network characteristic. Further, the gateway device may parse the network characteristics and network thresholds to identify corresponding network characteristics and network thresholds for comparison. 
     At block  1206 , the gateway device determines that a network is available based on comparing the network characteristics with the network thresholds. The gateway device may identify a network as available based on each of the network characteristics matching and/or exceeding corresponding network thresholds. 
     At block  1208 , the gateway device stores information identifying that the network is available. In response to storing the information identifying that the network is available, the gateway device may initiate a handover process from a secondary network associated with a secondary network subscription identifier to the network associated with a primary network subscription identifier. 
     List of Example Numbered Embodiments 
     The following is a list of example numbered embodiments. The features recited in the below list of example embodiments can be combined with additional features disclosed herein. Furthermore, additional inventive combinations of features are disclosed herein, which are not specifically recited in the below list of example embodiments and which do not include the same features as the specific embodiments listed below. For sake of brevity, the below list of example embodiments does not identify every inventive aspect of this disclosure. The below list of example embodiments are not intended to identify key features or essential features of any subject matter described herein.
         Clause 1: A gateway system configured to provide network communications, the gateway system comprising:
           a communication module comprising a primary network subscription identifier and a secondary network subscription identifier;   a computer readable storage medium having program instructions embodied therewith; and   one or more processors configured to execute the program instructions to cause the gateway system to:
               activate the gateway system on a secondary network using the secondary network subscription identifier;   access a cached list of networks of the primary network subscription identifier;   while the gateway system is active on the secondary network, scan for other available networks;   based on the scan, determine that a network, from the cached list of networks of the primary network subscription identifier, is available; and   in response to determining the network is available:
                   disconnect the gateway system from the secondary network; and   connect the gateway system on the network using the primary network subscription identifier.   
                   
               
           Clause 2: The gateway system of Clause 1, wherein the one or more processors are configured to execute the program instructions to further cause the gateway system to:
           identify one or more preferred networks of the primary network subscription identifier, wherein the cached list of networks comprises the one or more preferred networks.   
           Clause 3: The gateway system of Clause 1, wherein the one or more processors are configured to execute the program instructions to further cause the gateway system to:
           identify a current network associated with the primary network subscription identifier; and   dynamically update the cached list of networks based on identifying the current network associated with the primary network subscription identifier.   
           Clause 4: The gateway system of Clause 1, wherein the one or more processors are configured to execute the program instructions to further cause the gateway system to:
           identify one or more supported networks of the primary network subscription identifier; and   dynamically update the cached list of networks based on identifying the one or more supported networks of the primary network subscription identifier.   
           Clause 5: The gateway system of Clause 1, wherein the one or more processors are configured to execute the program instructions to further cause the gateway system to:
           identify a group of network subscription identifiers comprising the primary network subscription identifier;   identify supported networks of each of the group of network subscription identifiers; and   dynamically update the cached list of networks based on identifying the supported networks of each of the group of network subscription identifiers.   
           Clause 6: The gateway system of Clause 1, wherein the cached list of networks comprises one or more networks previously utilized by the primary network subscription identifier.   Clause 7: The gateway system of any one of Clauses 1-6, wherein the cached list of networks is based at least in part on a carrier plan with a network carrier associated with the primary network subscription identifier.   Clause 8: The gateway system of any one of Clauses 1-6, wherein the one or more processors are configured to execute the program instructions to further cause the gateway system to:
           activate the gateway system on the network using the primary network subscription identifier, and   determine to switch the gateway system from the network associated with the primary network subscription identifier to the secondary network associated with the secondary network subscription identifier, wherein activating the gateway system on the secondary network is based at least in part on determining to switch the gateway system from the network associated with the primary network subscription identifier to the secondary network associated with the secondary network subscription identifier.   
           Clause 9: The gateway system of Clause 1, wherein to scan for other available networks, the one or more processors are configured to execute the program instructions to further cause the gateway system to, while the gateway system is inactive on the network, scan for other available networks.   Clause 10: The gateway system of Clause 1, wherein the one or more processors are configured to execute the program instructions to further determine one or more network characteristics of the network, wherein the one or more network characteristics comprise data transmissibility, data transmission speed, signal strength, signal availability, signal to noise ratio, or number of dropped calls or dropped communications, wherein determining that the network is available is based on the one or more network characteristics.   Clause 11: The gateway system of Clause 1, wherein the one or more processors are configured to execute the program instructions to further cause the gateway system to:
           determine one or more network characteristics of the network; and   compare the one or more network characteristics with one or more network thresholds, wherein determining that the network is available is based at least in part on comparing the one or more network characteristics with the one or more network thresholds.   
           Clause 12: The gateway system of Clause 1, wherein activating the gateway system on the network is based on a network preference associated with the gateway system, wherein the network preference indicates which network subscription identifier of a plurality of network subscription identifiers is prioritized over other network subscription identifiers of the plurality of network subscription identifiers.   Clause 13: The gateway system of Clause 12, wherein the network preference is based at least in part on a location of the gateway system or a prior activation of the gateway system on the network.   Clause 14: The gateway system of Clause 1, wherein activating the gateway system on the network comprises activating the gateway system on the network after disconnecting the gateway system from the secondary network.   Clause 15: The gateway system of Clause 1, wherein the one or more processors are configured to execute the program instructions to further cause the gateway system, to:
           identify a vehicle metric, wherein the vehicle metric is associated with at least one of: cruise control, coasting, accelerator pedal, idling, anticipating, engine rotations per minute, motor rotations per minute, or motor power;   determine the vehicle metric corresponds to a particular status, wherein the scan is based on determining the vehicle metric corresponds to the particular status.   
           Clause 16: The gateway system of Clause 1, wherein the scan comprises:
           a passive scan;   an active scan;   a continuous scan;   a periodic scan; or   an aperiodic scan.   
           Clause 17: The gateway system of Clause 1, wherein the primary network subscription identifier and the secondary network subscription identifier are each associated with a same network provider.   Clause 18: The gateway system of Clause 1, wherein the primary network subscription identifier is associated with a first network provider and the secondary network subscription identifier is associated with a second network provider.   Clause 19: The gateway system of Clause 1, wherein each of the primary network subscription identifier and the secondary network subscription identifier comprise a particular subscriber identification module card, a particular subscriber identification module profile, or a particular carrier subscription.   Clause 20: A computer-implemented method comprising:
           activating a gateway system on a secondary network using a secondary network subscription identifier, wherein the gateway system comprises a primary network subscription identifier and the secondary network subscription identifier;   accessing a cached list of networks of the primary network subscription identifier;   while the gateway system is active on the secondary network, scanning for other available networks;   based on the scan, determining that a network, from the cached list of networks of the primary network subscription identifier, is available; and   in response to determining the network is available:
               disconnecting the gateway system from the secondary network; and   connecting the gateway system on the network using the primary network subscription identifier.
 
Additional Implementation Details and Embodiments
   
               
               

     Various embodiments of the present disclosure may be a system, a method, and/or a computer program product at any possible technical detail level of integration. The computer program product may include a computer readable storage medium (or mediums) having computer readable program instructions thereon for causing a processor to carry out aspects of the present disclosure. 
     For example, the functionality described herein may be performed as software instructions are executed by, and/or in response to software instructions being executed by, one or more hardware processors and/or any other suitable computing devices. The software instructions and/or other executable code may be read from a computer readable storage medium (or mediums). 
     The computer readable storage medium can be a tangible device that can retain and store data and/or instructions for use by an instruction execution device. The computer readable storage medium may be, for example, but is not limited to, an electronic storage device (including any volatile and/or non-volatile electronic storage devices), a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of the computer readable storage medium includes the following: a portable computer diskette, a hard disk, a solid state drive, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), a static random access memory (SRAM), a portable compact disc read-only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, a floppy disk, a mechanically encoded device such as punch-cards or raised structures in a groove having instructions recorded thereon, and any suitable combination of the foregoing. A computer readable storage medium, as used herein, is not to be construed as being transitory signals per se, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (for example, light pulses passing through a fiber-optic cable), or electrical signals transmitted through a wire. 
     Computer readable program instructions described herein can be downloaded to respective computing/processing devices from a computer readable storage medium or to an external computer or external storage device via a network, for example, the Internet, a local area network, a wide area network and/or a wireless network. The network may comprise copper transmission cables, optical transmission fibers, wireless transmission, routers, firewalls, switches, gateway computers, and/or edge servers. A network adapter card or network interface in each computing/processing device receives computer readable program instructions from the network and forwards the computer readable program instructions for storage in a computer readable storage medium within the respective computing/processing device. 
     Computer readable program instructions (as also referred to herein as, for example, “code,” “instructions,” “module,” “application,” “software application,” and/or the like) for carrying out operations of the present disclosure may be assembler instructions, instruction-set-architecture (ISA) instructions, machine instructions, machine dependent instructions, microcode, firmware instructions, state-setting data, configuration data for integrated circuitry, or either source code or object code written in any combination of one or more programming languages, including an object oriented programming language such as Java, C++, or the like, and procedural programming languages, such as the “C” programming language or similar programming languages. Computer readable program instructions may be callable from other instructions or from itself, and/or may be invoked in response to detected events or interrupts. Computer readable program instructions configured for execution on computing devices may be provided on a computer readable storage medium, and/or as a digital download (and may be originally stored in a compressed or installable format that requires installation, decompression or decryption prior to execution) that may then be stored on a computer readable storage medium. Such computer readable program instructions may be stored, partially or fully, on a memory device (for example, a computer readable storage medium) of the executing computing device, for execution by the computing device. The computer readable program instructions may execute entirely on a user&#39;s computer (for example, the executing computing device), partly on the user&#39;s computer, as a stand-alone software package, partly on the user&#39;s computer and partly on a remote computer or entirely on the remote computer or server. In the latter scenario, the remote computer may be connected to the user&#39;s computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (for example, through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, programmable logic circuitry, field-programmable gate arrays (FPGA), or programmable logic arrays (PLA) may execute the computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry, in order to perform aspects of the present disclosure. 
     Aspects of the present disclosure are described herein with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the disclosure. It will be understood that each block of the flowchart illustrations and/or block diagrams, and combinations of blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer readable program instructions. 
     These computer readable program instructions may be provided to a processor of a general purpose computer, special purpose computer, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions/acts specified in the flowchart and/or block diagram block or blocks. These computer readable program instructions may also be stored in a computer readable storage medium that can direct a computer, a programmable data processing apparatus, and/or other devices to function in a particular manner, such that the computer readable storage medium having instructions stored therein comprises an article of manufacture including instructions which implement aspects of the function/act specified in the flowchart(s) and/or block diagram(s) block or blocks. 
     The computer readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer implemented process, such that the instructions which execute on the computer, other programmable apparatus, or other device implement the functions/acts specified in the flowchart and/or block diagram block or blocks. For example, the instructions may initially be carried on a magnetic disk or solid state drive of a remote computer. The remote computer may load the instructions and/or modules into its dynamic memory and send the instructions over a telephone, cable, or optical line using a modem. A modem local to a server computing system may receive the data on the telephone/cable/optical line and use a converter device including the appropriate circuitry to place the data on a bus. The bus may carry the data to a memory, from which a processor may retrieve and execute the instructions. The instructions received by the memory may optionally be stored on a storage device (for example, a solid state drive) either before or after execution by the computer processor. 
     The flowchart and block diagrams in the Figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present disclosure. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of instructions, which comprises one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the Figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. In addition, certain blocks may be omitted in some implementations. The methods and processes described herein are also not limited to any particular sequence, and the blocks or states relating thereto can be performed in other sequences that are appropriate. 
     It will also be noted that each block of the block diagrams and/or flowchart illustration, and combinations of blocks in the block diagrams and/or flowchart illustration, can be implemented by special purpose hardware-based systems that perform the specified functions or acts or carry out combinations of special purpose hardware and computer instructions. For example, any of the processes, methods, algorithms, elements, blocks, applications, or other functionality (or portions of functionality) described in the preceding sections may be embodied in, and/or fully or partially automated via, electronic hardware such application-specific processors (for example, application-specific integrated circuits (ASICs)), programmable processors (for example, field programmable gate arrays (FPGAs)), application-specific circuitry, and/or the like (any of which may also combine custom hard-wired logic, logic circuits, ASICs, FPGAs, etc. with custom programming/execution of software instructions to accomplish the techniques). 
     Any of the above-mentioned processors, and/or devices incorporating any of the above-mentioned processors, may be referred to herein as, for example, “computers,” “computer devices,” “computing devices,” “hardware computing devices,” “hardware processors,” “processing units,” and/or the like. Computing devices of the above-embodiments may generally (but not necessarily) be controlled and/or coordinated by operating system software, such as Mac OS, iOS, Android, Chrome OS, Windows OS (for example, Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10, Windows Server, etc.), Windows CE, Unix, Linux, SunOS, Solaris, Blackberry OS, VxWorks, or other suitable operating systems. In other embodiments, the computing devices may be controlled by a proprietary operating system. Conventional operating systems control and schedule computer processes for execution, perform memory management, provide file system, networking, I/O services, and provide a user interface functionality, such as a graphical user interface (“GUI”), among other things. 
     As described above, in various embodiments certain functionality may be accessible by a user through a web-based viewer (such as a web browser), or other suitable software program. In such implementations, the user interface may be generated by a server computing system and transmitted to a web browser of the user (for example, running on the user&#39;s computing system). Alternatively, data (for example, user interface data) necessary for generating the user interface may be provided by the server computing system to the browser, where the user interface may be generated (for example, the user interface data may be executed by a browser accessing a web service and may be configured to render the user interfaces based on the user interface data). The user may then interact with the user interface through the web-browser. User interfaces of certain implementations may be accessible through one or more dedicated software applications. In certain embodiments, one or more of the computing devices and/or systems of the disclosure may include mobile computing devices, and user interfaces may be accessible through such mobile computing devices (for example, smartphones and/or tablets). 
     Many variations and modifications may be made to the above-described embodiments, the elements of which are to be understood as being among other acceptable examples. All such modifications and variations are intended to be included herein within the scope of this disclosure. The foregoing description details certain embodiments. It will be appreciated, however, that no matter how detailed the foregoing appears in text, the systems and methods can be practiced in many ways. As is also stated above, it should be noted that the use of particular terminology when describing certain features or aspects of the systems and methods should not be taken to imply that the terminology is being re-defined herein to be restricted to including any specific characteristics of the features or aspects of the systems and methods with which that terminology is associated. 
     Conditional language, such as, among others, “can,” “could,” “might,” or “may,” unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments may not include, certain features, elements, and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without user input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment. 
     The term “substantially” when used in conjunction with the term “real-time” forms a phrase that will be readily understood by a person of ordinary skill in the art. For example, it is readily understood that such language will include speeds in which no or little delay or waiting is discernible, or where such delay is sufficiently short so as not to be disruptive, irritating, or otherwise vexing to a user. 
     Conjunctive language such as the phrase “at least one of X, Y, and Z,” or “at least one of X, Y, or Z,” unless specifically stated otherwise, is to be understood with the context as used in general to convey that an item, term, etc. may be either X, Y, or Z, or a combination thereof. For example, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list. Thus, such conjunctive language is not generally intended to imply that certain embodiments require at least one of X, at least one of Y, and at least one of Z to each be present. 
     The term “a” as used herein should be given an inclusive rather than exclusive interpretation. For example, unless specifically noted, the term “a” should not be understood to mean “exactly one” or “one and only one”; instead, the term “a” means “one or more” or “at least one,” whether used in the claims or elsewhere in the specification and regardless of uses of quantifiers such as “at least one,” “one or more,” or “a plurality” elsewhere in the claims or specification. 
     The term “comprising” as used herein should be given an inclusive rather than exclusive interpretation. For example, a general purpose computer comprising one or more processors should not be interpreted as excluding other computer components, and may possibly include such components as memory, input/output devices, and/or network interfaces, among others. 
     While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it may be understood that various omissions, substitutions, and changes in the form and details of the devices or processes illustrated may be made without departing from the spirit of the disclosure. As may be recognized, certain embodiments of the inventions described herein may be embodied within a form that does not provide all of the features and benefits set forth herein, as some features may be used or practiced separately from others. The scope of certain inventions disclosed herein is indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.