ROUTE GUIDANCE FOR A MULTIPLE ACTIVE NETWORK WIRELESS DEVICE

A wireless device capable of using multiple SIM cards to simultaneously communicate with multiple cellular networks is presented. The wireless device is a dual-SIM dual-data active device that is capable of receiving and transmitting data packets over multiple cellular networks simultaneously or at substantially the same time. The wireless device may include a second set of antennas and internal hardware, including a second model and processor enabling the wireless device to communicate with at least two cellular networks. The wireless device may select a cellular network to perform a task, such as complete a call or download a video based on a difference in signal strength between the two or more cellular networks supported by the wireless device.

BACKGROUND

Network protocols can be used to connect devices for mobile communications. One way of connecting devices is using the Global System for Mobile Communications (GSM) architecture and/or standard, which may employ time-division multiple-access (TDMA) protocols. Voice from one device can be transformed into digital data, and given a channel and a time slot. The receiving device can listen to the voice during the assigned time slot. Some network protocols that compete with GSM implement Code-Division Multiple Access (CDMA), which can connect calls using a code division system. Call data may be encoded with a unique key and multiple call data may be transmitted at once. The receiving device may use the unique key to identify the data associated with the specific call to which the receiving device is connected.

SUMMARY

The systems, methods and devices of this disclosure each have several innovative aspects, no single one of which is solely responsible for all of the desirable attributes disclosed herein. Details of one or more implementations of the subject matter described in this specification are set forth in the accompanying drawings and the description below.

Certain aspects of the present disclosure relate to a method of determining a route for a wireless device. The method may be performed by a hardware processor of a dynamic routing system configured with specific computer-executable instructions. Further, the method may include determining a first location of the wireless device based on one or more radio frequency signals received from networking hardware of a communication network in communication with the wireless device; determining a second location corresponding to a target location of the wireless device; identifying a set of eligible routes between the first location and the second location; accessing signal strength data associated with one or more communication networks along each of the set of eligible routes, the signal strength data corresponding to wireless signal strength between a communication network of the one or more communication networks and one or more wireless devices communicating with the communication network; and selecting a first route from the set of eligible routes based at least in part on the signal strength data associated with the one or more communication networks along each of the set of eligible routes.

The method of the preceding paragraph can include any combination or sub-combination of the following features: where the first location is a current location of the wireless device; where the dynamic routing system is included in a satellite configured to communicate with the wireless device; where the wireless device comprises a mobile device that travels the first route between the first location and the target location; where the signal strength data corresponds to historical signal strength data obtained from the one or more wireless devices; where the first route is selected from the set of eligible routes using a path selection algorithm that selects a path in a graph representative of the set of eligible routes; where the method further comprises providing an identity of the first route to the wireless device; where an identity of the first route is transmitted by a satellite to the wireless device; wherein the method further comprises obtaining updated signal strength data associated with at least one communication network along at least one route from the set of eligible routes; and selecting a second route from the set of eligible routes based at least in part on the updated signal strength data; where the method further comprises generating a graph data structure, wherein each vertex within the graph data structure corresponds to a base station and wherein each edge between vertexes is weighted with one or more weights determined based at least in part on signal strength data for one or more available communication networks accessible from base stations corresponding to vertexes connected by the edge; where selecting the first route comprises solving a shortest path algorithm based on the one or more weights applied to each edge of the graph data structure; where selecting the first route further comprises selecting a communication network accessible along the first route, wherein the communication network is selected from communication networks supported by the wireless device; where selecting the first route further comprises selecting a communication network for each segment of the first route, wherein the communication network for each segment is selected from communication networks supported by the wireless device; where the second location is determined from itinerary data provided by the wireless device; and where the second location is predicted based at least in part on a travel trajectory of the wireless device or historical travel data for the wireless device.

Certain aspects of the present disclosure relate to a dynamic routing system configured to select a route for a wireless device that maintains a threshold signal strength for a connection between the wireless device and a communication network. The dynamic routing system may include an electronic storage system configured to store signal strength data and navigation data between locations, and a hardware processor in communication with the electronic storage system and configured to execute specific computer-executable instructions. The hardware processor may be configured to execute specific computer-executable instructions to at least: determine a first location of the wireless device based on one or more radio frequency signals received from networking hardware of a communication network in communication with the wireless device; determine a second location corresponding to a target location of the wireless device; identify a set of eligible routes between the first location and the second location based at least in part on the navigation data stored at the electronic storage system; access signal strength data associated with one or more communication networks along each of the set of eligible routes, the signal strength data corresponding to wireless signal strength between a communication network of the one or more communication networks and one or more wireless devices communicating with the communication network; and select a route from the set of eligible routes based at least in part on the signal strength data associated with the one or more communication networks along each of the set of eligible routes.

The dynamic routing system of the preceding paragraph can include any combination or sub-combination of the following features: where the dynamic routing system is a satellite that is part of a satellite network; where the hardware processor determines the first location of the wireless device based on location data obtained from a satellite; where the hardware processor is further configured to execute specific computer-executable instructions to at least cause an identity of the route to be transmitted to the wireless device; and where the hardware processor is further configured to execute specific computer-executable instructions to at least select a communication network supported by the wireless device along one or more segments of the route based at least in part on signal strength data.

Certain aspects of the present disclosure relate to a wireless device configured to maintain a communication channel during travel between locations. These locations may be physical or geographic locations (e.g., between physical addresses or cities, etc.). The wireless device may include a memory configured to store specific computer-executable instructions; a first radio frequency subsystem configured to process signals of a first receive band associated with a first data network and signals of a second receive band of a second data network; and a hardware processor in communication with the first radio frequency subsystem and configured to control whether the first radio frequency subsystem communicates with the first data network or the second data network during a particular time period. The hardware processor may be further configured to execute the specific computer-executable instructions to at least: determine a current location of the wireless device; determine a target location of the wireless device; determine a first signal strength for the first data network; determine a second signal strength for the second data network; transmit the current location, the target location, the first signal strength, and the second signal strength to a dynamic routing system configured to determine a route of travel for the wireless device; and receive an identification of a selected route between the current location and the target location.

The wireless device of the preceding paragraph can include any combination or sub-combination of the following features: where the wireless device further comprises a second radio frequency subsystem comprising a second front-end module configured to process the signals of the first receive band associated with the first data network and the signals of the second receive band associated with the second data network; where the hardware processor is further configured to configure the second radio frequency subsystem to communicate with the second data network when the first radio frequency subsystem is configured to communicate with the first data network; where the first data network is associated with a first subscriber identity module of the wireless device and the second data network is associated with a second subscriber identity module of the wireless device; where the wireless device further comprises a geolocation receiver, and wherein the hardware processor determines the current location of the wireless device based at least in part on a signal received from a satellite by the geolocation receiver; where the hardware processor determines the target location of the wireless device based at least in part on an interaction with a user interface element of the wireless device or receipt of a command via an antenna of the wireless device; where the hardware processor determines the target location of the wireless device based on a trajectory of the wireless device determined from a location history of the wireless device; where the identification of the selected route is received from a satellite; where receiving the identification of the selected route comprises receiving instructions to travel the selected route; where the wireless device automatically travels the selected route without interaction by a user; where the hardware processor is further configured to execute the specific computer-executable instructions to at least receive an identity of a selected data network with which to communicate along the selected route, the selected data network comprising one of the first data network or the second data network; where the selected data network is determined based at least in part of the first signal strength and the second signal strength; where the selected data network comprises a data network determined to maintain a communication channel of a threshold signal strength with the wireless device over the selected route; where the hardware processor is further configured to execute the specific computer-executable instructions to at least receive an identity of a first selected data network with which to communicate along a first portion of the selected route and an identity of a second selected data network with which to communicate along a second portion of the selected route; where the hardware processor is further configured to execute the specific computer-executable instructions to at least cause the identification of the selected route to be output on a display; and where the wireless device comprises a drone, a medical device, a smartphone, or a self-driving or automated vehicle.

Certain aspects of the present disclosure relate to a method of maintaining a communication channel during travel between locations. These locations may be physical or geographic locations (e.g., between physical addresses or cities, etc.). The method may be implemented by a hardware processor of a wireless device configured to support communication with a first data network via a first frequency band and a second data network via a second frequency band. The method may include determining a current location of the wireless device; determining a target location of the wireless device; determining a first signal strength for the first data network; determining a second signal strength for the second data network; transmitting the current location, the target location, the first signal strength, and the second signal strength to a dynamic routing system configured to determine a route of travel for the wireless device; and receiving an identification of a selected route between the current location and the target location.

The method of the preceding paragraph can include any combination or sub-combination of the following features: where the method further includes receiving a geolocation signal from a geolocation satellite, wherein determining the current location comprises determining the current location based at least in part on the geolocation signal; where the method further includes determining the target location based on a trajectory of the wireless device, the trajectory of the wireless device determined based at least in part on a determination of a history of locations of the wireless device; where the target location is determined from a command received via an interface of the wireless device; where the identification of the selected route is received from a satellite; where the method further includes receiving instructions to travel the selected route with the identification of the selected route; where the method further includes travelling the selected route without input from a user; where the method further includes receiving an identity of a selected data network with which to communicate along the selected route, the selected data network comprising one of the first data network or the second data network; where the selected data network is determined based at least in part on a comparison of the first signal strength and the second signal strength; where the selected data network comprises a data network determined to be capable of maintaining a communication channel of a threshold signal strength with the wireless device over the selected route; where the method further includes receiving an identity of a first selected data network with which to communicate along a first portion of the selected route and an identity of a second selected data network with which to communicate along a second portion of the selected route; where the wireless device comprises a drone, a medical device, a smartphone, or a self-driving or automated vehicle; and where the method further includes outputting the identification of the selected route on a display.

DETAILED DESCRIPTION

Introduction

A number of routing systems decide how to route calls based on a single type of network protocol. In many cases, the communications devices are able to support a single type of network protocol, such as CDMA or GSM, which may implement a TDMA protocol or a CDMA protocol, or a subset of frequency bands used in cellular communication. In some embodiments, network protocols can include other network protocols that can be used to provide communication services to multiple users in a wired or wireless medium, such as frequency division multiple access (FDMA), orthogonal frequency division multiple access (OFDMA), spatial division multiple access (SDMA), WiFi technology, Bluetooth, Digital Enhanced Cordless Telecommunications (DECT), Near Field Communications (NFC), ZigBee, WiGig, Long-Term Evolution (LTE), and/or the like. In some such cases, the routing systems can route calls from one communications network provider to another communications network provider within the same network that implements the same type of network protocol. Limiting the routing of calls to communications network providers associated with networks using the same type of network protocol limits the availability of networks available for the call. Some networks that implement particular network protocols may provide better network connectivity at particular geographic or network locations than other networks that implement other network protocols. For example, a GSM network may provide better service than a CDMA network at a particular location. Furthermore, if many calls are made using the same network in a particular area, the network may suffer decreased performance.

This disclosure describes a number of systems and associated processes that can dynamically route calls over one or more communication networks, which may be provided by one or more communication network providers. The communication networks may implement different network protocols, such as CDMA or GSM. Further, some communication networks may utilize the same network protocol, but using different frequency bands. Moreover, this disclosure describes certain criteria that can be used to automatically identify the appropriate network for a call based on the criteria. In some cases, the criteria may include a geographical location, which may be associated with a particular network. In some such cases, a mobile device that can support multiple protocols may have increased options for networks that can process a call compared to traditional communication systems.

Further, this disclosure describes a number of systems and associated processes that enable pattern recognition and profiling of certain call patterns that can be used to determine an optimal network for a call. In certain embodiments, determining a network over which to route a call can be based at least in part on network characteristics of both the source and destination devices of the call. Advantageously, in some embodiments, a dynamic routing system can route calls that were initially established with a first communications network implementing a first network protocol, which may implement GSM, to a second communications network implementing a second network protocol, which may implement CDMA. As such, if one network using one network protocol has reduced network performance, the call can be rerouted over a different network using another network protocol, which may be owned or maintained by a different communications network provider. These and other features are described in greater detail below with respect to the figures.

Example Communications Environment

FIG. 1illustrates an embodiment of a communications environment100in accordance with the teachings of the present disclosure. In the communications environment100, a mobile device102can make a call to a mobile device104. In the illustrated example, the mobile device102may be associated with a user who is initiating a call and may be referred to as the origin of the call, and the mobile device104may associated with a user who the caller desires to call and may be referred to as the target or destination for the call. However, it should be understood that the roles of the users, and consequently the roles of the mobile devices102and104may be reversed. The call is not limited in type and can include any type of call that may be performed over one or more communication networks that may implement one or more different communication protocols. For example, the call can be: a telephone call placed via mobile phone, a Voice over Internet Protocol (VoIP) call, or a modem call, to name a few. Further, the mobile device102and the mobile device104can include any user or organization capable of placing the call.

To establish the call connection between the mobile device102and the mobile device104, the call may be routed over one or more different communication networks provided or maintained by one or more communication network providers. In some cases, each communication network may be owned or maintained by a different communication network provider. However, in some embodiments, multiple communication networks may be maintained by a single communication network provider. For example, a provider may maintain a 3G and 4G network. Further, the provider may be implementing a 5G network. Each of the 3G, 4G, or 5G networks may implement versions of the same communication profile or may implement different communication profiles.

In one embodiment, the call is routed to a dynamic routing system108. The dynamic routing system108can determine one or more network protocols that are supported by a communication network106of a communications network provider. The communications environment illustrated three communication networks106A,106B,106C, which may individually be referred to as a communication network106or collectively referred to as communication networks106. For example, the dynamic routing system108may determine that a communication network106A can implement a network protocol1, a communications network106B can implement a network protocol2, and a communication network106C can implement a network protocol3. In some embodiments, the communication network106A and106C may both implement the network protocol1, but using different frequency spectrums or bands. The dynamic routing system108can be associated with one or more of the communication network providers or with any entity that can offer systems or services for facilitating optimal or improved routing over one or more of the communication networks based on one or more routing criteria. For example, the dynamic routing system108may be configured to provide optimal or improved routing based on a criteria of improving call signal strength for calls or reducing dropped call rates for calls. Further, each communication network106can include a number of computing devices and/or telephony devices, such as session border controls and gateways, to facilitate communications within the communication network106, between a plurality of communication networks106, and/or with the dynamic routing system108. Some non-limiting examples of these computing devices are illustrated inFIG. 1with respect to the dynamic routing system108and are described further below. AlthoughFIG. 1illustrates a particular embodiment of a configuration of the communications environment100, other configurations are possible. For example, other embodiments of the communications environment100may enable routing of calls directly to the dynamic routing system108prior to the calls being routed to a communication network106. In some embodiments, the communications networks106can communicate directly with other communication networks.

In certain embodiments, when routing a call, the dynamic routing system108can determine a communication network106to route the call based on a number of factors. These factors can include, for example: the origin of the call; the destination of the call; the price charged to the dynamic routing system108to route a call over a communication network106and/or the price charged by the dynamic routing system108to receive a call from a communication network106; network characteristics; geolocation of a caller; a pattern in historical call data; and/or the like. Some of these factors are discussed in more detail below.

InFIG. 1, several potential communication paths exist to connect the mobile device102to the mobile device104via the communications network providers106and the dynamic routing system108. For example, a call from the mobile device102may be routed from the communications network106A to the dynamic routing system108, from the dynamic routing system108to the communications network106C, and then from the communications network106C to the mobile device104. In some embodiments, the call from the mobile device102may be initially routed from the communications network106A to the dynamic routing system108. The dynamic routing system108, based on one or more routing criteria, may subsequently instruct the mobile device102to use the communication network106B to complete the call. Completing the call with the communications network106B may include initiating a new call to the mobile device104using the communication network106B. In certain embodiments, the initial call to the dynamic routing system108and the subsequent call to the mobile device104may occur with or without knowledge of the user initiating the call on the mobile device102. Although a limited number of communication networks and call paths are illustrated inFIG. 1, it is possible for additional paths via additional communication networks to exist to connect the mobile device102with the mobile device104. Further, note that although only one dynamic routing system108is illustrated, it is possible for multiple dynamic routing systems108to exist and for each dynamic routing system108to communicate with a number of communication networks, such as the communications network providers106inFIG. 1and other dynamic routing systems108.

In some embodiments, the dynamic routing system108includes a call routing module114, a call criteria database112, and a caller profile database110. In some implementations, the dynamic routing system108may include multiple call routing modules114, call criteria databases112, and/or caller profile databases110. Although illustrated as subsystems, it is possible in some embodiments for the call routing module114, call criteria database112, and/or caller profile database110to be separate systems that are external to the dynamic routing system108and with which the dynamic routing system108may communicate. The call criteria database112can include or store criteria for selecting a network using a particular network protocol by the call routing module114, as described further herein. The caller profile database110can store profile information of a caller, such as historical call data, a pattern identified for callers, geolocation of the caller, and/or the like.

The call routing module114can route a call initiated by the mobile device102across one or more communication networks106. To determine the one or more communication networks106upon which to route the call, the call routing module114can identify or determine call information associated with the call and use the identified information to facilitate selection of communication network106. The call information may include network characteristics such as throughput and latency, supported network protocols of the mobile devices and/or available communication networks for the call, supported communication frequencies, and/or the like. Further, in some embodiments, the call information may include price or rate information for a cell phone plan of the caller user and/or the recipient user, and/or price or rate information for one or more of the communication networks to route the call on behalf of the dynamic routing system108or the one or more other communication networks.

The call routing module114can include any system that can receive a call and determine where to route the call. The call may be received from a communications network106, an entity and/or processor associated with the communications network106, the mobile device102, the mobile device104, the dynamic routing system108, or any other system capable of providing the call to the call routing module114. Further, the call routing module114can include any system that can provide and/or route a call to another system. This call can be provided to a communications network106, an entity and/or processor associated with the communications network provider106, the mobile device102, the mobile device104, and/or any other system capable of receiving the call from the call routing module114. In addition, the call routing module114can include any system capable of providing and/or receiving call information associated with a call.

The call routing module114can prioritize and/or rank certain communications networks106or provider of communication networks. The call routing module114can include any system capable of receiving call information associated with a call and/or determining a ranked order routing list of networks106and/or communications network providers to which to route the call. For example, the call routing module114can be implemented by one or more computing systems and each computing system can include one or more processors. In certain embodiments, the call routing module114can implement one or more of the systems and/or perform one or more of the processes for routing a call that is disclosed in U.S. Pat. No. 9,124,957, issued on Sep. 1, 2015 and titled “SYSTEM AND METHOD FOR DYNAMIC MULTIFACTOR ROUTING,” the entire disclosure of which is hereby incorporated by reference herein for all purposes.

In some embodiments, the call routing module114can rank a number of communications networks106to process a call. The call routing module114can receive call information associated with the call. Using the call information, the call routing module114can perform one or more ranking processes to determine a ranked routing list of communication networks. The ranked routing list can indicate a ranked order for communication networks and/or communication network providers that are capable of routing the call and that satisfy a set of network selection criteria. The call routing module114can include any system capable of determining the ranked order routing list for a call based on a number of criteria or factors. The call routing module114can rank the available networks106and/or communications network providers based on certain weighted values for the networks and/or communications network providers. For example, the weightings can be determined based on a network throughput capability, a price or profit margin when using a network and/or the communication network provider, a caller profile retrieved from the caller profile database110, a certain criteria of a call retrieved from the call criteria database112, such as a geographical location, a current number of calls routed to the communication network106, a network and/or associated communication network provider rating, and/or the like.

Call Routing

FIG. 2illustrates a flow diagram for one embodiment of a dynamic call routing process200in accordance with the teachings of the present disclosure. The process200can be performed by any system capable of routing a call including a communications network106that initially received a call from the mobile device102, a communications network provider106that completed the final call connection to the mobile device104, a communications network between an initial network that received that call and a destination network that provided the call to the mobile device104, a dynamic routing system108, and/or the like. Although a number of different systems may perform some or all of the process200, to simplify discussion, the process200will be described with respect to particular systems.

The process begins at block202when, for example, the dynamic routing system108receives a call initiated by a mobile device102. In some embodiments, receiving a call may include receiving an indication that a user is attempting or likely to attempt to initiate a call. For example, when a user opens a dialer or other application on a phone or when a user enters or begins to enter a phone number to initiate a call, the process200may be initiated enabling the selection of a preferred network for completing the call prior to the call being initiated.

At block204, the dynamic routing system108determines the one or more network protocols supported by the mobile device102. The network protocols can include, for example, CDMA, GSM, or other supported cellular network protocols. Further, in some embodiments, the block204may include identifying one or more frequency bands and/or network providers supported by the mobile device102. In some embodiments, the dynamic routing system108can route among a variety of communication networks that may vary based on the protocol implemented, the frequency bands supported, the communications standards supported (for example 3G, 4G, or 4G LTE) or other characteristics of the communication network that may, in some cases, impact which wireless devices can communicate with the communication network. For example, the dynamic routing system108may route a call between different GSM carriers, between different CDMA carriers, between a carrier implementing a 4G communication standard and a carrier implementing a 3G communications standard, and/or the like. To simplify discussion, and not to limit the present disclosure, a number of embodiments disclosed herein are described with respect to routing a call between a GSM and a CDMA network.

At decision block206, the dynamic routing system108determines whether the mobile device102supports a plurality of network protocols, such as a dual network protocol capability. This determination can be based, at least in part, on the determination that the mobile device102supports both GSM and CDMA protocols, or other network protocols. In some embodiments, a network that supports a particular network protocol can be associated with one SIM card of a mobile device, and another network that supports a different network protocol can be associated with another SIM card of the mobile device.

If it is determined at the decision block206that the mobile device102supports multiple network protocols, at block210, the dynamic routing system108identifies a first network106A that implements a first network protocol supported by the mobile device102. For example, the first communications network106A may implement a GSM protocol.

At block212, the dynamic routing system108identifies a first signal strength for a communication channel using the first communication network106A. Determining the signal strength may include sending a request to the mobile device102for a measurement of the first signal strength and/or may include receiving the measured first signal strength from the mobile device102. The communication channel may be between the mobile device102and an initial base station or cell tower of the communication network106A, which may be referred to as a first hop or first mile. Alternatively, or in addition, the first communication channel may include a greater portion of the communication channel between the mobile device102and the communication network106A and/or the mobile device104. In some cases, the signal strength is the signal strength between the mobile device102and the initial base station or cell tower.

At block214, the dynamic routing system108identifies a second network106B that implements a second network protocol supported by the mobile device102. For example, the second communications network106C may implement a CDMA protocol.

At block216, the dynamic routing system108identifies a second signal strength for a communication channel using the second communication network106B. In certain embodiments, the block216can include one or more of the embodiments described with respect to the block212.

At block218, based at least in part on the first and second signal strengths, the dynamic routing system108can select a communication network associated with the higher signal strength for the mobile device102to route the call. Routing the call via the network for which the mobile device102has the highest signal strength may include providing the mobile device102with the identity of the network associated with the highest signal strength enabling the mobile device102to initiate the call with the communications network that offers the best signal strength for the mobile device102at the particular location and time when the process200was initiated. Alternatively, or in addition, the dynamic routing system108can cause the call to be routed to the communication network with the highest signal strength on behalf of the mobile device102. In certain embodiments, the process200may be used to identify a network to route a call based on alternative or additional criteria to signal strength. For example, drop call rate, time-of-day pricing, available network bandwidth, or other information may be used to identify a network to route the call. In certain embodiments, the operations associated with the blocks214and216may be repeated for each communication network or communication network protocol supported by the mobile device102or with which the mobile device102is capable of communicating. For example, the operations may be repeated for the communication network106C.

If it is determined at decision block206that the mobile device102does not support multiple network protocols, at the block208, the call is routed to the network supported by the mobile device102.

FIG. 3illustrates a diagram identifying various network characteristics300that can be used to determine which network associated with a communications network provider and/or network protocol to use to connect the call in accordance with the teachings of the present disclosure. A non-limiting list of network characteristics300can include network latency302, packet loss304, an answer/seizure ratio306, a call clarity rating308, a dropped call rate310, a network effectiveness ratio312, a post dial delay314, jitter316, and/or the like. For example, the network latency302for a first network using the GSM protocol with a first communications network provider that supports the GSM protocol may be lower than that of a second network using the CDMA protocol with a second communications network provider that supports the CDMA protocol. In the example of block216ofFIG. 2, the dynamic routing system108can route the call to a network using the GSM protocol because of the improved network latency302performance.

Call Pattern Identification and Profiling

FIG. 4illustrates a flow diagram for one embodiment of a process400for determining a call pattern and creating a caller profile in accordance with the teachings of the present disclosure. The process400can be performed by any system capable of determining a call pattern and/or creating and/or applying a caller profile. Although a number of different systems may perform some or all of the process400, to simplify discussion, the process400will be described with respect to particular systems.

The process begins at block402when, for example, the dynamic routing system108identifies historical call data for a mobile device102. In some embodiments, the historical call data is associated with a user or phone number associated with the mobile device102. Thus, the historical call data may include historical data for multiple devices that are or have been associated with a user or phone number. The historical call data can include information relating to when calls are made, where the calls are made from (e.g., a home or business address, an urban or rural area, and the like), who is being called, and/or the like. For example, the historical call data may indicate that a particular user or mobile device102typically makes a call around 2:00 PM to a particular number each day, or on weekends.

At block406, the dynamic routing system108identifies a pattern between the network and/or network protocol used, and a characteristic of the historical data for the mobile device102. Using the identified patterns, a call profile can be established for the user or mobile device102. For example, the dynamic routing system108can determine that a user initiates a call every evening from the user's home to a particular number (e.g., a number associated with the user's uncle). The dynamic routing system108can determine that the call occurs between a certain time period, such as between 8 PM to 10 PM. The dynamic routing system108can determine that the network that is frequently selected for this call or that provides the best signal strength is a particular network. The dynamic routing system108can establish criteria to automatically route the call to the particular network when a call is made that matches the profile created based on the historical data. In some embodiments, a machine learning process can be used to identify call profiles for a user or mobile device102.

At block408, the dynamic routing system108receives a call initiated by the mobile device102, from a communications network. Receiving the call may include determining characteristics associated with the call, such as time of day, identity of the caller, location of the caller, and the like. For example, the dynamic routing system108can determine whether the request is to and/or from a certain caller, is being made in a certain time frame and/or geolocation, a call type and/or the like. In one embodiment, identifying the call type can include, for example: identifying if the call origin and/or the call destination is international; identifying if the call is interstate; identifying if the call is intrastate; identifying if the call is a fax call; identifying if the call is a modem call; identifying if the call is a toll-free call; and identifying if the call is a premium-rate call, to name a few.

At decision block410, the dynamic routing system108determines whether the characteristics of the call matches characteristics of a call profile associated with the user or mobile device102.

If the characteristics of the call satisfy a particular call profile, the dynamic routing system108routes the call using communication a network identified in the call profile at block412. If the characteristics of the call do not satisfy a call profile, the dynamic routing system108, at block414, routes the call using a dynamic routing process, such as the process200. In some embodiments, the call may be routed using a traditional routing process at block414.

FIG. 5illustrates a diagram for one embodiment of geolocation profiling for determining a network for a call in accordance with the teachings of the present disclosure. In some embodiments, it may be determined that for a particular mobile device102or user that a particular network is preferred in a particular geographic location. For example, as illustrated inFIG. 5, it may be determined that when a user is within Los Angeles, it is preferable to use a CDMA protocol for making calls because, for example, the CDMA protocol may provide increased signal strength or a lower dropped call rate. However, when a user or mobile device is in Orange County, it may be determined that it is preferable to make calls using a GSM protocol (e.g., over a GSM network) because, for example, the GSM protocol may provide increased signal strength or an improved call clarity compared to the CDMA network in the identified locations.

In some embodiments, the mobile device102and/or the dynamic routing system108can override the network selection indicated by the geolocation profile. For example, although it may generally be preferred to use a CDMA protocol in Los Angeles, the dynamic routing system108may determine based at least in part on network characteristics at a particular time that the GSM protocol is preferred. In some such cases, the default selection of a CDMA protocol may be overridden based on the determined or measured network characteristics at the particular time.

Routing Based on Source and Destination Network Characteristics

FIG. 6illustrates a flow diagram for one embodiment of a dynamic call routing process600for routing a call based on both source and destination network characteristics in accordance with the teachings of the present disclosure. The process600can be performed by any system capable of routing a call including a communications network106that initially received a call from the mobile device102, a communications network106that completed the final call connection to the mobile device104, a communications network somewhere in between, a dynamic routing system108, and/or the like. Although a number of different systems may perform some or all of the process600, to simplify discussion, the process600will be described with respect to particular systems.

The process begins at block602when, for example, the dynamic routing system108receives a call initiated by a mobile device102, which may be referred to a source or origin device. In certain embodiments, the block602may include one or more of the embodiments described with respect to the block202.

At block604, the dynamic routing system108identifies or measures a network characteristic for the source device for each of a set of two or more supported communication networks. As previously described the supported communication networks may include networks of different vendors and/or networks that implement or support different network protocols. For example, if the source device can interact or communicate with both a GSM network and a CDMA network, the dynamic routing system108can determine a first signal strength associated with the source device communicating with the GSM network and a second signal strength associated with the source device communicating with the CDMA network.

At decision block606, the dynamic routing system108determines whether the difference between network characteristics of the two or more supported communications networks satisfies a threshold. For example, the dynamic routing system108can determine whether a difference between the first signal strength and the second signal strength in the previous example satisfies a threshold signal strength difference.

If it is determined that the difference between the network characteristics do not satisfy the threshold, then at block612the dynamic routing system108determines whether the mobile device104, which may be referred to as the target or destination device, supports multiple communication networks. If the destination device supports multiple communication networks, at block614, the dynamic routing system108identifies or measures a network characteristic for the destination device for each of a set of two or more supported communication networks. This network characteristic may be the same network characteristic determined at the block604, or it may be a different network characteristic. For example, the dynamic routing system108may measure signal strength for the destination device with respect to each supported communication network as with the example described above with respect to the source device, or it may measure bandwidth. In some embodiments, both at the block604and the block614, the network characteristics may include or may be a combination of multiple network characteristics. At block616, the dynamic routing system108may complete the call using the communication network associated with the more desirable value. For example, the call may be completed with the communication network that has the highest signal strength or the lowest call drop rate for the destination device. If multiple communication networks are associated with the more desirable or better network characteristic value, an auxiliary selection process may be performed, such as a random communication network selection, a selection based on alternative network characteristics, a round-robin selection, a selection based on pricing, or a selection based on user preferences.

If it is determined at the decision block612that the destination device does not support multiple communication networks, a communication network is selected to complete the call using an auxiliary selection process at the block618. The auxiliary selection process may include selecting a communication network from the two or more communication networks supported by the source mobile device using a random communication network selection, a selection based on alternative network characteristics, a round-robin selection, a selection based on pricing, or a selection based on user preferences.

If it is determined at the decision block606that the difference between the network characteristics do satisfy a threshold, the dynamic routing system108, at block608, completes the call using the communication network associated with the better or more desired network characteristics for the mobile device102. In certain embodiments, the block608may include one or more of the embodiments described with respect to the block616. In certain embodiments, the dynamic routing system108may complete the call using the selected communication network by identifying the selected communication network to the mobile device102. The mobile device102can then establish the call with the selected communication network. In some cases, establishing the call with the selected communication network may include initiating a new call with the selected communication network and transferring the audio from the call received at the block602to the new call. The establishing of a new call and/or the transfer of the existing call may occur without the knowledge of the user making or desiring to make the call using the mobile device102.

In some embodiments, a determination of a communication network to complete the call may be based at least in part on network characteristics for communication networks available to the source mobile device102and the destination mobile device104. In other embodiments, for a particular call, a communication network may be selected for the outgoing portion of the call placed by the mobile device102and a communication network may be selected for the incoming portion of the call to the mobile device104. Thus, a communication network106A may be selected for the mobile device102to make a call, while a communication network106C may be selected for the mobile device104to receive the call.

Rerouting During a Call

FIG. 7illustrates a flow diagram for one embodiment of a dynamic call routing process700for rerouting an ongoing call in accordance with the teachings of the present disclosure. The process700can be performed by any system capable of routing a call including a communications network106that initially received a call from the mobile device102, a communications network106that completed the final call connection to the mobile device104, a communications network somewhere in between, a dynamic routing system108, and/or the like. Although a number of different systems may perform some or all of the process700, to simplify discussion, the process700will be described with respect to particular systems.

The process begins at block702when, for example, the dynamic routing system108establishes a call between a source mobile device102and a target mobile device104using a first communication network106. Establishing the call may include selecting the first communication network106using, for example, the process200, the process600, or any other process for selecting a communication network from among a plurality of communication networks. Further, establishing the call may include connecting the device102to the device104using the selected network. Alternatively, establishing the call may include providing the device102with an identity of the communication network enabling the device102to establish the call using the selected communication network.

At block704, the dynamic routing system108measures, or otherwise determines, a network characteristic for the first communication network, which may use a first network protocol. For example, the dynamic routing system108can determine a signal strength, a bandwidth, or a dropped call rate for the first communication network. For example, the network characteristic can include one or more network characteristics described inFIG. 3above.

At decision block706, the dynamic routing system108determines if the measured network characteristic satisfies a threshold value. If the measured network characteristic satisfies the threshold, the process700returns to the block704where the dynamic routing system108may continuously, intermittently, or periodically measure the network characteristic. In some embodiments, a threshold can be determined based on an identified pattern. For example, a threshold can be determined based on a pattern identified in the historical data for a user device (e.g., mobile device102) using the process400ofFIG. 4. The pattern can be identified between a network protocol and a characteristic of the historical data for the user device, and the threshold can be established based on this pattern. For example, the historical data for a user device can indicate a high packet loss for a mountainous region for the GSM protocol. If the user is traveling through the mountainous region at a later time using the CDMA protocol, the system may set the packet loss threshold to be higher for switching to the GSM protocol. In another example, the historical data for the user can indicate that the CDMA protocol has historically performed better (e.g., higher call clarity or less dropped calls) than the GSM protocol for the mountainous region. In some such cases, the system may automatically default calls to a network using the CDMA protocol. The system may switch to the GSM protocol based on an average difference between the historical performance of a network implementing a CDMA protocol and a network implementing a GSM protocol.

In some embodiments, the threshold can be a dynamic threshold. For example, a wireless device can be connected to a call using a first protocol. The system can identify performance of network characteristics for the first protocol. The system can also identify performance of network characteristics for the second protocol. For example, as the caller is traveling from one destination to another while on the call, the performance of network characteristics for the first protocol may diminish, while the performance of network characteristics for the second protocol may improve. The threshold to switch the call from the first protocol to the second protocol can be dynamically adjusted based on the change of the performance of network characteristics for the first and second protocols. In one embodiment, the dynamic threshold can be adjusted based on an average of the performance of network characteristics for the first and second protocols. In another embodiment, the dynamic threshold can be based on the performance of the network characteristic for the first protocol diminishing below the performance of the network characteristic for the second protocol. For example, the dynamic threshold can be based on the performance of the network characteristic for the first protocol diminishing below the performance of the network characteristic for the second protocol for a particular time period.

If it is determined that the measured network characteristic does not satisfy the threshold, the dynamic routing system108, at block708, identifies a second available communication network, which may use a second network protocol that differs from the first network protocol. Alternatively, both networks may use the same network protocol, but may be maintained by different vendors and/or may use different frequency bands.

At the block710, the dynamic routing system108measures the network characteristic for the second communication network. The block710may include one or more of the embodiments described with respect to the block704.

At decision block712, the dynamic routing system108determines whether the network characteristic measured, or otherwise obtained, at the block710satisfies the threshold. If it is determined that the measured network characteristic for the second communication network does not satisfy the threshold, the process may return to the block704. In some embodiments, the time between successive measurements of the network characteristic at the block704may differ based on whether the process700returned to the block704from the decision block706or the decision block712. Further, in some embodiments, the time between successive measurements of the network characteristic at the block704may differ based on whether the user associated with the device102has moved a threshold distance. For example, the block704may be repeated more frequently for a user who is moving at more than a threshold rate, such as a user who may be in a moving vehicle or is walking around a neighborhood or town. The process700may be performed more frequently when the user is moving than when the user is stationary, or relatively stationary, because the user may pass through more cell regions associated with different base stations. Alternatively, or in addition, the process may be performed more frequently when a user is moving (e.g., driving or walking) because the user may pass by more obstacles that can affect wireless coverage compared to when the user is stationary (e.g., sitting at home or at work). In some embodiments, the process700may end instead of returning to the block704.

If at decision block712it is determined that the network characteristic measured at the block710for the second communication network satisfies the threshold, the dynamic routing system108, at the block714, reroutes the call using the second communication network. Rerouting the call may include establishing a second call with the second communication network and transferring the audio to the second call after establishing the second call. The initial call may then be ended. In some embodiments, the dynamic routing system108reroutes the call by instructing the mobile device102to establish the new call and to switch the audio to the new call. In some embodiments, the call is rerouted without knowledge of the users involved in the call.

In some embodiments, the threshold used at the decision block706and the decision block712may differ. For example, the threshold to determine whether a network may exist that may provide better service or satisfy particular desired criteria (e.g., the threshold at the block706) may be lower than the threshold used to determine whether to select a new communication network to process the call (e.g., the threshold at the block712). Advantageously, by using different thresholds, it is possible to account for communication resource costs involved in switching or rerouting an existing call. Moreover, in certain embodiments, by using a higher threshold to determine whether to switch communication networks rather than a threshold used to determine whether additional networks exist, the continuous and repeated rerouting of calls between two networks can be reduced.

In certain embodiments, instead of, or in addition to, determining that the network characteristic of the second communication network satisfies a threshold, the decision block712may include determining whether the network characteristic for the second communication network is more than a threshold degree higher or better than the network characteristic for the first communication network. Advantageously, in certain embodiments, by ensuring the second communication network is more than a threshold degree better than the first communication network before rerouting the call, the occurrence of continuous and repeated rerouting of calls between two networks can be reduced.

Dual-SIM Wireless Devices

Cellular communication networks often use subscriber identity modules (SIM) to identify a user of a wireless device. The SIM card is often implemented as a type of smartcard or integrated circuit that is inserted into a wireless device and communicates with a processor of the wireless device and/or a communication network. The SIM card will include information that uniquely identifies the user and/or wireless device. For example, the SIM card may securely store an international mobile subscriber identity (IMSI) number and its related key. This information stored on the SIM card may be used to identify and authenticate users or subscribers of a mobile or wireless device. The SIM card may additionally include a unique serial number, such as an integrated circuit card identifier (ICCID), security authentication and ciphering information, temporary information related to a local network (e.g., a cellular or other wireless network), a list of services accessible by a user, and one or more passwords (e.g., a personal identification number (PIN), and a personal unblocking code (PUC) for PIN unlocking). The SIM card is often required to enable a wireless device to connect to and/or communicate with a particular cellular network associated with the SIM card. Further, a SIM card of one cellular network is often unusable for a wireless device to connect to and/or communicate with another cellular network. For example, a wireless device with a SIM card that enables communication with a T-Mobile® network typically cannot communicate with a Verizon® or ATT® network. A user desiring to communicate on the Verizon® or ATT® network must usually change the SIM card with one that is associated with the Verizon® or ATT® network.

Most wireless devices support a single SIM card and thus, most wireless devices can only communicate with a single cellular communication network at any given time. Some wireless devices may support two SIM cards enabling the wireless device to communicate with two cellular networks. However, typically only one SIM card may be active at a time. Thus, the wireless device can only communicate with a single cellular network associated with the active SIM card. Moreover, to switch SIM cards and communicate with another cellular network using the second SIM card, the wireless device typically must be reset or restarted, or the network subsystem at a minimum must be rebooted. When the wireless device is restarted or rebooted, the second SIM card can be selected as the active SIM card.

Often, if inconvenient at all, the restarting of the wireless device or the network subsystem of the wireless device is only a minor inconvenience because, for example, users often only switch SIM cards and/or cellular networks when travelling to a different country. In such cases, the phone is usually turned off or is in “airplane” mode during transit. Thus, the switching of SIM cards may be considered part of the turning on of the wireless device at the new location.

However, beyond travelling between countries or distant geographic locations associated with different cellular networks, there may be additional times when it can be beneficial to change cellular networks. For example, as a user travels in a more limited area or within a particular country, the coverage area or strength of a particular cellular network may vary. Usually a user's quality of service when using the wireless device corresponds to limitations of the particular cellular network subscribed to by the user. However, in some cases, it is desirable to maintain an improved quality of service by switching between cellular networks to maintain service using the cellular network that provides the best connection or highest signal strength in any particular area. Further, it may be desirable to have connections to multiple cellular networks simultaneously to improve multitasking with the wireless device. For example, a user may desire to download or stream content (e.g., music, movies, or games) from one or more content providers simultaneously, and/or while on a voice call with another user. In some such cases, each service or action may affect the quality of service or the other service or action when performed during connection to a single cellular network. However, by connecting to multiple cellular networks, it is possible to perform multiple tasks with minimal impact on each task. Moreover, it is possible to assign higher priority tasks, or tasks that require more bandwidth (e.g., high-definition content download) or a better connection to one cellular network while assigning lower priority tasks or tasks that require less bandwidth (e.g., a voice call) to another cellular network that may have lower signal strength.

Embodiments disclosed herein present a system and methods that enable a wireless device to communicate over multiple cellular networks without the aforementioned problems. For example, embodiments disclosed herein present a wireless device that is capable of communicating with multiple cellular networks at the same time, or substantially the same time, without requiring the wireless device to be reset or to reboot some or all of the wireless device. Further, embodiments disclosed herein present a wireless device that can switch the cellular network that is performing a task (e.g., downloading media, performing a voice call) prior to performing the task and/or during the task without downtime or loss of access to the cellular network during the transition between cellular networks.

FIG. 8illustrates a comparative example of a portion of a dual-SIM wireless device800. As illustrated, the wireless device800may include two SIM cards802,804that may communicate with a processor806. The processor806may control communication with a pair of cellular networks associated with the SIM cards802,804, respectively. Further, the wireless device800includes a single or primary antenna808for transmitting and receiving voice or data packets over a cellular network. The wireless device800further includes a modem810and RF subsystem812, which way include a front-end module, filter, or other radio frequency hardware for separating or combining signals that are received or are to be transmitted over the cellular network. The modem810may convert data for transmission via the primary antenna808. The modem810can convert digital data packets to modulated electrical signals for transmission via the primary antenna808. The RF subsystem812may include radio frequency diplexers, duplexers, and amplifiers for facilitating transmission and reception of wireless signals. For example, the RF subsystem812may include a front-end module configured to filter and amplify (e.g., using a low noise amplifier) a received signal. Further, the front-end module may further include one or more power amplifiers for amplifying a signal for transmission.

The wireless device may include a diversity antenna814that may be used to help determine signal strength. The diversity antenna814may obtain an independent sample from signals received by the wireless device. These independent samples may be used to measure the signal strength of signals received from the cellular network associated with the SIM card802or the SIM card804. Typically, the diversity antenna is for receive only and does not transmit signals, including voice or data packets. As such, the wireless device does not include a modem in connection with the diversity antenna814.

To switch between networks associated with the SIM802or SIM804, the wireless device800may be rebooted or turned off and then back on. Alternatively, the network subsystem may be reset. In either case, communication with a cellular network is generally not maintained while the active SIM is switched between SIM802and SIM804.

FIG. 9illustrates an example of cellular coverage across different communication technologies. Each of the circles represents the coverage of a single base station implementing a particular communication technology. For ease of illustration, some circles associated with 4G and/or 5G communication are omitted. However, it should be understood that more circles representing more base stations may exist to cover more of the geographic area represented by the circle902.

The circle902may represent a geographic area with 3G cellular coverage provided by a single 3G base station. A base station implementing 3G communication technology may have wider geographic coverage compared to base stations that implement 4G or 5G communication technology as represented by the circles904and906. Thus, more 4G or 5G base stations may be required to cover the same geographic area as a 3G base station. Further, more base stations implementing 5G technology may be required than base stations implementing 4G technology to cover the same geographic area. Thus, although newer cellular communication technologies may provide benefits, such as improved bandwidth or improved download/upload speeds, the coverage may be worse in particular geographic areas. It is therefore desirable to have wireless devices that can take advantage of different competitors' cellular networks to improve the chance of optimal coverage in any particular area. For example, it is advantageous to have a wireless device that can communicate over 2, 3, or more cellular networks without input from a user and/or without restarting or rebooting the wireless device or the network subsystem, which may include one or more pieces of hardware that facilitate communication over a network, of the wireless device.

Example Dual-SIM and Dual-Data Active Device

FIG. 10illustrates an example of a portion of a dual-SIM dual-data active wireless device1000in accordance with certain embodiments. As discussed above, with respect to the wireless device800, a wireless device may have multiple SIM cards. Such a device may be referred to as a dual-SIM device. As previously discussed, the dual-SIM device can only communicate with a single communication or cellular network at a time using a single SIM card. To communicate using the second SIM card, the wireless device must be reset to switch the active SIM card to the second SIM card.

A dual-SIM dual-data active wireless device enables a wireless device to communicate with multiple cellular networks using multiple SIM cards without needing to reset the wireless device, or network subsystem, which can cause temporary loss of a connection for a period of time, e.g., 20, 30, or 45 seconds. Although the temporary loss of connection may be acceptable when the wireless device is not in use, it can be problematic during a call or when the wireless device is accessing content on a network. A dual-SIM dual-data active wireless device may include a wireless device that can transmit and/or receive data packets on two cellular networks associated with two different SIM cards at the same time, or substantially the same time (e.g., within 1, 2, or 5 microseconds apart, or close enough in time that a user does not experience a loss or reduction in service).

In some embodiments, data packets transmitted over one cellular network may be associated with a first task, and data packets transmitted over another cellular network may be associated with the first task or a second task. For example, the first task may be accessing media at a first network site or from a first media service and the second task may be a voice call with another user or accessing media from another network site or media service. The data packets may be received or transmitted over the two cellular networks simultaneously or sufficiently close enough in time such that a user does not notice an interruption in services or an interruption in the performance of either the first task or the second task. In other words, in certain embodiments, the user may download content from a media site over the first communication network while talking to another user over the second communication network without any interruption in either task.

The wireless device1000ofFIG. 10includes a number of similar elements as the wireless device800as indicated by the re-use of certain reference numbers. The wireless device1000may be, or may mimic, a dual-SIM dual-data active wireless device in that the wireless device1000can receive communications from multiple cellular networks simultaneously, and can transmit across multiple cellular networks. However, at a particular point in time, the wireless device1000transmits across one cellular network. The wireless device may switch the active SIM associated with the desired cellular network dynamically and without restarting the wireless device enabling the wireless device1000to function similarly to a dual-SIM dual data active wireless device.

The wireless device1000includes a second RF subsystem1002. The second RF subsystem1002may be configured similarly to, and may perform similar actions as, the RF subsystem812. However, while the RF subsystem812may process signals received on the primary antenna808, the RF subsystem may process signals received by the diversity antenna814. Thus, in some cases, the RF subsystem812may process signals from a first cellular network associated with the SIM802that are received by the primary antenna808, and the RF subsystem1002may process signals from a second cellular network associated with the SIM804received by the diversity antenna814. In other cases, the RF subsystem812may process signals from the second cellular network associated with the SIM804that are received by the primary antenna808, and the RF subsystem1002may process signals from the first second cellular network associated with the SIM802received by the diversity antenna814.

As illustrated inFIG. 10, the signal path that includes the RF subsystem812includes the modem810. However, the signal path that includes the RF subsystem1002omits the modem. Accordingly, in certain embodiments of the wireless device1000, the signal path that includes the RF subsystem812may both receive and transmit voice and/or data packets using the primary antenna808. However, the signal path that includes the RF subsystem1002may receive signals, but may not transmit signals via the diversity antenna814. Further, the signals received at the diversity antenna814from the second cellular network may be all data packets, which may include voice data packets (e.g., VoLTE), but may omit voice packets. Accordingly, in certain embodiments, the RF subsystem1002may be a slimmed down version of the RF subsystem812. For example, while the RF subsystem812may include a power amplifier module with one or more power amplifiers for amplifying a signal prior to transmission, the RF subsystem1002may omit the power amplifier module. The slimmed down RF subsystem1002may thus be smaller in physical area and may use less power than the RF subsystem812.

In certain embodiments, the wireless device may include a tuner1004and a tuner1006. The tuners1004,1006may include any type of filter that can separate the signals received on the antennas808,814. For example, the tuner1004may include a band-pass filter to pass signals associated with a first cellular network associated with SIM802and one or more band-stop filters to remove signals (e.g., noise, undesired harmonics, frequency bands associated with other wireless or cellular networks, and the like) not associated with communication with the first cellular network. Similarly, the tuner1006may include a band-pass filter to pass signals associated with a second cellular network associated with SIM804and one or more band-stop filters to remove signals not associated with communication with the second cellular network. Further, the tuners1004,1006may convert the received RF signals from the cellular networks into a fixed frequency that facilitates further processing by the RF subsystems812,1002and/or the hardware processor806.

The tuner1006may further be configured to determine whether a received signal is from a cellular network implementing CDMA, TDMA, GSM, or some other type of communication protocol or standard. In some cases, the determination may be made based on a header that identifies the transmitter of the signal or data packer. In other cases, the determination may be made based on the signal characteristics. Based on the determination of the type of communication protocol, the tuner1006may cause a modification in the configuration of the RF subsystem812. Alternatively, or in addition, the RF subsystems812,1002may determine the type of cellular network or the communication protocol implemented by the cellular network. In yet other embodiments, the processor806may determine the type of cellular network or the communication protocol implemented by the cellular network, and may configure the RF subsystems812,1002accordingly.

In certain embodiments, the processor806may determine that the second cellular network associated with the SIM804is preferable for transmission. For example, the processor806may determine that the current signal strength of the second cellular network exceeds, or exceeds by a particular threshold, the current signal strength of the first cellular network. Additionally, or alternatively, the processor806may determine that transmission should occur over both the first cellular network and the second cellular network using both SIM802and SIM804, respectively. For example, the processor806may determine that the wireless device1000is attempting to transmit media (e.g., pictures) to a cloud network service (e.g., Dropbox®), and is attempting to establish and maintain a voice call, either using voice-packets or data packets (e.g., Voice over LTE (VoLTE)), or to transmit other data packets using another service (e.g., send email using an email provider). In some such cases, the wireless device1000may maintain also receive signals associated with the cellular network that is currently transmitting. Thus, in some such cases, either antenna808,814, and corresponding signal path, may receive signals from either cellular network associated with the SIMs802,804. As such, in some embodiments, the tuner1004may further include a band-pass filter to pass signals associated with the second cellular network associated with SIM804and one or more band-stop filters to remove signals not associated with communication with the second cellular network. Similarly, the tuner1006may further include a band-pass filter to pass signals associated with the first cellular network associated with SIM802and one or more band-stop filters to remove signals not associated with communication with the first cellular network.

It should be understood that the tuners1004,1006may include other types of filters and may include other circuitry for performing other functions related with the receipt of one or more signals associated with one or more cellular and/or wireless networks. Further, the tuner1006may additionally include circuitry for performing functions related to the transmission of signals associated with one or more cellular and/or wireless networks. In certain embodiments, the tuners1004,1006may be optional or omitted. For example, the functionality of the tuners1004,1006may be included in the RF subsystems812,1002, respectively. Further, in certain embodiments, the wireless device1000may further include one or more additional filters, diplexers, duplexers, or other circuitry for splitting and/or combining signals for communication with the cellular networks.

To enable the additional signal path that includes the RF subsystem to receive signals from one or more of the cellular networks, the diversity antenna814may include an additional connection1008. The connection1008may provide the signal received at the diversity antenna814to the tuner1004. Accordingly, the received signal received by the diversity antenna814may be provided to both the tuner1006and the tuner1004. The signal provided by the antenna814to the signal path that includes the tuner1006may be used to measure a signal strength of a cellular network in communication with the wireless device1000. The signal provided by the antenna814to the signal path that includes the tuner1004may be processed to obtain data received over the cellular network in communication with the wireless device1000.

The RF subsystem1002may be in communication with a port of the processor, such as an auxiliary port. The port may be a pin1010that is included on the processor806that enables an auxiliary device to communicate with the processor806. Advantageously, in certain embodiments, by connecting the second signal path to another port of the processor806(e.g., the pin1010) it is possible to switch the active SIM802or804without resetting, rebooting, or otherwise losing communication to one of the cellular networks.

In certain embodiments, the auxiliary device is the second RF communication path that permits signals received from a cellular network at the diversity antenna814to be provided to the processor806. The processor806can receive data from a second cellular network associated with the second SIM804over the diversity antenna814via the second RF subsystem1002connected to the auxiliary port. In some embodiments, the pin1010is not an auxiliary port but is associated with a particular feature of the processor806. In some such embodiments, the pin1010can be repurposed to receive communication signals from a cellular network over the antenna814in place of the feature previously associated with the pin1010. Accordingly, in certain embodiments, existing processors806can be retrofitted to support multiple cellular networks communicating with the wireless device1000in concert.

Further, the processor806can switch the SIM802,804card that is using the first or primary RF subsystem812enabling the wireless device1000to transmit over either cellular network using the primary, or non-diversity, antenna. The processor806may determine the SIM802,804card, or cellular network, to connect to or communicate with using the primary antenna808based on a detected signal strength of the two networks. Although the embodiment ofFIG. 10enables the wireless device1000to receive data from both cellular networks at the same time, transmission may occur over a single cellular network at a particular point in time. Thus, in some cases, the wireless device may not be a bi-directional dual-data dual-active device where both SIMs802,804are simultaneously active for both transmission and reception. However, the processor806may rapidly (e.g., within a few microseconds or milliseconds) switch the SIM802,804cards associated with the primary antenna808or the SIM802,804that is active a particular point in time. In some such cases, the rapid switching of which SIM802,804is active and/or which SIM802,804is operating over the signal path that includes the antenna808, may make it undetectable to a user that transmission is occurring via one of the cellular networks and not both cellular networks.

The switching of the active SIM802,804, or the SIM that is receiving and transmitting may be determined and/or performed by firmware This firmware may operate at the kernel or operating system level of the processor806. The firmware may determine the active SIM802,804, or the SIM802,804(and associated cellular network) to select for communication based on signal strength for the cellular networks. In addition, or alternatively, the SIM802,804may be selected based on the available bandwidth, the quality of service of the connection, the stability of the connection, a cost associated with the cellular network or any other characteristics associated with the cellular networks or connections therewith.

In certain embodiments, the wireless device1000may lose connection for a short period of time (e.g., less than 30 seconds, within 5 seconds, within a second, and any value between the foregoing) when switching active SIM cards. In some such embodiments, the wireless device1000may be configured to not switch active SIMs during an ongoing phone call. Thus, in certain embodiments, a user may not lose voice service during a transition between networks.

Second Example Dual-SIM and Dual Data Active Device

FIG. 11illustrates a second example of a dual-SIM dual-data active wireless device1100in accordance with certain embodiments. The wireless device1100ofFIG. 11includes a number of similar elements as the wireless devices800and1000as indicated by the re-use of certain reference numbers. As previously discussed, the wireless device1000may transmit over a single cellular network at a particular point in time. In contrast, the wireless device1100may have multiple active SIM cards and may communicate (e.g., both transmit and receive) with multiple cellular networks at a particular point in time. Thus, the wireless device1100may simultaneously receive and/or transmit signals using multiple cellular networks. The embodiments ofFIG. 11enables the wireless device to both receive and transmit over at least two cellular networks simultaneously, or at substantially the same time, by including a second pair of primary and diversity antennas. Further, the embodiment ofFIG. 11provides the ability to communicate with more than two cellular networks by replicating the features of the embodiments ofFIG. 10.

The wireless device1100may include a modem and RF subsystem1102that combines the modem and RF subsystem previously described. It should be understood that the modem and RF subsystem may be implemented on a single die (as illustrated) or on multiple separate chips or dies. Further, the wireless device1100may include a filter1104. The filter1104may include one or more filters that separate the desired frequency band from other received frequencies. For example, the filter1104may separate frequency bands associated with communication with a cellular network corresponding to the SIM802from frequency bands associated with communication with other cellular networks, such as those corresponding to SIMs1118,804, and1120, respectively. The filter1104may provide the signals associated with the cellular network corresponding to the SIM802to the modem and RF subsystem while discarding the other signals. Alternatively, or in addition, the filter1104may filter out noise and undesired harmonics from the received signals. For example, in some cases, a second or third harmonic of a received RF signal may match the frequency of another communication band associated with another cellular network or with another wireless communication technology, such as Wi-Fi®. To reduce or prevent interference, the filter1104may filter out the undesired harmonic. It should be understood that the depiction of the separate filter1104and tuner1004is for illustrative purposes. In certain embodiments, the filter1104may be included as part of a tuner (not shown). Further, the tuner1004may include one or more filters. Accordingly, in certain embodiments the element1104may be replaced with a combined (or separate pair of) tuner and filter element. Similarly, the tuner1004may be replaced with a combined (or separate pair of) tuner and filter element.

The wireless device1100may include an upper portion1122and a lower portion1124. The upper portion1122may be associated with a pair of SIMs802,1118that correspond to a pair of cellular networks. Further, the upper portion1122may include similar elements and functionality as the wireless device1000. Thus, the upper portion1122may receive signals from two different cellular networks associated with the SIMs802,1118, and can transmit at any particular point in time over one of the pair of cellular networks.

The lower portion1124may be a duplicate of the upper portion1122. But the lower portion1124may be associated with a different pair of SIMs804,1120. In certain embodiments, both the lower portion1124and the upper portion1122of the wireless device1100may include and may be controlled by the processor806. Further, each of the lower portion1124and the upper portion1122of the wireless device1100may separately receive and/or transmit to a cellular network corresponding to one of the active SIMs. Thus, in certain embodiments, the wireless device1100may receive communication from up to four cellular networks simultaneously. Further, the wireless device1100may transmit to up to two cellular networks simultaneously. Moreover, as with the wireless device1000, each of the upper portion1122and the lower portion1124may switch the active SIM enabling transmission with up to four cellular networks.

As illustrated, the lower portion1124may have its own primary antenna1114and diversity antenna1116pair. Alternatively, in certain embodiments, the upper portion1122and the lower portion1124may share access to one primary antenna (e.g., the primary antenna808) and one diversity antenna (e.g., the diversity antenna814).

As with the upper portion1122, the lower portion1124of the wireless device may include a combined modem and RF subsystem1106or may separate the modem and RF subsystem. Further, the lower portion1124may include a filter1108that filters signals received by the primary antenna1114before providing the received signals to the modem and RF subsystem1106. The signal path with the modem and RF subsystem1106and filter1108can both receive from and transmit signals to the cellular networks associated with the SIM804and the SIM1120.

The lower portion may further include an RF subsystem1110and tuner1112that can receive signals via the diversity antenna1116from the cellular networks associated with the SIM804and the SIM1120. In certain embodiments, the processor806communicates with the cellular networks associated with the SIM802and SIM1118using the upper portion1122of the wireless device1100and communicates with the cellular networks associated with the SIM804and SIM1120using the lower portion1124of the wireless device1100. Thus, the elements of the upper portion1122and the elements of the lower portion1124may be configured to process specific signal bands and to use specific encodings corresponding to the two SIMs of the upper portion1122and the lower portion1124, respectively. Advantageously, in certain embodiments, the segregating of the portions of the wireless device1100that communicate with the different cellular networks enables the modem and RF subsystems1102,1106and the RF subsystems1002and1110, as well as associated filters and tuners to be implemented using less circuitry.

Optionally, in certain embodiments, both the upper portion1122and the lower portion1124can communicate with some or all of the cellular networks corresponding to the SIMs802,1118,804, and1120. Advantageously, in certain embodiments, by enabling the upper portion1122and the lower portion1124to communicate with any of the cellular networks associated with the four included SIMs, the wireless device1100can transmit data packets or signals to any two of the cellular networks simultaneously.

Although the wireless device1100is illustrated as supporting up to four cellular networks, it should be understood that the wireless device1100can be modified to support more or fewer cellular networks. For example, the lower portion1124may include one SIM. As another example, an additional set of hardware may be included to enable communication with a fifth or sixth cellular network. In certain embodiments, the wireless device1100may require more power than the wireless device1000requiring a bigger battery and/or reducing battery life. However, the wireless device1100can support communication with a greater number of cellular networks. Further, in certain embodiments, the ability to communication with more cellular networks may in some cases reduce required power by providing increased flexibility to switch to a cellular network that has greater signal strength. For example, while the wireless device1000may select from up to two cellular networks, the wireless device1100may select from up to four cellular networks with which to communicate. As signal strength may vary based on the location of the wireless device, the wireless device1100may have more flexibility to select the cellular network with the strongest signal at a particular geographic area or time. In some cases, the increased flexibility may negate some of the increased power requirements of the wireless device1100compared to the wireless device1000.

Third Example Dual-SIM and Dual Data Active Device

FIG. 12illustrates a third example of a dual-SIM dual-data active wireless device1200in accordance with certain embodiments. The wireless device1200ofFIG. 12includes a number of similar elements as the wireless devices800,1000, and1100as indicated by the re-use of certain reference numbers. The wireless device1200includes a second modem1202that enables transmission over a second cellular network using a second SIM804at substantially the same time as transmission or communication over a first cellular network using a first SIM802. As a separate modem is within the signal path of the second primary antenna1114, both primary antennas808and1114can transmit to two different cellular networks associated with two different SIMs (e.g., SIM802or1118, and SIM804, respectively). Although not illustrated, the modem1202may include an RF subsystem for processing received RF signals received by the primary antennas1114and/or the diversity antenna1116. Further, the RF subsystem of the modem1202may facilitate transmission via the primary antenna1114.

The second modem1202may include an embedded processor1204that can communicate with a port1206, such as an auxiliary port or other reserved of the main or primary processor of the wireless device1200. The port1206may be a pinout (e.g., pin1010) or any other type of interface with the processor806. In some embodiments, the main processor (e.g., processor806) may support multiple SIM cards and thus, the wireless device1200may include a third SIM1118card. This third SIM card may be optional as indicated by the dashed line box for the SIM1118. In some embodiments, the wireless device ofFIG. 12may further include the embodiment ofFIG. 10.

Advantageously, in certain embodiments, the wireless device1200can have at least two active SIMs enabling communication with at least two cellular networks simultaneously. Further, the inclusion of multiple modems810,1202enables transmission of data and/or voice packets by the wireless device1200to multiple cellular networks simultaneously. Further, in certain embodiments, the wireless device1200uses less power than the wireless device1100.

The connection between the processor1204and the processor806may be a direct connection with a pin or port1206of the processor806. In some cases, the connection between the processor806and the processor1204may be a conductive trace on a printed circuit board that includes both the processor806and the processor1204.

In the wireless device1200, the processor806may continue to serve as the main processor or the primary processor. Thus, for example, the processor806may select the cellular network with which to communicate for a particular task (e.g., a call or access to a content service). Further, the processor806may execute kernel level, operating system level, and application system tasks. In addition, the processor806may process user interactions with the wireless device1200. The embedded processor1204may serve as a secondary processor. The processor1204may be at least partially controlled by the processor806. Further, the processor1204may be a control host for the modem1202.

Fourth Example Dual-SIM and Dual Data Active Device

FIG. 13illustrates a fourth example of a dual-SIM dual-data active wireless device1300in accordance with certain embodiments. The wireless device1300ofFIG. 13includes a number of similar elements as the wireless devices800,1000, and1100as indicated by the re-use of certain reference numbers. The embodiments ofFIG. 13include an additional modem and RF subsystem1302. The modem and RF subsystem1302may be combined as a single chip as illustrated inFIG. 13, or may be implemented as two separate chips similar to elements810and812. Further, the elements810and812may be replaced with a single chip that combines the mode and RF subsystem similar to the element1302. Alternatively, the embodiment ofFIG. 13may include the modem1202and embedded processor1204ofFIG. 12.

The modem and RF subsystem1302may communicate with a communication hub1304. This communication hub1304may connect to the data transfer and/or battery charging port1306of the processor. Thus, in some such embodiments, the dual-SIM dual-data active features of the wireless device1300can be implemented without the addition of another port on the processor and/or without using an auxiliary port or repurposing an assigned or existing port of the processor806. The data transfer and/or battery charging port1306may be a universal serial bus (USB) type port, such as a standard-size USB port, a mini-USB port, a micro-USB port, or a USB Type C port. It should be understood that the port1306is not limited to a USB-type port and that the port1306can include any type of port used by the wireless device1300for charging and/or data transfer. Further, the communication hub1304may replicate the data transfer and/or battery charging port1306of the processor806as the port1308of the communication hub1304enabling the wireless device1300to connect to an outlet or another port for data transfer via the port1308of the communication hub1304. In certain embodiments, the communication hub1304may communicate wirelessly with the processor806, such as via a Bluetooth® or other near-field communication protocol. However, to avoid interference with the communications with the cellular networks, the communication hub1304is typically configured to use a wired communication mechanism. As illustrated in the various figures, although described as a dual-SIM dual-data device, various implementations of the wireless devices may support more than two SIMs and/or may have more than two active SIMs actively communicating data packets with multiple cellular networks.

Second Example Communication Environment

FIG. 14illustrates an example communication environment1400for communicating using a dual-SIM dual-data active wireless device1300. The wireless device1300may attempt to communicate with a target system1406and/or1412via the cellular networks1402and/or1404. The wireless device1300may be substituted with any of the embodiments of the dual-SIM dual-data active wireless devices described herein. For example, the wireless device1300may be substituted with the wireless device1000,1100, or1200. Although only two cellular networks1402,1404and only two target systems1406,1412are depicted, it should be understood that the present disclosure is not limited as such and that the communication environment1400may include more or fewer cellular networks and more or fewer target systems.

The target systems1406,1412may include any device that can communicate with the wireless device1300. For example, the target systems1406,1412may each be another wireless device of the same type or of a different type as the wireless device1300. Further, the target systems1406and1412may each be of the same type or of different types. As another example, the target systems1406,1412may each be a server of a network-enabled service. For instance, the target systems1406,1412may each be a server or host of a media streaming service, a data backup service, a shopping service or retailer (e.g., Amazon® or Walmart®), a picture printing service, an email service, and the like. In some cases, the target systems1406,1412may each be a server or other computing device of an employer of a user who owns or uses the wireless device1300.

The wireless device1300, and any of the previously described wireless devices, may include any type of device that can communicate over a cellular network. For example, the wireless device1300may be or may include a smartphone, a tablet, a laptop, a wearable device (e.g., a smartwatch or smart glasses), a drone (e.g., a delivery drone, a mapping drone, a camera drone, a firefighting drone, etc.), an unmanned aerial vehicle, a delivery device, an automated vehicle, a medical device, or any other device that may include a SIM card and/or may communicate with a cellular network. In some cases, the wireless device1300, or any of the previously described wireless devices (e.g., wireless devices1000,1100, or1200) can use authentication methods other than SIM cards to communicate with a cellular network. Further, the wireless device1300may be capable of communicating with any type of communications network that uses electromagnetic communication. For example, the wireless device1300may support cellular communication, Wi-Fi communication, satellite communication, Bluetooth®, or any other type of wireless communication.

Using embodiments of the dual-SIM dual-data active wireless devices disclosed herein, it is possible to communicate over multiple cellular networks, which may be maintained by different entities or providers, and which may implement different technologies or use different frequency bandwidths. For example, as illustrated inFIG. 14, the wireless device may obtain an identifier, such as an Internet Protocol address from each wireless network or cellular network1402,1404. A different entity may own or operate each of the cellular networks1402,1404. For example, the cellular network1402may be Verizon's network and the cellular network1404may be Sprint's network. Further, each of the cellular networks1402,1404may be configured to operate with different frequency bands, different communication standards or protocols, or using different types of hardware. Thus, it will often be the case that a prior art wireless device configured to communicate with cellular network1402will be unable to communicate with cellular network1404, or vice-versa. However, the wireless device1300, and other wireless devices described herein, may communicate with either or both cellular networks1402,1404. Further, the cellular networks1402,1404may include one or more of the embodiments previously described with respect to the communication networks106. In some cases, the cellular networks1402,1404may be data networks configured to transmit data packets. These data packets may include any type of data. Further the data packets may include or encapsulate voice data. In some cases, the cellular networks1402,1404may transmit both data packets and voice packets. The cellular networks1402,1404may be configured to use different communication technology, protocols, or frequency bands. For example, the cellular networks1402,1404may be 2G, 3G, 4G, 4G LTE, or 5G cellular networks that can communicate with the wireless device1300using various corresponding frequency bands or encodings.

Moreover, as explained above, the wireless device1300may be able to communicate with other types of wireless networks besides cellular networks. For example, the wireless device1300may switch between cellular and a wireless local area network connection, or vice versa. In some cases, the wireless device1300may determine the communication connection to establish, maintain, or to switch to based at least in part on one or more connection selection criteria, such as signal or connection strength. In other cases, another system, such as a base station, dynamic routing system, or gateway may determine the communication connection to establish, maintain, or to switch to based at least in part on the one or more connection selection criteria. In such cases, the other system (e.g., dynamic routing system) may instruct the wireless device1300as to which network to communicate.

As stated above, the wireless device1300may communicate with the target system1406via one, or in some cases both, of the cellular networks1402,1404. Further, as stated above, the target system1406may be another wireless device, such as in the case when a user is calling another user, or the target system1406may be a host server, such as when the user is accessing content from a website or other services provider, such as a streaming media service. The wireless device1300may determine whether to communicate with the target system1406based on one or more characteristics of the cellular networks1402,1404and/or the connections to the cellular networks1402,1404. For example, the wireless device1300may determine the signal strength of a connection to each of the cellular networks1402,1404and select one of the cellular networks1402,1404with which to establish a connection with the target system1406based on the signal strength. The wireless device1300may then make the corresponding SIM within the wireless device the active SIM to enable communication with the selected cellular network. In some cases, the wireless device1300may maintain multiple active SIMs enabling communication over both the cellular networks1402,1404at the same time, or substantially the same time. For example, the wireless device1300may communicate with the target system1406using the cellular network1402and communicate with the target system1412using the cellular network1404.

In some embodiments, the wireless device1300may connect to the dynamic routing system1408using one or more of the cellular networks1402,1404. The dynamic routing system may include one or more of the embodiments described with respect to the dynamic routing system108. The wireless device1300may provide the dynamic routing system1408with a measurement of signal strength between the wireless device1300and a base station of each of the cellular networks1402,1404. Alternatively, the dynamic routing system1408may determine the measurement of signal strength associated with the wireless device's1300connection to each cellular network1402,1404from a system of each of the cellular networks1402,1404. For example, a base station, routing system, or connection server of each of the cellular networks1402,1404may provide the signal strength information to the dynamic routing system1408.

As previously stated, the wireless device1300may determine the cellular networks1402,1404with which to connect to the target system1406. In other cases, the dynamic routing system1408may determine the cellular network1402,1404the wireless device1300should use to communicate with the target system1406. The dynamic routing system1408may select the cellular network1402,1404based at least in part on the signal strength between the wireless device1300and the cellular networks1402,1404. Alternatively, or in addition, the dynamic routing system1408may select the cellular network1402,1404based on other connection characteristics or service level agreements. For example, the dynamic routing system1408may select the cellular networks1402,1404based at least in part on one or more of available bandwidth, stability of connection between the wireless device and each cellular networks, priority of traffic or data packets, type of data packet (e.g., voice data packets, media data packets, email, and the like), destination or source of the data sent or received, bandwidth costs associated with the connection, monetary costs associated with the connection, user preferences (e.g., a user may prefer a particular network due, for example, to costs, balancing of vendor usage, brand loyalty, or idiosyncrasies, and the like).

The dynamic routing system1408may inform the wireless device1300of the preferable or selected cellular network1402,1404or wireless network provider, with which to communicate with the target system1406. The wireless device1300may make the SIM (e.g., SIM802,804) card associated with the preferred or selected cellular network active for performing a desired task (e.g., communicating with the target system1406). In some cases, additional SIM cards may remain active at the wireless device1300and may be used to communicate with a corresponding cellular network1404to perform another task (e.g., communication with the target system1412). In some embodiments, the cellular networks1402,1404may be ranked based, for example, on signal strength, bandwidth, stability, and the like, or based on a combination of characteristics. The higher ranked cellular network may be used to perform a task with higher priority. For example, a phone call may be considered higher priority than other tasks, such as media download. In this example, if the signal strength associated with cellular network1402exceeds the signal strength associated with cellular network1404, the phone call may be processed using the cellular network1402and the media download, or other task, may be performed using the same network, or may be performed using the cellular network1404. The determination of whether to divide tasks among networks or to use the same network may depend on the specific task and/or the difference in characteristics between the cellular networks.

Alternatively, or in addition, the higher ranked cellular network may be used to perform a task that requires greater bandwidth or stability, but may or may not be a higher priority task. For example, a voice call usually requires less bandwidth than many other tasks, such as downloading a high-definition (HD) movie. Thus, although the cellular network1402may provide a better connection or be associated with higher signal strength, the voice call may be assigned to the cellular network1404and the media download to the cellular network1402. In some cases, whether or not a task is assigned to a particular cellular network may further depend on whether the connection or signal strength is sufficient to provide a minimal quality of service for the task. For example, continuing the previous example, although the voice call may require less bandwidth than the media download task, if the connection to the cellular network1404is not strong enough to maintain a clear voice call, the voice call may be allocated, with or without the media download task, to the cellular network1402.

In certain embodiments, the wireless device1300may determine whether a data packet belongs to a particular task for transmission over a particular cellular network1402,1404based on the source or application of the data packet. For example, data packets related to a voice call may be identified based on the source of the data packet being from a dialer application and/or based on the dialer application applying a label or tag to the data packet that identifies the data packet as being for a call (e.g., a voice over data or voice over LTE packet).

Over time, or as the wireless device1300is moved, the determination of the cellular network to perform a particular task or over which to maintain or establish a connection with a target system1406,1412may change. If the selected cellular network1402,1404changes, the wireless device1300may establish a new connection over the newly selected cellular network, or may use an existing connection with the newly selected cellular network to perform a task, which may be a new task or a task-in-progress (e.g., an existing call or download). To switch an existing task, or task-in-process, associated, for example, with the target system1406from one cellular network1402to another cellular network1404, the wireless device1300may establish a new connection with the cellular network1404. The task may be switched to the newly established connection with the cellular network1404. The connection with the cellular network1402may then be dropped, or may be maintained, but may no longer be used to perform the task associated with the target system1406. The determination of whether to switch cellular networks to perform a task at a particular point in time may be determined based, for example, on the changing signal strength of connections with the cellular networks1402,1404, changing bandwidth available, changing connection stability, or any other characteristic of the connections to the cellular networks1402,1404. Further, in some implementations, the wireless device1300may change the cellular networks used to perform a task when a change in connection characteristics exceeds a threshold or when the connection characteristics associated with a particular cellular network exceeds another cellular network by more than a threshold amount or percentage. Advantageously, in certain implementations, by requiring a threshold change or difference between cellular network characteristics, bouncing between cellular networks or cellular network connections may be reduced or prevented.

In some embodiments, the wireless device1300, or the dynamic routing system1408, may maintain a connection to a target system (e.g., the target system1406) using both cellular networks1402,1404and corresponding SIM cards of the wireless device1300. The wireless device1300may communicate over the preferred cellular network (e.g., the cellular network with a higher signal strength connection to the wireless device1300). As the user of the wireless device1300moves (e.g., drives down the road), the preferred cellular network may change. In some such cases, the wireless device1300may switch to the new preferred cellular network using the connection previously established with the new preferred cellular network and maintained throughout the time, or for at least some of the time, that the wireless device1300was communicating over the original preferred cellular network.

In some embodiments, the dynamic routing system1408may maintain the connection to the target system1406via both cellular networks1402,1404. As the preferred cellular network for the wireless device1300to communicate with the target system1406changes, the dynamic routing system1408may transition the connection with the wireless device1300from the previously preferred cellular network to the currently preferred cellular network. As both connections are maintained, the transition between cellular networks may be performed without service being interrupted.

The communication environment1400may include a number of nodes1410. Each of the nodes1410may be of the same type or may differ in type. The nodes1410may represent different nodes or hops within a network. At least some of the nodes1410may be part of the cellular networks1402and/or1404. Alternatively, at least some of the nodes1410may be part of another network in communication with the cellular networks1402,1404. In some embodiments, the number of nodes or hops between the wireless device1300and the target system1406,1412, or the amount of time to communicate between nodes or hops, may be a factor in determining whether the cellular network1402or the cellular network1404is selected to connect to a target system1406,1412. For example, the connection between the wireless device1300and the cellular network1404may be associated with a higher signal strength than the connection to the cellular network1402. However, the connection to the cellular network1402may be preferred because there are less hops to the target system1406using the cellular network1402than the cellular network1404. Thus, in some cases, the particular target system with which the wireless device1300desires to connect, or the connection characteristics with the target system may be a factor in selecting the cellular network with which the wireless device1300connection to the target system1406.

Each of the previously described embodiments, or aspects, may be combined or implemented separately. For example, the wireless device1200or1300may implement aspects of the wireless device1000enabling the signal paths associated with the processor806to support two SIMs and two corresponding cellular networks while the signal paths associated with the modem1202or1302may simultaneously support one or two SIMs and the one or two corresponding cellular networks. Accordingly, the wireless device1200may support dual active dual data communication across at least two cellular networks.

Additional Example Implementations

FIG. 15illustrates an example device-level implementation of a dual-SIM dual-data active wireless device1500in accordance with certain embodiments of the present disclosure. As illustrated, the wireless device1500may include an additional receiver (e.g., the LTE module) and antenna that can communicate with a different cellular network than the main antenna. Thus, wireless device1500can maintain two active data communication streams. One communication data stream can be using a first SIM to communicate with a first cellular network and a second communication data stream can be using a second SIM to communicate with a second cellular network. Moreover, each of the data streams can encapsulate voice data enabling either cellular network to be used for a voice call. In some embodiments the codec connected to the LTE module may be optional or omitted. Further, the switches connected to the codec may also be optional or omitted. The data packets received at the LTE module may be communicated to the main processor (e.g., the SDM660 from Qualcomm®) using the universal serial bus (USB) connection to the main processor. The connection type is not limited, and other types of connection types may be used. For example, the USB connection may instead be an electrical serial bus interface standard based connection such as inter-IC sound (I2S). As another example, the USB connection may be replaced with a universal asynchronous receiver-transmitter (UART) connection.

Shadow Number

FIG. 16illustrates an example communication environment1600for communicating using a dual-SIM dual-data active wireless device1602with a single phone number in accordance with certain embodiments of the present disclosure. As illustrated, the wireless device1602can support multiple SIM cards. Further, the wireless device1602can support dual active data. In other words, both SIM cards may be active simultaneously enabling communicate over multiple cellular networks simultaneously, or substantially at the same time.

As previously described, each SIM card may be associated with a different cellular network. Further, each SIM card may be associated with a different phone number. It can be inconvenient to have multiple active phone numbers because a caller may not know which number to dial to reach a user. Similarly, the user may be unsure which number to share with potential callers because the user may not know which cellular network will be preferred at a particular time or location. In certain embodiments, the wireless device and/or the user may be assigned a single phone number, or a shadow number, that can be used to identify the wireless device1602. When a caller desires to contact the user of the wireless device1602, the caller may dial the shadow number. This shadow number may be associated with a dynamic routing service. This dynamic routing service may include a dynamic routing system1604(e.g., the Metroswitch Gateway from MetroSwitch Technologies™). When a call is received from the caller (e.g., the target phone) at a cellular network, the cellular network may identify the target number (e.g., the shadow number) as being associated with the dynamic routing service. The call (or information about the call) may be forwarded to the dynamic routing system. The dynamic routing system1604may determine that the target number is a shadow for, or is associated with, the numbers assigned to the user of the wireless device1602. The dynamic routing system may determine the optimal cellular network to route the call based, for example, on the signal strength of the connections of the cellular networks to the wireless device1602. If it is determined that the cellular network associated with the SIM1 is preferred, the call may be routed over the cellular network (e.g., Carrier B) associated with SIM1. Similarly, if it is determined that the cellular network associated with the SIM2 is preferred, the call may be routed over the cellular network (e.g., Carrier C) associated with SIM2. In either case, the number associated with the selected SIM may be substituted by the dynamic routing system for the shadow number (e.g., the Own Phone Number ofFIG. 16) that was used by the caller to initiate the call. Alternatively, or in addition, the call may be routed over a data connection to the wireless device1602. It should be understood that a similar process can be used for establishing a voice or data connection with either a caller or other network-based service (e.g., streaming data service).

Similarly, when a user of the wireless device1602attempts to establish a call, regardless of which cellular network is selected, and which associated SIM card is used, the shadow number may be presented. Thus, caller id and other services may use the shadow number enabling the consistent use of a single number despite varying numbers and cellular networks used for communication. When a user makes a call, or a data connection, the number is identified by the associated carrier as being associated with the dynamic routing service. The number presented to a target recipient may be switched by the associated carrier to the shadow number. Alternatively, the call or data connection may be provided to the dynamic routing system for further processing and routing. The dynamic routing system may then substitute the phone number (e.g., the number associated with SIM1 or SIM2) with the shadow number (e.g., the Own Phone Number ofFIG. 16). In some cases, the call may be made over a data connection. If the data connection is determined to be below a particular call quality, or if a signal strength associated with the call is below a threshold, a voice call may be initiated using one of SIMs (e.g., SIM1 or SIM2).

In some embodiments, the dialer, user interface, or the software controller of the wireless device1602may be modified to output a shadow number assigned to a user or wireless device1602upon a user initiating a call using the wireless device1602. Thus, when a user dials a number associated with another user (e.g., places a call to a target phone), the packet data may include the shadow number. This call, or packet data, may be forwarded or transmitted to a gateway or dynamic routing system1604.

The dynamic routing system1604may determine a carrier to process the call based on one or more carrier characteristics, such as those described in U.S. Pat. No. 9,124,957, incorporated by reference above. For example, the call may be routed based on signal quality, cost, priority, payment terms, quality of service level, location of target caller, and the like. The dynamic routing system1604may forward the call to the selected carrier to complete the call connection. For example, the dynamic routing system1604may forward the call to one or Carrier B or Carrier C. These carriers may be associated with a different entity than the dynamic routing system1604. Alternatively, or in addition, the dynamic routing system1604may cause the call connection to be completed using a call network associated with the same entity as the dynamic routing system1604. When the call information is forwarded to a carrier to complete the call connection, the dynamic routing system1604may continue to present the shadow number. It should be understood that this shadow number may not be assigned or owned by any of the carriers, but may instead be a number owned or assigned by an entity that controls the dynamic routing system1604. In some such cases, the dynamic routing system1604may substitute a number associated with the selected carrier for the shadow number such that the carrier is not aware that a shadow number is being used. In some such cases, the call may continue to be routed through a network of the dynamic routing system1604as an intermediary. In other cases, the shadow number may continue to be used and upon the call connection being established, the call may continue directly between the wireless device1602and the selected carrier without further interaction with the dynamic routing system1604.

When attempting to initiate a call, the wireless device1602may initially determine, using for example a call controller or call control software executed by a hardware processor, whether to establish the call over a data network (e.g., a VoIP call). In some cases, the wireless device1602may determine whether to make a call over a data network, a voice network, or using one of a plurality of networks supported by the wireless device1602associated with one of a plurality of SIMs of the wireless device1602by measuring signal strength of each of the connection options. The signal strength may be measured using any of the previously described embodiments herein. For example, a diversity antenna may be used to measure a signal strength for a network. The signal strength of each network may be measured by rotating between active networks, measuring the signal strength, and selecting the network with the best signal strength. Alternatively, one network may be active while the signal strength of an alternative network is measured. The wireless device1602may switch active networks if determining the alternative network has a higher signal strength.

The wireless device1602may present the shadow number as the originating number of the call. If the wireless device1602determines that the quality of the call over the data network is below a threshold quality, the wireless device1602may instead attempt to connect the call by dialing a number associated with a SIM of the wireless device1602. This SIM may be one of one or more SIMs supported by the wireless device1602(e.g., SIM1 or SIM2). The call connection may be a voice connection or a data connection over a cellular network (e.g., a 4G or 5G connection).

The call may output a number associated with the SIM (e.g., 603-222-0001) instead of the shadow number (e.g., 805-000-0001) that is output when attempting to establish the data connection. For example, the voice packets may include the number associated with the SIM as the originating number. The call may be connected with the dynamic routing system1604. In some cases, the voice packets are directed or transmitted to the dynamic routing system1604. The dynamic routing system1604may determine that the number included in the voice packets is associated with the SIM, and that the SIM is associated with the same account as the shadow number. The dynamic routing system1604may substitute the number associated with the SIM with the shadow number such that the shadow number is presented to a selected carrier (e.g., a carrier selected based on the calling number, or one or more of the previously described routing factors) and/or the target phone of the user being called. Thus, although the originating user, or the wireless device1602associated with the originating user may be associated with multiple numbers and/or may communicate over multiple carriers associated with different numbers, a single number may be presented.

FIG. 17illustrates an example communication environment1700with a dynamic routing system for communicating using a dual-SIM dual-data active wireless device in accordance with certain embodiments of the present disclosure. As illustrated, when a base station of a network (e.g., an LTE network) receives a call from a dual active data supporting wireless device that supports multiple cellular networks, the base station, or supporting systems of the carrier, may determine that the caller is associated with a dynamic routing service. This determination may be based on the phone number of the caller or other information that may be embedded into data packets from the wireless device. The base station, or supporting systems, may cause the call, or information thereof, to be transferred to the dynamic routing system (e.g., the Metroswitch Gateway). The dynamic routing system can then determine the preferred number or carrier for the wireless device to communicate. The dynamic routing system may then cause the wireless device to communicate with the preferred carrier (e.g., based on signal quality or cost) by either maintaining an existing connection with the initial carrier, or causing the wireless device to switch active SIMs and to communicate with an alternative carrier or cellular network. In some cases, the wireless device may maintain the connection to the initial carrier's cellular network and initiate a connection to the second carrier's cellular network.

FIG. 20illustrates an example user interface2000of a wireless device1602that may support a shadow number. As illustrated, the user interface2000may be accessed from a settings screen by, for example, activating a special dialing feature via a user interface feature2002(e.g., a link, button, or slider UI feature).

The user interface2000may include a password interface to prevent unauthorized or accidental modification of the shadow number, or of numbers associated with the shadow number. Further, the password interface may be used to provide access control for activating or deactivating use of the shadow number. In some cases, the password interface may be optional or omitted. For example, in some cases, usage of the shadow number feature may be controlled by a carrier or on the carrier side, or via a separate network interface (e.g., a webpage) available to the user. As another example, the usage of the shadow number may not be an access control (e.g., password) protected feature.

The user interface2000may further include one or more UI elements that present one or more phone numbers associated with the shadow number. These phone numbers may be numbers may include numbers associated with one or more SIMs of the wireless device1602. In some cases, the numbers may also include an identity of the shadow number. For example, the first listed number may be the shadow number, and the second and third listed numbers may numbers associated with SIM1 and SIM2, respectively. In some cases, the user interface2000enables a user to select the number that is the shadow number, and/or a number that is presented when establishing a call regardless of the actual number or network used to make the call. Thus, in some cases, the shadow number may be a number associated with one of the carriers supported by the wireless device1602. For example, the shadow number may also be the number associated with Carrier B or SIM2. Alternatively, the shadow number may not be associated with any of the carriers or SIM cards, and may serve as a substitute for all of the numbers supported by the wireless device1602. In either cases, as previously described, the dynamic routing system1604may control or direct routing of the call over a network associated with a number associated with one of the SIMs while presenting the shadow number as a substitute for the number at the carrier and/or at the originating and/or target wireless device or phone.

Second Additional Example Implementations

FIG. 18illustrates a second example device-level implementation of a dual-SIM dual-data active wireless device1800in accordance with certain embodiments of the present disclosure. The wireless device1800includes a secondary communication path that interfaces with a secondary processor (e.g., the MSM8909 from Qualcomm®). In the wireless device1800, each processor can support up to two SIM cards. Thus, the wireless device1800can support up to four cellular networks. Further, the secondary processor can communicate with the primary or main processor (e.g., the SDM660) via a USB interface, or other communication interface, such as I2S, UART, general purpose input-output (GPIO) interfaces. Each communication path within the wireless device1800may have its own RF front-end-module (FEM) and main antenna. Accordingly, each communication path may separately transmit and receive data and/or voice packets. Thus, at least two SIMs may be active simultaneously. Further, each processor can separately process data for transmission and/or received data. The secondary processor may transmit and/or receive data using the lower RF FEM and antenna inFIG. 18, and the primary processor may transmit and/or receive data using the upper RF FEM and antenna inFIG. 18.

FIG. 19illustrates a second example device-level implementation of a dual-SIM dual-data active wireless device1900in accordance with certain embodiments of the present disclosure. The wireless device1900connects the diversity antenna to a RF FEM, which is turn communicates with the transceiver. Thus, in certain embodiments, the wireless device1900can receive data packets from the diversity antenna enabling the wireless device1900to receive data from two cellular networks associated with two SIM cards.

Example Centralized Network Selection Process

As described with respect toFIG. 2, and elsewhere herein, a dynamic routing system (such as the dynamic routing system108, the dynamic routing system1408, or the dynamic routing system1604) can determine a communications network for a wireless device (e.g., a smartphone, drone, automated vehicle, or other device capable of wireless communication) to maintain a data and/or voice connection based at least in part on a determined signal strength or other network characteristic for each of a set of communication networks. As part of the process200, the dynamic routing system may provide the wireless device (e.g., the wireless device1000,1100,1200) with an identity of a selected communication network. The wireless device may then communicate over the selected communication network. In some cases, the dynamic routing system may provide the wireless device with an ordered list of communication networks, the wireless device can use the ordered list to route data and/or voice communications based on a priority. For example, a data connection may be routed via the communication network with better quality of service or signal strength and a voice connection (which typically requires less bandwidth) may be routed over the communication network with lower signal strength. In other cases, the connection priority may be reversed such that the voice call (or voice over IP call) is routed over the communication network with higher signal strength.

FIG. 21illustrates a flow diagram for one embodiment of a centralized network selection process2100in accordance with the teachings of the present disclosure. The process2100can be performed by any system that can support one or more communication connections (data or voice including, but not limited to, voice over IP) to a plurality of communication networks and that can receive a selection or ranking of communication networks from a routing system, such as the dynamic routing systems108,1408,1604. For example, one or more operations of the process2100can be performed by a wireless device1000,1100,1200,1300, or components thereof (such as processor806,1204, RF subsystem812, or modem1202,1302, etc.). As previously described, the wireless device may be a smartphone. Alternatively, or in addition, the wireless device may be any other electronic device that can communicate over a wireless network, such as a drone (e.g., a delivery drone or a camera drone), automated vehicle (e.g., self-driving car), medical device, etc. Although a number of different systems may perform some or all of the process2100, to simplify discussion, the process2100will be described with respect to particular systems.

The process2100begins at block2102when, for example, the wireless device1300connects to a dynamic routing system (e.g., dynamic routing system108,1408,1604) via a communication network. Although any dynamic routing system or communications gateway can be used with respect to the process2100, to simplify discussion, the process2100will be described with respect to the dynamic routing system1604.

In some cases, the wireless device1300may connect directly to the dynamic routing system1604. However, generally the wireless device1300connects or communicates with the dynamic routing system1604via a communication network, such as a cellular network, that is supported by the wireless device1300. The communication network may be one of a plurality of communication networks supported by the wireless device1300. Each of the communication networks may be different cellular networks that use different frequency bands, use different cellular technology (e.g., 3G, 4G, 4G LTE, 5G, TDMA, CDMA, GSM, etc.), are owned or maintained by different communication providers (e.g., AT&T®, T-Mobile®, Verizon®, etc.). Alternatively, or in addition, at least some of the communication networks may be non-cellular networks. For example, the communication networks may include Wi-Fi networks, satellite networks, or any other type of communication network.

The wireless device1300, and/or an operator of the wireless device1300, may or may not be aware that the wireless device1300is communicating with the dynamic routing system1604. For example, a user may interact with a user interface (e.g., a dialer, a web-browser, or other application) of the wireless device1300to initiate a phone call, to access a website, or to access some other service over a network, and the wireless device1300(in conjunction with the dynamic routing system1604) may automatically perform the process2100without the user being aware that the process2100is being performed.

In some cases, the block2102may include connecting to the dynamic routing system1604via a plurality of supported communication networks. For example, during operation, the wireless device1300may attempt to initiate or maintain connections with some or all of supported communication networks. Each connection may be routed to or through the dynamic routing system1604. Alternatively, or in addition, the user may initiate multiple connections by, for example, making multiple requests or performing multiple interactions with the wireless device1300at least partially in parallel. For example, the user may initiate, or cause to be performed, a file download, a video stream, a phone call, a navigation process, or any number of other supported operations by the wireless device1300at least partially in parallel. At least some of the operations may be performed via different network connections over the same communication network or over different communication networks. In cases where the operations are performed over different communication networks, the block2102may include connecting to the dynamic routing system1604via one or more of the communication networks. In some cases, the wireless device1300communications with the dynamic routing system1604via the communication network that is currently identified as the primary network. The primary network may be the network last designated as the primary network, the network with the best signal strength, a network designated by a user as the primary or preferred communication network, the network designated as the primary network in a particular geographic area, or based on any other criteria for identifying the primary network. Alternatively, the wireless device1300communicates with the dynamic routing system1604via a communication network that is currently not identified as the primary network and/or is not being used to perform one or more operations.

In some cases, the wireless device1300provides the dynamic routing system1604with an identity of supported communication networks that are supported by the wireless device1300. Further, the wireless device1300may provide additional information relating to communication via the supported communication networks, such as preferred networks. In other cases, the dynamic routing system1604is capable of determining the supported communication networks based on an identifier associated with the wireless device1300, such as an IP address, an account name, a MAC address, and the like.

At block2104, the wireless device1300determines a signal strength for a connection to each of a set of communication networks. The set of communication networks may or may not include the communication network used at the block2102to connect to the dynamic routing system. Further, the set of communication networks may or may not include all the communication networks to which the wireless device1300is capable of connecting. The wireless device1300may determine the signal strength for a connection to a communication network using a diversity antenna (e.g., the diversity antenna814,1116, etc.). Further, this signal strength may be determined by an RF subsystem (e.g., the RF subsystem812) and/or a processor (e.g., the processor806) of the wireless device1300. In some embodiments, the block2104may include measuring additional and/or alternative connection characteristics, such as round trip packet time, bit error rate, packet loss, packet delay, signal to noise ratio, etc.

In some embodiments, the dynamic routing system1604determines the signal strength for one or more connections via one or more communication networks to the wireless device1300. In some such cases, the block2104may be optional or omitted.

In some cases, the signal strength is a real-time or near real-time determination of signal strength for a connection between the wireless device1300and a communication network. In other cases, the signal strength determined for each communication connection may be a predicted or estimated signal strength that is determined for the wireless device1300connecting to each of the communication networks. The prediction or estimate of signal strength may be determined based on historical data that includes prior connections between the wireless device1300and the communication networks at particular geographic locations, with particular base stations or other communication hardware, and/or at particular times of the day or week. Further, the prediction or estimate of signal strength may be determined from data collected or aggregated from other wireless devices that are currently or have previously connected to the communication network at a particular time and/or geographic location. For example, it may be determined that based on a set of wireless devices currently connecting to a first communication network and a set of wireless devices (which may or may not be overlapping) currently connecting to a second communication network, that the predicted signal strength for the wireless device1300will be higher with the first communication network. In such cases, the dynamic routing system1604may instruct the wireless device1300to connect to, or to use a connection with, the first communication network when the wireless device1300is within proximity of (e.g., within range of a particular base station) where the set of wireless devices were located when connecting to the first communication network.

At block2106, the wireless device1300provides the signal strength measurements to the dynamic routing system1604. The signal strength measurements for each communication network may be provided upon connection to the communication network, upon switching base stations, periodically, intermittently, upon request by the dynamic routing system1604, upon signal quality dropping below a threshold, upon signal quality changing by more than a threshold amount, or in response to any other trigger.

At block2108, the wireless device1300determines its location and/or the trajectory of the wireless device1300. Alternatively, or in addition, the dynamic routing system1604may determine the location and/or the trajectory of the wireless device1300. In some cases, the wireless device1300determines its location, which it may send to the dynamic routing system1604, and the dynamic routing system1604may determine the trajectory of the wireless device1300. The location and/or trajectory of the wireless device1300may be determined based at least in part on an identity of one or more base stations communicating with the wireless device1300, a location determined by a satellite-based geolocation system (e.g., Global Positioning System (GPS)), travel history of the wireless device1300, Wi-Fi connection(s) established by the wireless device1300, or any other type of location data. Further, multiple location sources may be used to determine a location and/or trajectory of the wireless device1300. In some cases, a trajectory of the wireless device1300may be determined based on a command or task assigned to the wireless device1300. For example, if the wireless device1300is, or is included as part of, a drone delivery device, the trajectory of the wireless device1300may be determined based on assigned deliveries. As another example, the trajectory of the wireless device1300may be determined based at least in part on an address supplied to the wireless device1300or traffic patterns obtained along one or more potential routes of the wireless device1300.

At block2110, the wireless device1300receives a selection of a communication connection from the dynamic routing system1604. Receiving the selection of the communication connection may include receiving a selection of a data network with which to communicate. Alternatively, or in addition, receiving the selection of the communication connection may include receiving an identification of a base station, a router, a communication gateway, or any other communication hardware or system with which a device may communicate to establish, initiate, or maintain a network connection, cellular or otherwise. The selected communication connection can be an existing connection, or one of a set of existing connections to use with respect to an operation (e.g., a call or other operation that utilizes a communication connection). Alternatively, or in addition, the selected communication connection may be a potential connection that has not yet been established. This communication connection may be selected based on, for example, historical connection data or an anticipated trajectory of the wireless device1300. In some cases, the selected communication connection is a ranking of available communication connections. In some such cases, the wireless device1300(or processor806thereof) may prioritize connections to different communication networks identified in the ranking of available communication connections. The wireless device1300may select the highest ranked communication connection, or may allocate different communication connections to different tasks based, for example, on the task priority or characteristics of the task. For example, tasks or operations that require a more stable or higher bandwidth connection (e.g., HD streaming) may be performed with a different communication connection that can operate with lower bandwidth (e.g., a voice call).

The dynamic routing system1604may select, or rank, communication connections (or communication networks) based at least in part on signal strength for each of the communication connections, a comparison of signal strengths for a set of communication connections, location of the wireless device1300, a trajectory of the wireless device1300, and/or a predicted trajectory or location of the wireless device1300. The dynamic routing system1604may compare the signal strength of connections to different data networks to determine the communication connection or the data network to select or rank. In some cases, the dynamic routing system1604may determine a communication connection (or communication network) or a ranking of communication connections (or communication networks) using a network selection process. For example, the dynamic routing system1604may use the process200to select a communication network.

The process2100may be performed each time the wireless device1300attempts to perform a new operation (e.g., a new voice call or a new communication connection to an external service). Further, the process2100may be performed repeatedly, periodically, or intermittently. In some cases, the process2100may be performed each time the wireless device1300moves into or out of a range of a network connection, a networking device, or a base station. Further, the process2100may be repeated each time there is a threshold change in signal quality or signal strength of an active or existing communication connection.

Example Satellite Communications Environment

As has been described herein, features of the present disclosure enable a wireless device to maintain an optimal communication connection. As the wireless device moves or the quality of a communication connection changes, the wireless device may switch communication networks. Further, the wireless device may maintain multiple communication connections to multiple communication networks enabling prioritization of different operations among different communication networks. In other words, the wireless device can be a dual data dual active device that has multiple active data connections that are, at least some of the time, simultaneously communicating with multiple communication networks.

Further, as previously described, the wireless device is not limited to a smartphone, but can include any type of device that may communicate via a communication network, whether a cellular network, a satellite-based network, wireless network, a hybrid of two or more types of networks, or any other type of network. For example, the wireless device can be a self-driving vehicle (car or otherwise), a delivery drone or other type of drone, laptop, tablet, etc. As is clear from the above examples, in some cases the wireless device may be self-moving or may move in response to a command, and in other cases, a user may carry the wireless device.

In some cases, it is desirable to maintain a network connection, or a network connection of an above threshold signal quality or signal strength during a trip by the wireless device or a system that includes the wireless device. For example, a delivery drone may use a network connection to help navigate, to communicate status information, or to provider delivery updates. Thus, it may be desirable to ensure that the delivery drone maintains a communication connection or network connection during operation. As another example, a user may desire to always have a network connection during a trip. For example, the user may be expecting an important call or may have a health condition and desire to always have a network connection for emergencies.

Certain embodiments of the present disclosure can route a path for the wireless device to ensure a network connection throughout a trip or during operation. The path may be used to control movement of the wireless device, or may be a recommended path presented to a user. The user may then instruct the wireless device to follow a particular path, or the user may elect to follow a particular path to maintain network connection. In some cases, the path can be determined in advance based on historical data (e.g., signal strength of prior connections by the wireless device or by other devices). Alternatively, or in addition, the path may be determined substantially in real time based on signal strengths measured by the wireless device or other wireless devices travelling along potential paths of the wireless device (or user or system carrying the wireless device).

FIG. 22illustrates an embodiment of a satellite communications environment2200in accordance with the teachings of the present disclosure. In one example use cases with respect to the satellite communications environment2200, a drone2202(e.g., a package delivery drone) is scheduled to travel (e.g., to deliver a package) to a target location2204(e.g., a house or office). As illustrated by the dashed lines2206A,2206B,2206C,2206D,2206E, the drone2202may travel multiple different paths or combinations of possible paths to reach the target location2204. These paths may be travel lanes approved by a government agency, paths that are unobstructed by obstacles, roads for vehicular traffic, or any other type of path where a wireless device may travel.

As previously explained, in some cases it is desirable that the wireless device, the drone2202in this particular non-limiting example use-case, maintains a network connection, or a network connection of a particular quality. As a number of the embodiments are applicable to other wireless devices, the term drone2202and wireless device2202are used interchangeably herein. Further, as with previously described wireless devices herein, the drone or wireless device2202may be a dual data dual active device that is capable of communicating over multiple distinct communication networks simultaneously or at least partially in parallel. In some cases, the drone2202may communicate with a satellite2208, either directly or via a connection to an intermediary system. Due to power requirements, in most cases the drone2202will only download data from the satellite2208. Data to be uploaded to the satellite2208may be transmitted to a base station or cell tower, which may transmit the data to the satellite2208. Although a single satellite2208is depicted, it should be understood that the satellite2208may be one of a set of satellites, or may represent a set of satellites, that can determine a position of a drone2202, or other wireless device, using triangulation.

The satellite2208may provide the drone2202with a selected path to travel to the target location2204. In some cases, the satellite2208may include a dynamic routing system1408that determines a communication network based on network characteristics (e.g., signal strength) for the drone2202to use, and a path to travel to the target location to maintain an optimal connection to the communication network. Alternatively, or in addition, the dynamic routing system1408may be a separate system which can provide a communication network selection (or ranking) and/or a travel path to the satellite2208. The satellite2208may provide the network and/or path selection to the drone2202.

The travel path may be selected based on the signal strength along the path as determined based on historical data and/or other wireless devices currently along the path that are connecting to a communication network. Further, identity of the path may include identify of a communication network along the path that provides the best signal strength. In some cases, wireless devices, such as the drone2202, may provide signal strength information to a dynamic routing system (e.g., the dynamic routing system1406). Based on the provided signal strength information, the dynamic routing system1408may determine a communication network that provides the highest signal strength or best signal quality at a particular location along the different paths represented by the dashed lines2206A,2206B,2206C,2206D,2206E. The dynamic routing system1406may use any of the processes disclosed herein (e.g., the process200,2100) to determine a communication network with the highest signal strength. In some cases, the satellite2208may direct the travel of the wireless device2202based on measured signal strengths along different paths to the target location2204. The satellite2208may direct the travel of the drone2202(or other wireless device) in real time and/or in advance of travel by the drone2202. In some cases, buildings, trees, mountains, and other obstacles may interference with connections to the base stations2210, or other networking systems. In some such cases, the satellite2208may direct the drone2202along a path that may not be the shortest path, but which may have more consistent network coverage or better average signal strength.

In some cases, the drone2202may receive instructions regarding travel direction from the satellite2208and may transmit signal strength or other communication quality information to the dynamic routing system1408via a terrestrial communication system, such as a cellular communication network or a Wi-Fi network. The network may include cellphone towers and/or other mechanisms for maintaining a network, such as balloons (e.g., Loon by Google®), or other stratospheric systems.

Example Route Mapping Process

FIG. 23illustrates a flow diagram for an example embodiment of a route mapping process in accordance with the teachings of the present disclosure. The process2300can be performed by any system that can provide mapping or navigation information to a wireless device to control the navigation of the wireless device or to permit a user to navigate based on the predicted or anticipated signal strength of a communication connection for the wireless device along the route. For example, one or more operations of the process2300can be performed by a wireless device1000,1100,1200,1300,2202or components thereof (such as processor806,1204, RF subsystem812, or modem1202,1302, etc.), a satellite2208, and/or a dynamic routing system1408, among other systems. As previously described, the wireless device may be a smartphone. Alternatively, or in addition, the wireless device may be any other electronic device that can communicate over a wireless network, such as a drone (e.g., a delivery drone, firefighting drone, or a camera drone), automated vehicle (e.g., self-driving car), medical device, etc. Although a number of different systems may perform some or all of the process2300, to simplify discussion, the process2300will be described with respect to particular systems.

The process2300begins at block2302when, for example, the satellite2208determines a current location of a wireless mobile device2202. The mobile wireless device2202may be any type of mobile wireless device, such as a delivery drone, a firefighting drone, or a camera drone. As explained above, the wireless device is not limited in type and can include any type of wireless device. Further, the wireless device is not limited to a self-mobile device (e.g., a drone), but can include a wireless device that may be carried by a device or user (e.g., a smartphone). Moreover, as previously described, the satellite2208may be one of a set or network of satellites.

The current location of the wireless device may be determined based on one or more signals (e.g., radio frequency, microwave, or other electromagnetic signals) received from one or more base stations or cells. For example, one or more base stations may communicate with the wireless mobile device2202. Based on the communication with the wireless mobile device2202, a base station may determine a coarse location of the mobile device2202, which may be provided to the satellite2208. Using the coarse location of the mobile device2202, the satellite2208may locate the mobile device2202and determine a more fine-grained location. In other cases, the satellite2208may directly determine the location of the mobile device2202without the use of base stations or cells.

The current location may be provided by the wireless mobile device2202to a base station. The base station may provide the location received from the wireless mobile device2202to the satellite2208.

Further, the current location may be a location where the mobile device2202begins a task or operation (e.g., leaves a warehouse to make a delivery). In other cases, the current location may be a waypoint on a trip. For example, the current location may be a midpoint in a trip or a prior stop. In some cases, the current location can be any point along a path of the mobile device2202.

At block2304, the satellite2208determines a target location of the wireless mobile device2202. The satellite2208may determine the target location based on a command or information provided by the wireless mobile device2202to a base station or cell tower, which may provide or forward the target location information to the satellite2208. For example, the satellite2208may receive an itinerary or schedule of locations to which the wireless mobile device2202is scheduled to travel. Alternatively, or in addition, the satellite2208may predict the target location of the wireless mobile device2202based, for example, on historical data (e.g., past travel of or with the mobile device2202) and/or a trajectory of the wireless mobile device2202based on detected existing travel of the mobile device2202. In some cases, the target location may be determined by the dynamic routing system1408, or a server in communication with a communication network and/or the Internet.

At block2306, the satellite2208identifies a set of eligible routes between the current location of the wireless mobile device2202and the target location of the wireless mobile device. Generally, the set of eligible routes include a plurality of possible or eligible routes between the current location (or in some cases an identified starting location, which may differ from a current location) of the wireless mobile device2202and the target location. However, in some cases, the set of eligible routes may include a single route. For example, it may be determined that there is only a single viable path between two locations.

The set of eligible routes may vary based on the type of wireless mobile device2202. For example, the set of eligible routes may be limited to routes formed from a road network for wheeled mobile devices2202(e.g., an automated car) or mobile devices carried by a user (e.g., smartphone or laptop). In some cases, the set of eligible routes may include walking paths for mobile devices carried by the user, which may be based on whether a user specifies walking mode or driving mode, or on a determination based on speed of movement or location of the mobile device2202whether the user is walking to a target location. In some cases, the set of eligible routes may include overland routes or routes over obstacles of a particular height or type. For example, if the mobile device2202is capable of flight (e.g., certain types of drones), the set of eligible routes may include at least portions of the route that are not traversable by foot or on the ground. In some cases, the set of eligible routes may be determined as a series of traversable waypoints. These traversable waypoints may be based on road networks, cell towers, identified or predicted target locations, or any other type of waypoint that may be used to project or determine a traversable route for the mobile device2202, or a user or system carrying the mobile device2202. Further, the traversable waypoints may serve as a series of breadcrumbs for directing travel along a route.

In some cases, the set of eligible routes may depend on laws in the jurisdictions, environmental factors or obstacles, trespassing laws, ownership of buildings or property, or any other factor that may affect the route for the mobile device2202. For example, a flying drone may be restricted from traversing private property, or may be required to be a certain height above a building.

In some embodiments, some or all of the operations associated with the block2306may be performed by the dynamic routing system1408. Further, some or all of the operations may be performed by a server in communication with the dynamic routing system1408and/or the satellite2208. For example, the dynamic routing system1408may determine the set of eligible routes.

At block2308, the satellite2208accesses historical signal strength data associated with each route from the set of eligible routes. The historical signal strength data may be associated with or correspond to a signal strength of connections between wireless devices and one or more communication networks (e.g., data and/or voice networks) with which the wireless devices may communicate. The historical signal strength data may include a measure of signal strength (e.g., wireless signal strength) along a route, an average signal strength along the route, a peak or minimum signal strength along the route, signal strength at a series of measurement points along the route, or any other type of signal strength or connection quality data. Further, for each route, there may be multiple historical signal strengths associated with different communication networks available along the route. For example, if there are three providers of cellular service along a route, there may be three sets of historical signal strength data for the route. In some cases, the previous example may produce more than three sets of historical signal strength data for the route because, for example, there may be different combinations of cellular service corresponding to wireless devices switching networks as the wireless devices travel along the route.

The historical signal strength data may be obtained from prior traversal of the route by the mobile device2202and/or by one or more other mobile devices of the same type or different type. Further, historical signal strength data may be obtained from devices that traverse a portion of the route or are within a threshold distance of a base station, cell, or other node along the route that connects wireless devices to a communication network. Moreover, historical signal strength data may include signal strength or connection quality for connections between mobile devices and non-cellular communication networks. For example, the historical signal strength data may include connections to Wi-Fi networks, satellite networks, or any other type of network that a mobile device can connect along one or more of the routes from the set of eligible routes.

In some embodiments, some or all of the operations associated with the block2308may be performed by the dynamic routing system1408. Further, some or all of the operations may be performed by a server in communication with the dynamic routing system1408and/or the satellite2208. For example, the dynamic routing system1408may access historical data from a repository of network connection data. In some embodiments, the block2308may be optional or omitted. For example, the process2300may determine routes based on currently detected signal strength data.

At block2310, the satellite2208determines signal strength along each route from the set of eligible routes. The signal strength may be determined from the historical data accessed at the block2308. Alternatively, or in addition, the signal strength may be determined from connections between wireless devices and communication or networking systems currently occurring along the route. Determining the signal strength may include determining a set of signal strengths are a series of nodes or waypoints throughout the route. Alternatively, or in addition, determining the signal strength may include determining a minimum or average signal strength along the route. Determining the signal strength along each route may include determining signal strength values for multiple different available communication networks along the route. The available communication networks may include a subset of communication networks that are supported by the wireless mobile device2202.

In some embodiments, some or all of the operations associated with the block2308may be performed by the dynamic routing system1408. Further, some or all of the operations may be performed by a server in communication with the dynamic routing system1408and/or the satellite2208.

At block2312, the satellite2208selects a route based on the signal strength along each of the eligible routes. In some cases, selecting the route may include selecting the route with the highest signal strength, the highest average signal strength, a signal strength that satisfies a minimum threshold along the entire route, the most stable connections, the shortest route, or any other route or path selection algorithm based on signal strength or signal quality. Further, in some cases, selecting the route may include selecting a particular communication network, or set of communication networks to communicate with along the route. In cases where there is a tie, or a difference between routes and/or networks is less than a threshold, other routing and/or network selection factors may be used to break the tie. For example, network stability, price, route length, a combination of the foregoing, or other factors may be used to break a tie between routes or communication networks.

In some embodiments, one or more mapping or graphing algorithms may be used to select the route. For example, a graph (or graph data structure) may be constructed with nodes or vertices corresponding to cell towers (or other waypoints) along potential routes between the current location of the wireless device2202and the target location. Each node or vertex may represent or correspond to a single base station. Alternatively, a node may represent multiple base stations. For instance, in some cases, a cell tower may be shared among different entities that own or manage communication networks. In some such cases, the cell tower may include multiple base stations with each base station associated with a different communication network of the same entity or a different entity. In cases where a location or a cell tower has multiple base stations (or other networking hardware), the node may represent one or more base stations at a particular location or on a particular cell tower. Further, the nodes may be heterogeneous. For example, some nodes may represent base stations, or may have weighted signal strengths based on nearby base stations, and other nodes may represent other networking hardware, such as routers or other wide area network communication hardware.

In some cases, the nodes may represent a point in the route that is closest to a particular cell tower or communication network hardware, but which may not be the actual location of the cell tower or communication network hardware. In other cases, the nodes may be independent of base stations or communication network hardware, but may instead be selected based on geographic traversal between two points, such as for navigational maps. For example, the nodes may represent intersections in a road network, or other travelling path that may be traversed by foot, wheels, or in the air. The construction of the nodes may depend on the type of wireless device. For example, a wheeled drone or a device carried by a user may use intersections of streets or walking paths as nodes with edges representing travel between the intersections. However, for a flying drone, the nodes may include alternative or additional waypoints, such as tress or buildings.

Regardless of what the nodes and edges represent, the graphs may include weights that facilitate the selection of a route based at least in part on the ability to communicate or the quality of communication with one or more communication networks. Each edge between nodes may have one or more weights corresponding to signal strengths for one or more communication networks supported by the cell towers. A modified shortest path algorithm may then be used to determine a route that provides the best signal strength throughout the route. The satellite2208or the dynamic routing system1408may solve the weighted graph algorithm or route selection algorithm to determine a route that provides the best signal strength, or optimizes for one or more communication network metrics. For example, a version of Djikstra's algorithm may be used to select a route.

In some cases, a score may be assigned to each edge. The score may be based on a signal strength for a communication network that is accessible by a cell tower associated with the node. Further, in some cases, the score may be based on one or more additional factors, such as network characteristics (e.g., bandwidth, cost, stability, etc.), length of the route segment, vehicle traffic, etc. In some cases, a route that provides the best signal strength may have a lower score than a route that providers less average signal strength, but is significantly shorter. In other words, in some cases, it may be preferable to have a shorter physical route of travel despite a lesser communication connection. However, in other cases, the extended travel time to maintain a minimal network connection may be preferable. For example, it may be desirable that a delivery drone maintain a threshold network connection to facilitate operation.

In some cases, selecting the route may include one or more of the processes disclosed herein for selecting a communication network, such as the process200and/or2100. In some embodiments, some or all of the operations associated with the block2308may be performed by the dynamic routing system1408. Further, some or all of the operations may be performed by a server in communication with the dynamic routing system1408and/or the satellite2208.

At block2314, the satellite2208provides the selected route to the wireless mobile device2202. The route may be provided in its entirety in one transmission (or series of data packets associated with a single transmission operation). Alternatively, or in addition, the route may be provided in segments with further segments being determined and provided as the wireless mobile device2202travels. Advantageously, by providing the route in segments, the route may be modified during travel based on changes to the target destination and/or changes in detected signal strengths of the communication network along segments of the route.

In some embodiments, signal strength between wireless devices and a base station, or other network communication hardware may change over time. For example, a base station may break or a change in the number of connections with wireless devices may occur. In some such cases, portion of the process2300may be repeated to determine an updated route for the wireless mobile device2202. For example, the block2310may be repeated to obtain new signal strength values along segments of eligible routes. The eligible routes may be different than a prior performance of the process2300because, for example, the wireless device2202may have changed positions (e.g., traveled some of the previously selected route). The satellite2208may determine an updated set of eligible routes and may select a route using the updated signal strength data. The updated or new selected route may be provided to the wireless device2202enabling a change in route to maintain a particular quality of network connection.

As described above, a satellite2208or a dynamic routing system1408may compare signal strengths for connections by a wireless device2202to two or more different networks or networking elements (e.g., routers or base stations, etc.) to determine a network to use for communication of voice or data, and/or for the determination of a route to travel. Alternatively, or in addition, the wireless device2202may compare the signal strength data to determine the network to use for communication of voice or data, and/or for the determination of the route to travel. Further, in some cases, instead of or in addition to comparing signal strength data, other factors may be compared to determine a network to select. For example, quality of service, up-time, cost, bandwidth availability, upload and/or download speed, or any other factors or network characteristics can be compared to select a network to communicate over or a route to traverse.

Example Route Determination Process

FIG. 24illustrates a flow diagram for an example one embodiment of a route determination process2400in accordance with the teachings of the present disclosure. The process2400can be performed by any system that can provide location data and/or network signal strength data to a dynamic routing system to determine a travel route to travel between locations while maintaining a minimum or threshold level of service (e.g., a minimum signal strength) with one or more communication networks. For example, one or more operations of the process2400can be performed by a wireless device1000,1100,1200,1300,2202or components thereof (such as processor806,1204, RF subsystem812, or modem1202,1302, etc.), a satellite2208, and/or a dynamic routing system1408, among other systems. As previously described, the wireless device may be a smartphone. Alternatively, or in addition, the wireless device may be any other electronic device that can communicate over a wireless network, such as a drone (e.g., a delivery drone, firefighting drone, or a camera drone), automated vehicle (e.g., self-driving car), medical device, etc. Although a number of different systems may perform some or all of the process2400, to simplify discussion, the process2400will be described with respect to particular systems.

The process2400begins at block2402when, for example, the wireless device2202determines its current location. The wireless device2202may include any type of mobile or moveable device that is either self-moving, moved in response to a command by a user, or can be carried by a user. For example, as previously described, the wireless device2202may be a smartphone, a drone, a medical device, a self-driving car, etc.

The wireless device2202may determine its location using one or more signals received from a satellite2208(or a plurality of satellites). The satellite2208may be part of a geolocation satellite system, such as GPS, used to identify a location of supported devices that include a geolocation receiver, such as a GPS receiver. In some such cases, the wireless device2202may determine its location based on a received geolocation signal from a geolocation satellite (e.g., the satellite2208).

Alternatively, or in addition, the wireless device2202may determine its location based on communication with one or more base stations, the dynamic routing system1408, or other networking hardware accessible by the wireless device2202. In some cases, the location determined at the block2402may be based on user input or a command received from a computing device (e.g., a trip scheduler or a logistics computer for scheduling deliveries, etc.). For example, a user or a computing device may provide the wireless device2202with a location (which may or may not be a current location) that represents a starting location or a waypoint for performance of the process2400. For instance, a computing system may provide the wireless device2202with a series of locations representing starting locations for one or more trips (e.g., locations to obtain items for delivery, or locations that may represent delivery locations that in turn may serve as starting locations for a next scheduled delivery). In some cases, a user may provide an address or location to the wireless device2202to serve as the current location or a starting location, which may or may not be a current location.

At block2404, the wireless device2202determines a target location. The target location may be determined based on user input, interaction by a user with a user interface element of the wireless device2202or another device in communication with the wireless device2202, or receipt of a command (e.g., via an antenna of the wireless device2022) from a computing device (e.g., a delivery scheduling computing system configured to determine delivery schedules for delivery drones). For example, the target location(s) may be one or more delivery locations for packages from a delivery drone equipped with the wireless device2202. As another example, the target location may be a location to which a user is scheduled to travel or to which the user is predicted to travel based, for example, on past travel history. In some cases, the target location may be determined based on a trajectory of travel by the wireless device2202, or a user or device that is carrying the wireless device2202.

At block2406, the wireless device2202determines a signal strength (e.g., wireless signal strength) for each of one or more communication networks that are accessible by the wireless device2202. The wireless device2202may use any of the embodiments disclosed herein to determine the signal strength for a communication network accessible by the wireless device2202. For example, the wireless device2202may determine the signal strength of a connection to a communication network based at least in part on a signal received at a diversity antenna (e.g., a diversity antenna814or1116) of the wireless device2202. The communication network may be any type of data or voice network with which the wireless device2202may be configured to communicate.

At block2408, the wireless device2202provides the current location, the target location, and the one or more signal strength measurements determined at the block2406for the one or more communication networks that are accessible by the wireless device2202to a dynamic routing system1408. Alternatively, or in addition, the location information (current and/or target location) and signal strength information may be provided to a base station or other networking hardware. The base station, or other network hardware, may provide the location information and signal strength information to the dynamic routing system1408. In some cases, the location information and/or signal strength information is provided to the satellite2208. The information may be provided to the satellite by the base station, or other networking hardware with sufficient signal strength to upload to a satellite, or by the dynamic routing system1408. In some cases, the dynamic routing system1408is part of the satellite or of a satellite communication network. In some cases, the current and/or target location information is determined by the satellite2208or other communication hardware. In some such cases, the wireless device2202may provide the signal strength measurements as part of the block2408, but the location information may be provided by another system or omitted.

At block2410, the wireless device2202receives an identification of a route between the current location and the target location from the dynamic routing system1408. The route may be determined using any process for determining a route between two points accounting for the signal strength of one or more communication networks. In some cases, the route may be determined using the process2300.

The dynamic routing system1408may include or may have access to an electronic storage system that can store received signal strength data from the wireless device2202and/or from other wireless devices. This stored signal strength data may be used to facilitate determining a route with an accessible communication network that satisfies particular conditions or criteria (e.g., minimum or average signal strength). Further, the electronic storage system may store navigation data or mapping data that facilitates selecting a route. Moreover, the navigation data may differ for different types of wireless devices. For instance, different navigation data may be available for a drone that can fly compared to a drone that cannot fly, or for a user who might walk and/or drive while carrying the wireless device.

The identification of the route may include directions for traversing the route and/or one or more waypoints between the current location and the target location. Further, the identification of the route may include an identification of a communication network with which the wireless device2202should communicate along the route. In some cases, the identification of the communication network includes an identification of a communication network for segments or portions of the route. In some cases, different communication networks may be identified for different segments or portions of the route. This may occur because at different portions of the route the communication network that provides the best connection or the best signal strength may differ. In some cases, the wireless device2202may automatically connect to the communication network identified for the portion of the route when the wireless device2202is along the portion of the route or within a particular distance of the portion of the route. In other cases, the identified communication network may be output to a user and the user may determine whether to connect to the identified communication network.

The route identified at the block2410may include a route between the current location and the target location that enables the wireless device2202to maintain a connection to the communication network with a minimum signal strength. Further, the identification of the communication networks with which to connect along the route may include communication networks with which the wireless device2202is able maintain a connection with a minimum signal strength.

In some cases, the identification of the route may depend on characteristics of the wireless device. For example, a different route may be selected or determined for a wireless device included in a flying drone versus a wireless device included in a street-bound vehicle or a vehicle that can use walking paths.

In some cases, the wireless device2202may automatically travel the selected route without input from a user. In other cases, the user may initiate the start of travel, but the wireless device2202may automatically follow the selected route without further input from the users. In yet other cases, the selected route may be presented to a user on a display, and the user may choose to follow the route, request a new route, or ignore the selected route. In cases where the user requests a new route, the user may modify weightings used to determine the route (e.g., weights used within graph). The user may directly modify the weights applied to the graph data structure. Alternatively, the user may identify a reason for selecting the new route, and the dynamic routing system1408may automatically modify the weights used in the graph based on the identified reason (e.g., request to avoid tolls or freeways, or a desire for a more scenic route, etc.).

In some implementations, the process2400is performed once for a particular trip or wireless device and the wireless device may travel along the identified route and/or connect to the identified communication network. However, in other cases, the process2400or certain operations of the process2400, may be performed multiple time, periodically, continuously, in response to a request, a detected change in location that is not part of the identified route, or for any other reason. For example, the wireless device2202may continue to provide signal strength data to the dynamic routing system1408as the wireless device2202travels the selected route. Based on the updated signal strength data, the dynamic routing system1408may modify the selected route to maintain the desired threshold signal strength as the wireless device2202travels between the current location (or updated current location as the wireless device2202may have moved in this example) and the target location. In some cases, the dynamic routing system1408may modify the route based on signal strength data obtained from other wireless devices, changes in travel itinerary for the wireless device2202, a change in traffic data along the route, or for any other criteria that may cause a change in route.

Although the processes2300and2400are described as identifying routes and communication networks based on signal strength, it should be understood that alternative or additional communication characteristics or factors may be used to identify a route and/or communication network. For example, the determination of route and/or communication network may be based on connection stability, bandwidth, cost, jitter, or quality of service, among other factors. Further, the selection of route and/or communication network may be based at least in part on non-communication network factors. For example, distance, length of time, traffic, car accidents, speed of travel, geopolitical borders, trespassing restrictions, no-fly zones, and other factors may affect the selection of routes and communication networks for the wireless device2202. For instance, although a particular route may provide for maintaining an optimal communication connection with a particular communication network, if the route crosses private property, or adds more than a particular amount of time to a route, the route may not be selected. In some cases, each characteristic used to identify a route may be weighted. For instance, trespassing restrictions and no-fly zones may be weighted more so than speed of travel or maximum signal strength. Thus, routes that provide maximum signal strength that violate trespassing restrictions may be omitted. As a non-binary example, traffic may be weighted higher than signal strength, and thus, a route with a high degree of traffic may be less likely to be selected than a route with a low degree of traffic. However, a route with a higher degree of traffic may not automatically be omitted if the signal strength along the route is significantly higher than other routes.

As previously indicated, at least certain operations of the process2400may be performed by other systems. For example, the operations associated with the blocks2402and2404may be determined by a satellite2208and/or a dynamic routing system1408. In some cases, the satellite2208may be part of a network of geolocation satellites (e.g., global positioning system (GPS) satellites) that can determine a location of the wireless device2202. Further, the dynamic routing system1408may be part of or may communicate with a base station that can determine the current location of the wireless device2202based on the base station's communicate with the wireless device2202.

Additional Embodiments

Certain aspects of the present disclosure relate to a wireless device configured to maintain communication channels over multiple data networks with each data network configured using a different communication technology or set of frequency bands. The wireless device may include: a first primary antenna configured to transmit signals of a first transmit band and receive signals of a first receive band, and to transmit signals of a second transmit band and received signals of a second transmit band; a first diversity antenna configured to receive the signals of the first receive band, and receive the signals of the second receive band; a first radio frequency subsystem in electrical communication with the first primary antenna and the first diversity antenna, the first radio frequency subsystem configured to decode the signals of the first receive band and to decode the signals of the second receive band; a second radio frequency subsystem in electrical communication with the first diversity antenna, the second radio frequency subsystem configured to decode the signals of the first receive band and to decode the signals of the second receive band; and a hardware processor in electrical communication with a first subscriber identity module, a second subscriber identity module, the first radio frequency subsystem, and the second radio frequency subsystem, wherein the first subscriber identity module is associated with a first wireless network that supports the first transmit band and the first receive band, and the second subscriber identity module is associated with a second wireless network that supports the second transmit band and the second receive band, and wherein the hardware processor is configured to control whether the first subscriber identity module or the second subscriber module uses the first radio frequency subsystem to communicate at a particular time period.

The wireless device of the preceding paragraph can include any combination or sub-combination of the following features: where the wireless device further includes a first modem connected between the first radio frequency subsystem and the hardware processor, the first modem configured to transmit a packet using the first primary antenna to the first wireless network or the second wireless network; where the first modem is configured to determine whether the packet is a voice packet or a data packet; where the wireless device further includes: a first modem connected between the first radio subsystem and the hardware processor, the first modem configured to transmit a packet using the first primary antenna to one of the first wireless network or the second wireless network; and a second modem connected to the hardware processor, the second modem configured to transmit the packet using a second primary antenna; where the second modem is integrated with a second hardware processor configured to manage communication with a third wireless network; where the hardware processor serves as a primary device and the second hardware processor serves as a secondary device in a primary/secondary communication model; where the second modem is connected to the hardware processor via an auxiliary port of the hardware processor; where the wireless device further includes a communication hub configured to connect the second modem to the hardware processor; where the communication hub connects between an external data transfer or charging port of the wireless device and a data transfer or charging port of the hardware processor; where the second radio frequency subsystem is configured to receive the signals of the first receive band or the signals of the second receive band, and wherein the second radio frequency subsystem does not transmit signals; where the wireless device further includes a tuner in electrical communication with the first radio frequency subsystem, the first tuner configured to determine whether a received signal is a signal of a first channel access method or a signal of a second channel access method; where the first channel access method comprises one of code-division multiple access, wideband code-division multiple access, or time-division multiple access, and the second channel access method comprises one of code-division multiple access, wideband code-division multiple access, or time-division multiple access; where the hardware processor is further configured to determine a first signal strength of a connection with the first wireless network and a second signal strength of a connection with the second wireless network based at least in part on the received signals of the first receive band, and the received signals of the second receive band; where the hardware processor is further configured to determine whether to communicate with the first wireless network or the second wireless network based at least in part on the first signal strength or the second signal strength; and where the first wireless network is implemented using a first communication technology and is associated with a first service provider, and the second wireless network is implemented using a second communication technology and is associated with a second service provider.

Certain additional aspects of the present disclosure relate to a method of communicating over multiple cellular networks. The method may be performed by a hardware processor of a wireless device configured to communicate with a first cellular network over a first frequency band and a second cellular network over a second frequency band. The method may include: receiving, via a first primary antenna of the wireless device, a first signal of the first frequency band from the first cellular network, wherein the first cellular network is associated with a first subscriber identity module of the wireless device and the second cellular network is associated with a second subscriber identity module of the wireless device, and wherein the first subscriber identity module is designated for transmission of data packets; receiving, via a first diversity antenna of the wireless device, a second signal of the second frequency band from the second cellular network; determining a first signal strength associated with the first cellular network based at least in part on the first signal; determining a second signal strength associated with the second cellular network based at least in part on the second signal; determining that the second signal strength exceeds the first signal strength; and transmitting first data packets via the first primary antenna to a target system over the second cellular network by designating the second subscriber identity module as the active subscriber identity module for transmitting the first data packets and designating the first subscriber identity module as not for transmitting the first data packets.

The method of the preceding paragraph can include any combination or sub-combination of the following features: where the first signal and the second signal are received during a first time period; where the method further includes: receiving, at a second time period, a third signal of the first frequency band from the first cellular network; receiving, at the second time period, a fourth signal of the second frequency band from the second cellular network; determining a third signal strength associated with the first cellular network based at least in part on the third signal; determining a fourth signal strength associated with the second cellular network based at least in part on the fourth signal; determining that the third signal strength exceeds the fourth signal strength; and transmitting second data packets via the first primary antenna to the target system over the first cellular network by designating the first subscriber identity module as the active subscriber identity module for transmitting the second data packets and designating the second subscriber identity module as not for transmitting the second data packets; where the first data packets are associated with non-voice data, and where the method further includes: obtaining second data packets from an application; determining that the second data packets comprise voice data associated with a call to a destination wireless device; and transmitting the second data packets over the first cellular network associated with the first subscriber identity module while continuing to transmit data packets associated with non-voice data over the second cellular network; and where the method further includes: receiving via a second primary antenna of the wireless device, a third signal of a third frequency band associated with a third cellular network; determining a third signal strength associated with the third cellular network based at least in part on the third signal; determining that the third signal strength exceeds the second signal strength; transmitting second data packets associated with a first priority over the third cellular network; and transmitting the first data packets over the second cellular network, wherein the first data packets are associated with a second priority that is lower than the first priority.

Yet certain additional aspects of the present disclosure relate to a method for dynamically routing calls on a first network implementing a first network protocol to a second network implementing a second network protocol. The method may include: receiving a call request generated by a user device via a first network of a first communications network provider; determining that the first user device supports a first network protocol and a second network protocol; determining a first measurement of a network characteristic for the first network associated with the first communications network provider, wherein the first network implements the first network protocol; identifying a second network associated with a second communications network provider, wherein the second network implements the second network protocol; determining a second measurement of the network characteristic for the second network associated with the second communications network provider; determining that the second measurement exceeds the first measurement by a threshold amount; and routing the call to the second network associated with the second communications network provider using the second network protocol based at least in part on the determination that the second measurement exceeds the first measurement by the threshold amount.

The method of the preceding paragraph can include any combination or sub-combination of the following features: where the first network protocol is a Global System for Mobile Communications (GSM) protocol and the second network protocol is a Code-Division Multiple Access (CDMA) protocol; where the first network protocol is associated with a first SIM card and the second network protocol is associated with a second SIM card; where routing the call to the second network comprises providing the user device with a command to complete the call using the second network; where the network characteristic, includes at least one of: jitter, latency, packet loss, an answer/seizure ratio, a call clarity rating, a dropped call rate, a network effectiveness ratio, or a post dial delay; where the network characteristic comprises a signal strength, and wherein the first measurement comprises a first signal strength between the user device and the first network, and the second measurement comprises a second signal strength between the user device and the second network; where the network characteristic comprises a signal strength, and wherein the first measurement comprises a first signal strength between a call destination device and the first network, and the second measurement comprises a second signal strength between the call destination device and the second network; where the method further includes identifying a geolocation of the user device; determining that the user device is within a particular coverage area for the second network; and routing the call to the second network based at least in part on the determination that the user device is within the particular coverage area; where the method further includes assessing historical data for the user device; generating a call profile for the user device based at least in part on the historical data, wherein the call profile indicates a probability that calls satisfying one or more criteria are completed using a particular network; and routing the call to the second network based at least in part on the call profile; where the one or more criteria comprises one or more of a location of the user device, a location of a user being called by the user device, a time of day, a particular user being called by the user device, a destination network used by a device of the particular user, or a destination network provider of the destination network; and where determining the first measurement and the second measurement of the network characteristic comprises: transmitting a request to the user device for the network characteristic; and receiving the first measurement of the network characteristic with respect to the first network and the second measurement of the network characteristic with respect to the second network from the user device.

Certain aspects of the present disclosure relate to a wireless device configured to maintain communication channels over multiple data networks with each data network configured using a different communication technology or set of frequency bands. The wireless device may include: a first primary antenna configured to transmit signals of a first transmit band and receive signals of a first receive band, and to transmit signals of a second transmit band and received signals of a second transmit band; a first diversity antenna configured to receive the signals of the first receive band, and receive the signals of the second receive band; a first radio frequency subsystem in electrical communication with the first primary antenna and the first diversity antenna, the first radio frequency subsystem configured to decode the signals of the first receive band and to decode the signals of the second receive band; a second radio frequency subsystem in electrical communication with the first diversity antenna, the second radio frequency subsystem configured to decode the signals of the first receive band and to decode the signals of the second receive band; and a hardware processor in electrical communication with a first subscriber identity module, a second subscriber identity module, the first radio frequency subsystem, and the second radio frequency subsystem, wherein the first subscriber identity module is associated with a first wireless network that supports the first transmit band and the first receive band, and the second subscriber identity module is associated with a second wireless network that supports the second transmit band and the second receive band, and wherein the hardware processor is configured to control whether the first subscriber identity module or the second subscriber module uses the first radio frequency subsystem to communicate at a particular time period.

The wireless device of the preceding paragraph can include any combination or sub-combination of the following features: where the wireless device further includes a first modem connected between the first radio frequency subsystem and the hardware processor, the first modem configured to transmit a packet using the first primary antenna to the first wireless network or the second wireless network; where the first modem is configured to determine whether the packet is a voice packet or a data packet; where the wireless device further includes: a first modem connected between the first radio subsystem and the hardware processor, the first modem configured to transmit a packet using the first primary antenna to one of the first wireless network or the second wireless network; and a second modem connected to the hardware processor, the second modem configured to transmit the packet using a second primary antenna; where the second modem is integrated with a second hardware processor configured to manage communication with a third wireless network; where the hardware processor serves as a primary device and the second hardware processor serves as a secondary device in a primary/secondary communication model; where the second modem is connected to the hardware processor via an auxiliary port of the hardware processor; where the wireless device further includes a communication hub configured to connect the second modem to the hardware processor; where the communication hub connects between an external data transfer or charging port of the wireless device and a data transfer or charging port of the hardware processor; where the second radio frequency subsystem is configured to receive the signals of the first receive band or the signals of the second receive band, and wherein the second radio frequency subsystem does not transmit signals; where the wireless device further includes a tuner in electrical communication with the first radio frequency subsystem, the first tuner configured to determine whether a received signal is a signal of a first channel access method or a signal of a second channel access method; where the first channel access method comprises one of code-division multiple access, wideband code-division multiple access, or time-division multiple access, and the second channel access method comprises one of code-division multiple access, wideband code-division multiple access, or time-division multiple access; where the hardware processor is further configured to determine a first signal strength of a connection with the first wireless network and a second signal strength of a connection with the second wireless network based at least in part on the received signals of the first receive band, and the received signals of the second receive band; where the hardware processor is further configured to determine whether to communicate with the first wireless network or the second wireless network based at least in part on the first signal strength or the second signal strength; and where the first wireless network is implemented using a first communication technology and is associated with a first service provider, and the second wireless network is implemented using a second communication technology and is associated with a second service provider.

Certain aspects of the present disclosure relate to a wireless device configured to maintain communication channels over multiple data networks with each data network configured using a different communication technology or set of frequency bands. The wireless device may include: a first primary antenna configured to transmit signals of a first transmit band and receive signals of a first receive band, and to transmit signals of a second transmit band and received signals of a second transmit band; a first diversity antenna configured to receive the signals of the first receive band, and receive the signals of the second receive band; a first radio frequency subsystem in electrical communication with the first primary antenna and the first diversity antenna, the first radio frequency subsystem configured to decode the signals of the first receive band and to decode the signals of the second receive band; a second radio frequency subsystem in electrical communication with the first diversity antenna, the second radio frequency subsystem configured to decode the signals of the first receive band and to decode the signals of the second receive band; and a hardware processor in electrical communication with a first subscriber identity module, a second subscriber identity module, the first radio frequency subsystem, and the second radio frequency subsystem, wherein the first subscriber identity module is associated with a first wireless network that supports the first transmit band and the first receive band, and the second subscriber identity module is associated with a second wireless network that supports the second transmit band and the second receive band, wherein the hardware processor is configured to control whether the first subscriber identity module or the second subscriber module uses the first radio frequency subsystem to communicate at a particular time period, and wherein the hardware processor causes output of a shadow number when establishing a call over the first wireless network using the first subscriber identity module or when establishing the call over the second wireless network using the second subscriber identity module, and wherein the shadow number substitutes at least for a first number associated with the first subscriber identity module and for a second number associated with the second subscriber identity module.

The wireless device of the preceding paragraph can include any combination or sub-combination of the following features: where the wireless device further includes a first modem connected between the first radio frequency subsystem and the hardware processor, the first modem configured to transmit a packet using the first primary antenna to the first wireless network or the second wireless network; where the first modem is configured to determine whether the packet is a voice packet or a data packet; where the wireless device further includes: a first modem connected between the first radio subsystem and the hardware processor, the first modem configured to transmit a packet using the first primary antenna to one of the first wireless network or the second wireless network; and a second modem connected to the hardware processor, the second modem configured to transmit the packet using a second primary antenna; where the second modem is integrated with a second hardware processor configured to manage communication with a third wireless network; where the hardware processor serves as a primary device and the second hardware processor serves as a secondary device in a primary/secondary communication model; where the second modem is connected to the hardware processor via an auxiliary port of the hardware processor; where the wireless device further includes a communication hub configured to connect the second modem to the hardware processor; where the communication hub connects between an external data transfer or charging port of the wireless device and a data transfer or charging port of the hardware processor; where the second radio frequency subsystem is configured to receive the signals of the first receive band or the signals of the second receive band, and wherein the second radio frequency subsystem does not transmit signals; where the wireless device further includes a tuner in electrical communication with the first radio frequency subsystem, the first tuner configured to determine whether a received signal is a signal of a first channel access method or a signal of a second channel access method; where the first channel access method comprises one of code-division multiple access, wideband code-division multiple access, or time-division multiple access, and the second channel access method comprises one of code-division multiple access, wideband code-division multiple access, or time-division multiple access; where the hardware processor is further configured to determine a first signal strength of a connection with the first wireless network and a second signal strength of a connection with the second wireless network based at least in part on the received signals of the first receive band, and the received signals of the second receive band; where the hardware processor is further configured to determine whether to communicate with the first wireless network or the second wireless network based at least in part on the first signal strength or the second signal strength; and where the first wireless network is implemented using a first communication technology and is associated with a first service provider, and the second wireless network is implemented using a second communication technology and is associated with a second service provider.

Certain aspects of the present disclosure relate to a method of communicating over multiple cellular networks. The method may be performed by a hardware processor of a wireless device configured to communicate with a first cellular network over a first frequency band and a second cellular network over a second frequency band. The method may include: receiving, via a first primary antenna of the wireless device, a first signal of the first frequency band from the first cellular network, wherein the first cellular network is associated with a first subscriber identity module of the wireless device and the second cellular network is associated with a second subscriber identity module of the wireless device, and wherein the first subscriber identity module is designated for transmission of data packets; receiving, via a first diversity antenna of the wireless device, a second signal of the second frequency band from the second cellular network; determining a first signal strength associated with the first cellular network based at least in part on the first signal; determining a second signal strength associated with the second cellular network based at least in part on the second signal; determining that the second signal strength exceeds the first signal strength; and transmitting first data packets via the first primary antenna to a target system over the second cellular network by designating the second subscriber identity module as the active subscriber identity module for transmitting the first data packets and designating the first subscriber identity module as not for transmitting the first data packets, wherein the first data packets identify the origin of the first data packets as being associated with a shadow number that substitutes at least for a first number associated with the first subscriber identity module and for a second number associated with the second subscriber identity module.

The method of the preceding paragraph can include any combination or sub-combination of the following features: where the first signal and the second signal are received during a first time period; where the method further includes: receiving, at a second time period, a third signal of the first frequency band from the first cellular network; receiving, at the second time period, a fourth signal of the second frequency band from the second cellular network; determining a third signal strength associated with the first cellular network based at least in part on the third signal; determining a fourth signal strength associated with the second cellular network based at least in part on the fourth signal; determining that the third signal strength exceeds the fourth signal strength; and transmitting second data packets via the first primary antenna to the target system over the first cellular network by designating the first subscriber identity module as the active subscriber identity module for transmitting the second data packets and designating the second subscriber identity module as not for transmitting the second data packets; where the first data packets are associated with non-voice data, and wherein the method further comprises: obtaining second data packets from an application; determining that the second data packets comprise voice data associated with a call to a destination wireless device; and transmitting the second data packets over the first cellular network associated with the first subscriber identity module while continuing to transmit data packets associated with non-voice data over the second cellular network; and where the method further includes receiving via a second primary antenna of the wireless device, a third signal of a third frequency band associated with a third cellular network; determining a third signal strength associated with the third cellular network based at least in part on the third signal; determining that the third signal strength exceeds the second signal strength; transmitting second data packets associated with a first priority over the third cellular network; and transmitting the first data packets over the second cellular network, wherein the first data packets are associated with a second priority that is lower than the first priority.

Certain aspects of the present disclosure relate to a dynamic routing system. The dynamic routing system may include a memory configured to store computer-executable instructions and a hardware processor in communication with the memory and configured to execute the specific computer-executable instructions to at least: receive a packet associated with a call from a wireless device associated with an origin caller; identify an origin number associated with the call from the packet; determine that the origin number is associated with a shadow number of the origin caller; determine a plurality of phone numbers associated with the shadow number; identify a plurality of call carriers, wherein each call carrier of the plurality of call carriers is associated with a different number of the plurality of phone numbers; select a call carrier from the plurality of call carriers based at least in part on one or more routing parameters; and route the packet over a network of the selected call carrier while maintaining the shadow number at the origin number for display at a device associated with a destination target of the packet. The dynamic routing system can be a gateway configured to route calls between carrier networks and/or between an origin and destination caller.

The dynamic routing system of the preceding paragraph can include any combination or sub-combination of the following features: where the packet is one of a data packet or a voice packet; where the device is further configured to execute the specific computer-executable instructions to at least: determine a destination number for the packet, the destination number associated with the destination target of the packet; determine that the destination number is associated with a second shadow number, wherein the shadow number is associated with the origin caller and the second shadow number is associated with a target user associated with the destination target; substitute the destination number with the second shadow number; and route the packet over the network of the selected call carrier using the second shadow number in place of the destination number.

OTHER IMPLEMENTATION DETAILS

A number of embodiments have been described herein. It should be understood that where described embodiments are not mutually exclusive, each of the embodiments described herein can be combined with one or more of the other embodiments described herein. Any structure, material, function, method, or step illustrated or described in connection with any embodiment in the specification can be used instead of or in combination with any other structure, material, function, method, or step illustrated or described in connection with any other embodiment in the specification. Furthermore, no features, steps, structures, or methods disclosed in the specification are essential or indispensable.

The various illustrative logical blocks, modules, and algorithm steps described in connection with the embodiments disclosed herein can be implemented as application-specific electronic hardware, computer software executed by computer hardware, or a combination of both. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. For example, the dynamic routing system108can be implemented by one or more computer systems or by a computer system including one or more processors. Moreover, the described functionality can be implemented in varying ways for each particular application of the systems described herein, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure.