Abstract:
System and method for diagnosing the state of a device connected to one or more computer networks. The method can include gathering and analyzing a status and configuration of every computer network interface available on a device, gathering and analyzing the network configuration information on a device, and, if available, gathering of GPS configurations, status, and data. The method can also include testing of network connectivity for the device using a preset server as a control and the testing of network connectivity for the device to arbitrary networked resources.

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
       [0001]    The present application is a Non-provisional application claiming the benefit under 35 U.S.C. §119(e) of U.S. Provisional Application No. 62/020,693 filed Jul. 3, 2014, the disclosure of which is expressly incorporated by reference herein in its entirety. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    A system and method for diagnosing, reporting, aggregating, and analyzing the connectivity and potential issues occurring in a multi-device network. 
         [0004]    2. Discussion of Background Information 
         [0005]    In a modern system of networked devices, especially in networks utilizing wireless communication, multiple issues can hamper optimal functioning. The typical user of a device is only aware of the system&#39;s degradation or malfunction and is not equipped to analyze or remediate issues. 
         [0006]    The administrator of a modern networked system, who is equipped to analyze and remediate issues, is rarely present when users are affected. This problem is compounded in multi-device systems where administrators are vastly outnumbered by end-users. In addition, system degradations and malfunctions can be subtle and intermittent, which can result in prolonged and often unsuccessful analysis. 
       SUMMARY OF THE EMBODIMENTS 
       [0007]    In the course of development, it was determined that many of the aims could be accomplished by creating a system and method based around running diagnostic tests on the networked devices instead of collecting vast amounts of arbitrary data. In addition, the scope of the diagnostic tests could be controlled, which enabled a much more tractable analysis and one squarely within the expertise of the development team. 
         [0008]    Embodiments are directed to a system and method that include the execution of a series of known and customized tests on a networked device; the initiation of said tests by the device&#39;s user or automatically due to conditions on the device; the initial analysis of the results by the device; the retention and transmittal of the results and associated analysis to a server; retention, aggregation, and display on the server; aggregate analysis, possibly using device locations, of multiple results by the server; and display and notifications of findings. 
         [0009]    According to embodiments, a system and method is producing “probable root cause” and a “most pertinent issue” from an analysis for each test run. In embodiments, via a centralization of the results to a server, results can be manipulatable at the server to discover emergent issues and trends. 
         [0010]    Embodiments of the present invention are directed to a system and method for automatic or user-initiated execution of a series of tests whose results are analyzed by the affected device, summarized for the device&#39;s user, and sent to a server for further analysis by the system&#39;s administrator. The server can also perform aggregate analysis of multiple device results and notify the administrator of emergent or significant issues. 
         [0011]    The end user of today&#39;s sophisticated networks, especially wireless networks, is typically only able to troubleshoot a small number of issues and does not normally embody the knowhow necessary to get at the more esoteric and intermittent problems that can occur during normal usage. The present invention provides a simple interface to the end user, e.g., a single button, which can be pressed to initiate diagnosis and analysis of their devices current conditions. The device presents its findings at three levels of increasing complexity. First, the device can call out a “probable root cause” and provides a straightforward description. Second, the device can summarize the results for each test run. Finally, the device can provide test run details. These results may be structured in embodiments to facilitate perusing and analysis of the results in order to find the needed details. 
         [0012]    Embodiments are directed to text input the end user can use to add information about the context of the report or the reason the report was initiated. This text is embedded in an associated report and is available to network administrators and support contacts. This text is arbitrary and can form the basis for company policies to capture other information such as what applications were in use, what work assignments were being pursued and/or what device actions were being attempted before the diagnostic tests were initiated. 
         [0013]    As administrators of the network, especially in a mobile wireless network, are rarely present when an end user encounters problems, embodiments are directed to a system and method that provide a thorough examination of a device&#39;s condition at the time the problem manifest and is therefore much more likely to capture pertinent data than any troubleshooting done after. This immediacy is often important when troubleshooting issues that are intermittent. 
         [0014]    Since it is common for a support contact to be provided to the end user, embodiments are directed to a system and method that enables end users to receive help remotely, including over the phone, by presenting the results in increasing complexity. The end user can simply read the “probable root cause” to the support contact. The support contact then guides the end user through the present invention&#39;s report, asking the end user to read the details pertinent to the issue. The support person thus gains the details necessary to troubleshoot even when the issues are so severe that the device has no network connection. 
         [0015]    In embodiments in which the device has connectivity, the report is sent to the server, where it is processed and available for presentation in short order, e.g., in under five minutes. A support contact helping an end user under these conditions will have access to a depth of pertinent information about the end user&#39;s device and the device&#39;s network conditions, often within a time frame that allows for help while the end user is still experiencing the issue. The support contact can export the report to other tools, such as a text editor, to allow for easy searching and capturing of the data they find important. 
         [0016]    Many networked devices and their resident applications take advantage of the availability of multiple networks. This is especially true in a mobile situation where the networked device can connect with multiple cellular networks (GSM and CDMA) as well as potentially dozens of Wi-Fi access points in a given location. The present invention incorporates these possibilities into its tests in support of this modern situation. For example, a support contact will see, in the details of a report, which available network is in use and can determine if it is appropriate or potentially an issue. 
         [0017]    In embodiments, all reports are aggregated to or in a server, which allows the network administrator access to the details of all the reports generated within their system. According to embodiments, the network administrator can filter and sort all reports based on many factors including, e.g., time, device type, wireless network used, phone number, issue severity, and probable root cause. This allows a network administer to focus on emergent and severe issues. For example, a network administrator could see that several devices are reporting a certain network resource (such as a file sharing system) is unreachable. The network administrator can then address the problem even before any of the end users call to report it. 
         [0018]    Almost every organization that requires network connectivity has one or more networked services they depend upon. A healthcare company may need access to a file sharing server. Police may need access to a dispatch system for auxiliary data. A sales team may need to access an inventory system. Embodiments provides for the defining of custom tests for the purpose of diagnosing issues with networked resources. This customization is set up by the network administrator and allows the troubleshooting of an issue down to the resources a particular organization relies upon. 
         [0019]    Not every end user has time to initiate a diagnostic test. For instance, a baggage handler at a busy airport does not have time to interact with anything except the applications necessary to get the job done. To help in this circumstance, embodiments are directed to a system and method that allows for the defining of conditions under which diagnostic tests will be automatically executed and a report generated and sent to the server. For example, a network administrator can set the present invention to initiate a diagnostic test when the device reports itself unable to connect for a certain period of time. 
         [0020]    Embodiments are directed to a method for diagnosing the state of a device connected to one or more computer networks. The method can include gathering and analyzing a status and configuration of every computer network interface available on a device, gathering and analyzing the network configuration information on a device, and, if available, gathering of GPS configurations, status, and data. The method can also include testing of network connectivity for the device using a preset server as a control. 
         [0021]    In accordance with embodiments, the method can further include executing one or more customized network connectivity tests and testing of network connectivity for the device to arbitrary networked resources. 
         [0022]    According to embodiments, the data collected in gathering and analyzing the network configuration information on the device includes determining the default interface. 
         [0023]    In other embodiments, the data collected in gathering and analyzing the network configuration information on the device includes determining a default interface for an active VPN. For supported VPNs, this test will fail if the VPN is utilizing an interface whose test failed. The test will produce a warning if the VPN is disconnected or whose interface test produced a warning or if the VPN is utilizing an interface that is slower than another available interface. 
         [0024]    According to still other embodiments, the data collected in gathering and analyzing the status and configuration of every computer network interface available on the device includes a list of all computer network interfaces available and their most important settings, which include: The interface&#39;s human-readable interface name; the interface&#39;s network address (IP address); the interface&#39;s internal reference code or index; the interface&#39;s technology type; and/or the interface&#39;s current signal strength (for wireless networks); 
         [0025]    In embodiments, if an issue is found, the method can further include using the data collected to determine the most likely root cause of the issue. The tests are ordered such that the most likely root cause will be the first most penitent issue found among all the tests. In case of multiple tests not passing, the pertinent issue of the first failed test will be considered the likely root cause, otherwise it will be the pertinent issue of the first test returning a warning (detection of an abnormality that does not break connectivity). 
         [0026]    According to embodiments, if an issue is found, the data collected in the gathering and analyzing a status and configuration of every computer network interface available on the device, and gathering and analyzing the network configuration information on the device is used in summarizing a most pertinent issue. For all interfaces, this test will fail if no interfaces are found; if no interfaces have a valid network address (IP address), if no interfaces have a default gateway; if no interface can be found with both a valid network address and default gateway; or if the interface currently in use failed its test. For WWAN (cellular) networks the test will fail if the network interface is disconnected or is otherwise in an unknown state; if no service is available over the WWAN network interface, or if no signal is detected over the WWAN network interface. This test will produce a warning if the WWAN network interface is connected over an older cellular technology (2G or worse) or if the WWAN network signal is very weak. Because WWAN network interfaces are generally optional, this test will pass if no WWAN network interface is detected. For WiFI networks, this test will fail if no WiFi adapter is detected. It will produce a warning if the WiFi signal quality is weak. 
         [0027]    In accordance with still other embodiments, if an issue is found, the data collected in the testing of network connectivity for the device using a preset server as a control is used in summarizing a most pertinent issue. 
         [0028]    In still other embodiments, if an issue is found for a particular test, the data collected in the executing one or more customized network connectivity tests is used to summarize the most pertinent issue. 
         [0029]    In accordance with still other embodiments, the data collected in the gathering and analyzing a status and configuration of every computer network interface available on the device contains detailed information on all computer network interfaces available, which may include: 
         [0030]    a. the interface&#39;s status encompassing readiness; 
         [0031]    b. the interface&#39;s human-readable interface name; 
         [0032]    c. the interface&#39;s network address (IP address); 
         [0033]    d. the interface&#39;s network scope (mask); 
         [0034]    e. the interface&#39;s external contact address (gateway); 
         [0035]    f. the interface&#39;s internal reference code or index; 
         [0036]    g. the interface&#39;s technology type; 
         [0037]    h. the interface&#39;s current signal strength (for wireless networks); 
         [0038]    i. the interface&#39;s DHCP settings; 
         [0039]    j. if/when appropriate, the interface&#39;s Wi-Fi state; 
         [0040]    k. if/when appropriate, the interface&#39;s Wi-Fi radio count; 
         [0041]    l. if/when appropriate, the interface&#39;s Wi-Fi radio state for each radio; 
         [0042]    m. if/when appropriate, the interface&#39;s Wi-Fi profile; 
         [0043]    n. if/when appropriate, the interface&#39;s Wi-Fi connect mode; 
         [0044]    o. if/when appropriate, the interface&#39;s Wi-Fi BSSID; 
         [0045]    p. if/when appropriate, the interface&#39;s Wi-Fi SSID; 
         [0046]    q. if/when appropriate, the interface&#39;s Wi-Fi type; 
         [0047]    r. if/when appropriate, the interface&#39;s Wi-Fi RSSI; 
         [0048]    s. if/when appropriate, the interface&#39;s Wi-Fi reception rate; 
         [0049]    t. if/when appropriate, the interface&#39;s Wi-Fi transmission rate; 
         [0050]    u. if/when appropriate, the interface&#39;s Wi-Fi security status; 
         [0051]    v. if/when appropriate, the interface&#39;s Wi-Fi technology generation; 
         [0052]    w. if/when appropriate, the interface&#39;s Wi-Fi physical index; 
         [0053]    x. the interface&#39;s physical status; 
         [0054]    y. the interface&#39;s administrative status; 
         [0055]    z. the interface&#39;s hardware address (MAC); 
         [0056]    aa. the interface&#39;s permanent hardware address (permanent MAC); 
         [0057]    bb. the interface&#39;s NDIS type; 
         [0058]    cc. the interface&#39;s transmit link speed; 
         [0059]    dd. the interface&#39;s receive link speed; 
         [0060]    ee. the interface&#39;s count of incoming data octets; 
         [0061]    ff. the interface&#39;s count of incoming unicast packets; 
         [0062]    gg. the interface&#39;s count of incoming multicast packets; 
         [0063]    hh. the interface&#39;s count of incoming discarded packets; 
         [0064]    ii. the interface&#39;s count of errors processing incoming packets; 
         [0065]    jj. the interface&#39;s count of incoming unknown protocol requests; 
         [0066]    kk. the interface&#39;s count of incoming unicast data octets; 
         [0067]    ll. the interface&#39;s count of incoming multicast data octets; 
         [0068]    mm. the interface&#39;s count of incoming broadcast octets; 
         [0069]    nn. the interface&#39;s count of outgoing data octets; 
         [0070]    oo. the interface&#39;s count of outgoing unicast packets; 
         [0071]    pp. the interface&#39;s count of outgoing multicast packets; 
         [0072]    qq. the interface&#39;s count of outgoing discarded packets; 
         [0073]    rr. the interface&#39;s count of errors processing outgoing packets; 
         [0074]    ss. the interface&#39;s count of outgoing unicast data octets; 
         [0075]    tt. the interface&#39;s count of outgoing multicast data octets; 
         [0076]    uu. the interface&#39;s count of outgoing broadcast octets; 
         [0077]    vv. if/when appropriate, all Wi-Fi networks detected by this interface, which can include the security state, signal strength, and availability of each; 
         [0078]    ww. All manufacturer hardware ID&#39;s associated with the interface; 
         [0079]    xx. if/when appropriate, the WWAN (cellular) manufacturer; 
         [0080]    yy. if/when appropriate, the WWAN (cellular) model; 
         [0081]    zz. if/when appropriate, the WWAN (cellular) hardware version; 
         [0082]    aaa. if/when appropriate, the WWAN (cellular) firmware version; 
         [0083]    bbb. if/when appropriate, the WWAN (cellular) phone number; 
         [0084]    ccc. if/when appropriate, the WWAN (cellular) connection status; 
         [0085]    ddd. if/when appropriate, the WWAN (cellular) technology; 
         [0086]    eee. if/when appropriate, the WWAN (cellular) signal strength; 
         [0087]    fff. if/when appropriate, the WWAN (cellular) operational status; 
         [0088]    ggg. if/when appropriate, the WWAN (cellular) administrative status; 
         [0089]    According to embodiments, the data collected in the gathering and analyzing the network configuration information on the device includes the current network routine table, which, for each route defined, can include: 
         [0090]    a. the route&#39;s destination address (IP address); 
         [0091]    b. the route&#39;s network scope (mask); 
         [0092]    c. the route&#39;s external contact address (next hop); 
         [0093]    d. the interface internal code or index for the interface associated with the route; 
         [0094]    e. the route&#39;s age; 
         [0095]    f. the route&#39;s policy; 
         [0096]    g. the route&#39;s protocol; 
         [0097]    h. the route&#39;s type; 
         [0098]    In accordance with other embodiments, the data collected in the gathering of GPS configurations, status, and data can include: 
         [0099]    a. the GPS availability status; 
         [0100]    b. the GPS port name on the device; 
         [0101]    c. the GPS human-readable name; 
         [0102]    d. the GPS manufacturer; 
         [0103]    e. the GPS model; 
         [0104]    f. the GPS communications speed; 
         [0105]    g. the GPS fix status; 
         [0106]    h. the GPS time of most recent fix; 
         [0107]    i. the GPS latitude and longitude; 
         [0108]    j. the GPS HDOP or accuracy in meters; 
         [0109]    k. if/when appropriate, providing a sample of the GPS&#39; recent NMEA data stream; 
         [0110]    According to other embodiments, the data collected in the testing of network connectivity for the device using the preset server as a control may include detecting a captive portal (or Wi-Fi hotspot). Results of this detection may include: 
         [0111]    a. if/when no issues are detected, collecting a summary indicating that communication is not blocked by a captive portal; 
         [0112]    b. if/when issues are detected, collecting a summary of the most pertinent issue; 
         [0113]    c. collecting the URL of the Internet test server; 
         [0114]    d. collecting the network address (IP address) of the internet test server; 
         [0115]    e. collecting the actual network address (IP address) received through DNS; 
         [0116]    f. collecting the HTTP return code; 
         [0117]    g. collecting a sample of HTTP headers returned; 
         [0118]    h. collecting the first 512 bytes of data returned; 
         [0000]    This test will fail if data was returned but the expected text is missing. This test will note if the data could not be loaded as this situation makes the test result indeterminate. 
         [0119]    In embodiments, the data collected in the testing of network connectivity for the device using the preset server as the control includes determining the existence and status of a VPN (if supported). Results of this determination can include: 
         [0120]    a. whether a supported VPN exists on the device; 
         [0121]    b. if/when appropriate, producing a summary indicating that communication over the VPN is working; 
         [0122]    c. if/when appropriate, producing a summary of the most pertinent issue; 
         [0123]    d. if/when appropriate, collecting the connection status of the VPN; 
         [0124]    e. if/when appropriate, determining whether the VPN is in use; 
         [0125]    f. if/when appropriate, collecting the user ID associated with the current VPN connection. 
         [0126]    This test will fail if the supported VPN is disabled or if the VPN is unable to communicate with its servers. This test will issue a warning if the supported VPN is not loaded, is disconnected, or is idle despite the traffic of the test. 
         [0127]    In accordance with embodiments, the data collected in the testing of network connectivity for the device using the preset server as the control includes an Internet connectivity test using an Internet test server as a control. Results may include: 
         [0128]    a. if/when issues are detected, producing a summary of the most pertinent issue; 
         [0129]    b. collecting the results of resolving the host name for the Internet test server; 
         [0130]    c. collecting the results of a single ICMP ping of the Internet test server; 
         [0131]    d. collecting the results of a page load (HTML Get) from the Internet test server; 
         [0132]    e. collecting the configuration for a full ping test of the Internet test server including the Internet test server&#39;s network address (IP address), target ping count, overall test timeout setting, and single ICPM ping timeout setting; 
         [0133]    f. collecting results from each of the individual ICMP pings attempted; 
         [0134]    g. collecting a summary of the ping test results, which can include name resolution result, number of pings actually attempted, number actually received, the minimum round trip time, the maximum round trip time, and the average round trip time; 
         [0135]    h. if/when the ping test fails, collecting the configuration for a trace route check, which can include the target host, the number of ICMP pings per route hop, the maximum number of route hops to trace, single ICMP ping timeout setting, and overall test timeout setting; 
         [0136]    i. if/when the ping test fails, collecting the results of each hop check executed by the trace route check, which can include the hop number, the round trip time for each of the ICMP pings performed, and the name (or IP address) of the responding machine. 
         [0000]    The page load test will fail if resolving the test server name failed; if the test server is unreachable; or if the test server returned an error. The ping test will fail if no ICMP pings succeeded. The ping test will issue a warning if more than one ICMP ping failed or if the average round trip time was greater than one second. 
         [0137]    Further, the data collected in the executing of one or more customized network connectivity tests may include collecting one or more copies of the data collected above, but the test(s) target server(s) are configured by a server administrator instead of the Internet test server. 
         [0138]    Still further, the data collected in the executing of one or more customized network connectivity tests may include collecting one or more copies of the data collected in the: 
         [0139]    b. collecting of the results of resolving the host name for the Internet test server; 
         [0140]    c. collecting the results of a single ICMP ping of the Internet test server; and 
         [0141]    d. collecting the results of a page load (HTML Get) from the Internet test server, but the test(s) target server(s) are configured by a server administrator instead of using the Internet test server. 
         [0142]    The data collected in the executing of one or more customized network connectivity tests may include collecting one or more copies of the data collected in the: 
         [0143]    e. collecting of the configuration for a full ping test of the Internet test server including the Internet test server&#39;s network address (IP address), target ping count, overall test timeout setting, and single ICPM ping timeout setting; 
         [0144]    f. collecting of results from each of the individual ICMP pings attempted; and 
         [0145]    g. collecting of a summary of the ping test results, which can include name resolution result, number of pings actually attempted, number actually received, minimum round trip time, the maximum round trip time, and the average round trip time, 
         [0000]    but the test(s) target server(s) are configured by a server administrator instead of using the Internet test server. 
         [0146]    Moreover, the data collected in the executing of one or more customized network connectivity tests may include collecting one or more copies of the data collected in the 
         [0147]    h. collecting the configuration for a trace route check, if/when the ping test fails, which can include the target host, the number of ICMP pings per route hop, the maximum number of route hops to trace, single ICMP ping timeout setting, and overall test timeout setting; and 
         [0148]    i. collecting the results of each hop check executed by the trace route check, if/when the ping test fails, which can include the hop number, the round trip time for each of the ICMP pings performed, and the name (or IP address) of the responding machine, 
         [0000]    but the test(s) target server(s) are configured by a server administrator instead of using the Internet test server. 
         [0149]    According to further embodiments, the data collected in the executing of one or more customized network connectivity tests may include collecting one or more copies of the data by performing a TCP/IP bind to one or more port and server combinations configured by a server administrator. Results can include: 
         [0150]    a. if/when issues are detected, collecting a summary of the most pertinent issue; 
         [0151]    b. collecting the name of the configured server; 
         [0152]    c. collecting the port configured; 
         [0153]    d. collecting the network address (IP address) of the configured server; 
         [0154]    e. collecting the local socket selected for the bind, which includes the device&#39;s network address (IP address) and local port 
         [0000]    The TCP/IP bind test will fail if either the binding of the port, or the attempt to connect, fail. 
         [0155]    According to other embodiments, the data collected in the executing of one or more customized network connectivity tests may include collecting one or more copies of the data by performing a name resolution test on one or more server(s) configured by a server administrator. Results may include: 
         [0156]    a. if/when issues are detected, collecting a summary of the most pertinent issue; 
         [0157]    b. collecting the name of the configured server; 
         [0158]    c. collecting the result of the DNS lookup; 
         [0159]    d. collecting the network address (IP address) from the DNS lookup, 
         [0000]    The name resolution test will fail if the host name does not resolve to a network address (IP address) 
         [0160]    In accordance with still other embodiments, the method includes entering arbitrary text, e.g., by a user or in an automated manner, and attaching the text with results. 
         [0000]    In other embodiments, the method can further include generating a human readable report based on the results, which can include: 
         [0161]    a. if/when an issue is detected, the most likely cause is indicated; 
         [0162]    b. the findings of each test is summarized; 
         [0163]    c. the state of each test is clearly indicated; 
         [0164]    d. the detailed information from every test is made available; 
         [0165]    In accordance with embodiments, the format of the report, as displayed to the end user, facilitates phone-based support by clearly reporting: the likely cause, each pertinent issue, each test&#39;s status, and details. Further, the format of the report, as displayed to the system administrator, can facilitate common understanding with the end user by maintaining the same format, terminology, and available information from the method. 
         [0166]    According to still other embodiments, the method can include the use of a consistent Internet test server for the testing of network connectivity for the device using the preset server as the control  1  to form a basis of comparison of results for most of the customized tests from the executing of one or more customized network connectivity tests. 
         [0167]    In accordance with other embodiments, the method may include system administrators defining customized tests for networked resources important to their organization, having them executed as part of the executing of one or more customized network connectivity tests, and including the results as part of an overall report. The customized tests defined by the system administrator may be automatically distributed to all networked devices associated with the central server. 
         [0168]    In further embodiments, the method can allow end users to initiate a manual execution of the tests under any networking conditions. In this manner, the method allows execution to be initiated independent of network status, and can be parameterized to suppress some or all user feedback. 
         [0169]    Moreover, the method can allow the automated execution of tests based on the device&#39;s network conditions or other events. The method can allow automated execution to be parameterized to balance frequency with system impact. 
         [0170]    In other embodiments, the method can include transmitting reports from networked devices to a central server. The method accounts for possible intermittent network conditions by storing reports when the central server is unreachable and attempting retransmission on a periodic, random basis to minimize network flooding. 
         [0171]    According to other embodiments, the method may include adding a map location, when available, to the display of a report. 
         [0172]    In still other embodiments, the method can include displaying, sorting, and filtering of reports on the central server by the network administrator. The method can allow network administrators to reduce the set of reports to the subset of interest for the task at hand. 
         [0173]    In accordance with still other embodiments of the present invention, the method can allow for creation of alerts in the form of SMS or emails sent to defined parties. The method may allow for alerts filtered for report severity and sent at various time intervals. 
         [0174]    Other exemplary embodiments and advantages of the present invention may be ascertained by reviewing the present disclosure and the accompanying drawing. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         [0175]    The present invention is further described in the detailed description which follows, in reference to the noted plurality of drawings by way of non-limiting examples of exemplary embodiments of the present invention, in which like reference numerals represent similar parts throughout the several views of the drawings, and wherein: 
           [0176]      FIG. 1  is a diagram representing a simplified view of the present invention with indications of interaction; 
           [0177]      FIG. 2  illustrates a flow diagram of the present invention&#39;s overall diagnostic logic including potential custom tests; 
           [0178]      FIG. 3  illustrates a flow diagram of the present invention&#39;s local network conditions diagnostic logic; and 
           [0179]      FIG. 4  illustrates a flow diagram of the present invention&#39;s web resource customizable 
       
    
    
     DETAILED DESCRIPTION OF THE EMBODIMENTS 
       [0180]    The particulars shown herein are by way of example and for purposes of illustrative discussion of the embodiments of the present invention only and are presented in the cause of providing what is believed to be the most useful and readily understood description of the principles and conceptual aspects of the present invention. In this regard, no attempt is made to show structural details of the present invention in more detail than is necessary for the fundamental understanding of the present invention, the description taken with the drawings making apparent to those skilled in the art how the several forms of the present invention may be embodied in practice. 
         [0181]      FIG. 1  shows the present invention in the most simplified context  100  with a networked device  101  communicating through a network  103  to the central server  102 . Of course, it is to be understood that, in practice, there can be many thousand networked devices  101  communicating to a single central server  102 . Network  103  can be any arbitrary computer network that utilizes the internet protocol stack, but in practice is usually connected to the Internet. The human actors pictured are the device&#39;s end user  104  who interacts with a support contact  106  through a phone or other electronic devices  109 . Support contact  106  may use central server  102  to review a latest report from networked device  101  or other related previous results. Moreover, a network administrator  105 , who, e.g., administers central server  102  and uses central server  102  to configure custom tests and to analyze test results. During the running of a diagnostic test, networked device  101  will attempt to contact an Internet test server  107 , which is an established, always-available server that acts as a control. Networked resource  108  is an example target of a custom test configured by network administrator  105 . In practice, there can be several custom tests targeting a number of networked resources  108 . 
         [0182]      FIG. 2  presents an exemplary a sequence of logic  200  for an exemplary diagnostic run as a flow chart. The sequence of logic  200  is an exemplary method for optimizing the determination of the root cause of a potential connection issue. The sequence of logic  200  starts with tests local to the networked device  101 , e.g., local networking test  201 , GPS check  202 , captive portal test  203 , and virtual private network (VPN) test  204 . After finishing the local tests, the sequence of logic  200  then executes tests for network connectivity to the Internet test server  107 , e.g., ping test  205 , trace route check  207 , and HTTP/HTTPS test  208 . The trace route check  207  can be somewhat slow, e.g., taking up to several seconds to execute. Therefore, the status of ping test  205  is checked at  206  and trace route check  207  is executed, if the ping test  205  does not pass. Otherwise, the sequence of logic  200  proceeds directly to custom tests as defined by a network administrator  106 . Possible custom tests include, e.g., web resource test  209 , TCP/IP test  210 , and host name resolution test  211 , plus customized instances of ping test  205 , trace route check  207 , and HTTP/HTTPS test  208 . 
         [0183]      FIG. 3  presents an exemplary the sequence of logic  300  for the local networking test  201 . The local networking test  201  is a diagnostic test that examines the state of the local networking interfaces and attempts to determine issues effecting connectivity to the network  103  that are generally actionable on networked device  101 . These tests produce no external network activity and are very fast queries of networked device  101 . According to the exemplary embodiment, discover network interfaces  301 , uses device-specific APIs to enumerate all the available modules and/or elements of network communication, including cellular networks and Wi-Fi adapters, on the networked device  101 . Next, collect list of operational interfaces  302  determines which discovered network interfaces are fully functional and able to send and receive data. Then collect Wi-Fi and WWAN status  303  gathers detailed information about the Wi-Fi and WWAN (cellular network) interfaces. Obtain routing table  304  gathers from networked device  101  the local information the device uses to direct (route) traffic to networked resources  108 . Then, verify default gateway for all interfaces  305  obtains and validates that each operational interface is configured with a networked resource  108  that serves as its initial contact for network communications. Finally, verify state of primary interface  306  discovers which interface is being used by default for network communications and determines if it is operational. 
         [0184]      FIG. 4  presents an exemplary sequence of logic  400  for web resource test  209  as a flow chart. Web resource test  209  is a convenient conglomeration of other tests that can be customized by network administrator  105 . When customizing web resource test  209 , network administrator  105  specifies the DNS name and IP address of a networked resource  108 . Using those as parameters, web resource test  209  runs a ping host via IP address  401 , which is the same as ping test  205 , except for using the IP address supplied by network administrator  105 . Test server name via DNS test  402  is part of HTTP/HTTPS test  208 . Test server name via DNS test  402  uses the Internet DNS system to verify the DNS name supplied by network administrator  105  is valid and its IP address matches the IP address supplied by network administrator  105 . Connect to URL test  403  also borrows from HTTP/HTTPS test  208  by doing a combination of a HTTPS get followed by a HTTPS get to verify networked resource  108  specified by network administrator  105  returns successfully. As with the complete diagnostic tests  200 , if the ping host via IP address test  401  fails, trace route check  404  is performed. 
         [0185]    Local networking test  201  executes discover network interfaces  301  which, using APIs specific for the operating system of networked device  101 , catalogs all available modules, devices and/or elements through which networked device  101  can communicate over a network  103 . This includes cellular networks (such as CDMA and GSM) and wireless local area networks (known as Wi-Fi). Details of all discovered interfaces are included in the report that is displayed to end user  104  and sent to central server  102 . These details include, but are not limited to, the interface&#39;s status, network address, network gateway, Wi-Fi make and model, current Wi-Fi state, current Wi-Fi signal strength, all current Wi-Fi networks detected, WWAN make and model, current WWAN state, current WWAN signal strength, current WWAN technology type, WWAN carrier, MAC address, transmit and receive speeds, and byte sent and bytes received. 
         [0186]    The complete diagnostic run  200  includes GPS check  202 , which, if the device has an accessible GPS unit, reports the GPS coordinates of networked device  101 . In addition, GPS check  202  gathers other data such as, but not limited to, the GPS unit type, port name, status, HDOP or meter-tolerance, and number of satellites plus, if appropriate for the GPS unit, a recent sample of the constant flow of data from the GPS unit known as the NMEA stream. 
         [0187]    The complete diagnostic run  200  includes captive portal test  202 , which tests if the Wi-Fi network being utilized passes through a router that is trapping all traffic, usually for the purpose of forcing a login. Captive portal test  202  will fail if a Wi-Fi access point is blocking access to the Internet. This is an important test as Wi-Fi interfaces can be set to spontaneously connect to an available network  103 , thus blocking networked device  101  from accessing needed networked resources  108 . 
         [0188]    The complete diagnostic run  200  includes VPN test  204 , which checks for the presence and condition of supported VPNs. VPN test  204  reports the current condition, gives an informational message if no supported VPN is installed, warns if the supported VPN is disconnected, and will fail if the supported VPN is disabled or unreachable. 
         [0189]    The complete diagnostic run  200  includes ping test  205 , which executes 20 standard Internet ICMP Pings to the Internet test server  107 . Ping test  205  sets a timeout on each ICMP ping of 2 seconds. Ping test  205  limits the entire test to 20 seconds in case the Internet test server  107  is unreachable. Since ICMP pings are not guaranteed, ping test  205  warns if more than one ICMP ping failed or if the average time to complete each ICMP ping is more than one second. 
         [0190]    In embodiments, the complete diagnostics run  200  can include trace route check  207 . Trace route check  207  can be slow, often taking several seconds. Because of this, it is preferable that trace route check  207  is executed if/when ping test  205  fails. Trace route check  207  is informational only—providing extra report details but does not pass or fail. Trace route check  207  steps through the path the ICMP ping attempted during ping test  205  by sending an ICMP ping to each network hop needed to reach Internet test server  107 . For each hop, trace route check  207  records, e.g., a hop number, IP address, and response time among other information. If the check ends due to an error or timeout, trace route check  207  includes this at the bottom of the details. 
         [0191]    The complete diagnostics run  200  includes HTTP/HTTPS test  208  as its final built-in test. In the exemplary embodiments, HTTP/HTTPS test  208  will pass if Internet test server  107  returns either a 200-level HTTP response or a 401 (basic authentication required) response, otherwise it fails. The details of HTTP/HTTPS test  208  include, but are not limited to, the HTTP response code, OS-specific error status, overall duration of the test, and the bytes returned in the server response. 
         [0192]    Other than web resource test  209 , the complete diagnostics run  200  can be customized by network administrator  105 , e.g., by adding a number of other tests. These can include, e.g., tests that constitute web resource test  209 : ping host via IP address test  401 , test server name via DNS test  402 , connect to URL test  403 , and trace route check  404 . In addition to these, complete diagnostics run  200  can be customized by a network administrator  105  by adding, e.g., TCP/IP test  210  and host name resolution test  211 . TCP/IP test  210  attempts a bind to a port and socket of a networked resource  108 . TCP/IP test  210  attempts the bind using a port number and DNS name (or IP address) supplied by network administrator  105 . Host name resolution test  211  simply checks that the DNS name supplied by the network administrator  105  is in the DNS. 
         [0193]    Although the invention has been described with reference to several exemplary embodiments, it is understood that the words that have been used are words of description and illustration, rather than words of limitation. Changes may be made within the purview of the appended claims, as presently stated and as amended, without departing from the scope and spirit of the invention in its aspects. Although the invention has been described with reference to particular means, materials and embodiments, the invention is not intended to be limited to the particulars disclosed; rather, the invention extends to all functionally equivalent structures, methods, and uses such as are within the scope of the appended claims. 
         [0194]    In accordance with various embodiments of the present invention, the methods described may be implemented for operation as executable modules or as executable software programs running on a computer processor. Dedicated hardware implementations including, but not limited to, application specific integrated circuits, programmable logic arrays and other hardware devices and/or modules can likewise be constructed to implement the methods described herein. Furthermore, alternative software implementations including, but not limited to, distributed processing or component/object distributed processing, parallel processing, or virtual machine processing can also be constructed to implement the methods described herein. 
         [0195]    It should also be noted that software implementations of the present invention as described herein may be optionally stored on a tangible, non-transitory storage medium, such as: a magnetic medium such as a disk or tape; a magneto-optical or optical medium such as a disk; or a solid state medium such as a memory card or other package that houses one or more read-only (non-volatile) memories, random access memories, or other re-writable (volatile) memories. A digital file attachment to email or other self-contained information archive or set of archives is considered a distribution medium equivalent to a tangible storage medium. Accordingly, the invention is considered to include a tangible storage medium or distribution medium, as listed herein and including art-recognized equivalents and successor media, in which the software implementations herein are stored. 
         [0196]    Although the present specification describes components and functions implemented in the embodiments with reference to particular standards and protocols, the invention is not limited to such standards and protocols. Each of the standards for Internet and other packet switched network transmission and wireless networking represent examples of the state of the art. Such standards are periodically superseded by faster or more efficient equivalents having essentially the same functions. Accordingly, replacement standards and protocols having the same functions are considered equivalents. 
         [0197]    It is noted that the foregoing examples have been provided merely for the purpose of explanation and are in no way to be construed as limiting of the present invention. While the present invention has been described with reference to an exemplary embodiment, it is understood that the words, which have been used herein are words of description and illustration, rather than words of limitation. Changes may be made, within the purview of the appended claims, as presently stated and as amended, without departing from the scope and spirit of the present invention in its aspects. Although the present invention has been described herein with reference to particular means, materials and embodiments, the present invention is not intended to be limited to the particulars disclosed herein; rather, the present invention extends to all functionally equivalent structures, methods and uses, such as are within the scope of the appended claims.