Device interference detection and remediation

A computer-implemented method includes calculating a first efficiency of a first device connected to a host system when a second device is not connected to the host system. Connection of the second device to the host system is detected. The method further includes calculating a second efficiency of the first device when the second device is connected to the host system. An interference quotient of the first device is calculated, by a computer processor, based on the first efficiency and the second efficiency. A user is warned of interference between the first device and the second device, responsive to the interference quotient being in an unacceptable range.

BACKGROUND

Embodiments of the present invention relate to device interference and, more specifically, to device interference detection and remediation.

Universal serial bus (USB) has become a standard for connecting peripheral devices to computers, and as a result, USB devices are more common than ever. When connecting a device to a business or home computer, that device will likely be connected by way of USB. In some cases, a user may have four to eight USB devices used with a single computer.

A resulting issue of connecting multiple devices in close proximity is interference. This interference can be caused by insufficient shielding of USB devices, which can lead to unintended interactions with nearby other USB devices. For example, a computer may have two USB devices connected and working efficiently with the computer, but when a third USB device is connected, that third connection may cause interference among the three USB devices, which may result in unexpected behavior or inefficiencies. In the case of medical devices, the above issue is of even greater concern. For example, if a physician has critical data files with medical records stored on a storage device connected via USB, that storage device may behave erratically in the presence of one or more other USB devices.

SUMMARY

According to an embodiment of this disclosure, a computer-implemented method includes calculating a first efficiency of a first device connected to a host system when a second device is not connected to the host system. Connection of the second device to the host system is detected. The method further includes calculating a second efficiency of the first device when the second device is connected to the host system. An interference quotient of the first device is calculated, by a computer processor, based on the first efficiency and the second efficiency. A user is warned of interference between the first device and the second device, responsive to the interference quotient being in an unacceptable range.

In another embodiment, a system includes a memory having computer readable instructions and one or more processors for executing the computer readable instructions. The computer readable instructions include calculating a first efficiency of a first device connected to a host system when a second device is not connected to the host system. Connection of the second device to the host system is detected. The computer readable instructions further include calculating a second efficiency of the first device when the second device is connected to the host system. An interference quotient of the first device is calculated, based on the first efficiency and the second efficiency. A user is warned of interference between the first device and the second device, responsive to the interference quotient being in an unacceptable range.

In yet another embodiment, a computer program product for detecting interference includes a computer readable storage medium having program instructions embodied therewith. The program instructions are executable by a processor to cause the processor to perform a method. The method includes calculating a first efficiency of a first device connected to a host system when a second device is not connected to the host system. Connection of the second device to the host system is detected. The method further includes calculating a second efficiency of the first device when the second device is connected to the host system. An interference quotient of the first device is calculated, based on the first efficiency and the second efficiency. A user is warned of interference between the first device and the second device, responsive to the interference quotient being in an unacceptable range.

DETAILED DESCRIPTION

Given the possibility of interference between universal serial bus (USB) devices, various embodiments of a detection system described herein may detect interference and take action based on such detection. In some embodiments, the detection system may perform one or more of the following tasks: monitor connections of USB devices to a host; monitor the reliability and performance of each such USB device; analyze performance data for each USB device to determine interference quotients; report the interference quotients to a knowledgebase; and warn a user of the risk of interference from connected USB devices, based on the interference quotients of the USB devices.

FIG. 1is a block diagram of a detection system100applicable to a host110, according to some embodiments of this disclosure. The host110, or host system, may have one or more USB ports115, each configured to receive a device120. Each device120may be a USB device, connectable to the host110by way of a USB port115of the host110. For example, and not by way of limitation, a device120may be an external hard drive, an optical drive, a printer, a keyboard, a mouse, a smartphone, or various other devices. Through connection by way of a USB port115, each device120may communicate with the host110. In some embodiments, one or multiple devices120may be connected to the host110at a given time.

The detection system100may include a detection agent150in communication with the host110, such as by being installed on the host110. For instance, the detection agent150may be embodied in hardware, software, or a combination of both, and activities of the agent150may be executed by a hardware computer processor on behalf of the detection agent150. Operations of the detection system100performed at the host110may be performed or managed by the detection agent150.

The host110may be configured to run the detection agent150, so as to enable operation of the detection system100. In some embodiments, the host110may be a computer system. In some embodiments, however, the host110may be another device120, such as a USB device, behaving as a peer to the one or more devices120connected by way of the one or more USB ports115. Thus, detection and remediation of interference may occur through peer devices110, according to some embodiments.

In some embodiments, the detection system100may monitor devices120connected to the host110and maintain performance data for each device120. This performance data may represent the performance of the associated device120at various points in time. For instance, the performance data for a first device may include data points for that device, with each data point representing a point in time. Further, each data point may include information about the performance of the first device at the corresponding time of the data point, as well as information about other devices120connected to the host110at that corresponding time.

For example, Table 1 below illustrates an example table representing performance data related to a wireless mouse, which may be a first device120connected by way of a USB wireless adapter.

In the above table, each row represents a data point corresponding to a specific time, where the time is a combination of the Date and Time fields. At that corresponding time, the cursor directed by movement of the mouse is at the position indicated by the X Coordinate and Y Coordinate fields. In this case, Efficiency may refer pixel movement efficiency and may be calculated by taking the time the cursor was expected to take in arriving at that position after the mouse was moved, divided by the time the cursor actually took to arrive that the position. Thus, in this example, Efficiency may be a reflection of the cursor's sluggishness, and a high value may indicate better efficiency as compared to a lower value.

In the table, the Device ID1field may include an identifier of second device120, if any, that is connected to the host110in addition to the first device120associated with the table. The Device Name1field may indicate a name of that second device120, and the Interference Quotient1field may indicate an interference quotient of the first device120with respect to the second device120. The interference quotient may describe a level of interference calculated based on connection of the second device120connected. Calculation of this interference quotient is described below. Further, in a table representing performance data for the first device120, there may be additional columns for additional connected devices120, where each additional connected device120may be represented by corresponding Device ID, Device Name, and Interference Quotient fields.

While the above table is only an example for illustrative purposes, it will be understood that the performance data may describe, at various points in time, the efficiency of the associated device120as well as indications of what other devices120are connected to the host110. Calculation of efficiency may vary based on the type of device120in question. For instance, if the first device120is a storage device or an optical device, the efficiency may be based on the speed of reading or writing data. For another instance, if the first device120is a printer, the efficiency may be based on the speed of sending data to the printer for printing.

The interference quotient may be calculated in various ways. In some embodiments, the interference quotient of a first device120with respect to a second device120may be based on a comparison of the first device's efficiency without connection of the second device120versus with connection of the second device120. For example, and not by way of limitation, the interference quotient of a first device120may be a slope or the intercept of a regression model, such as a linear regression model, of the efficiency of the device120. For instance, the detection system100may represent the performance of a first device120by a graph, with the efficiency on one axis (e.g., the horizontal axis) and the connection status of a second device120on the other axis (e.g., the vertical axis). The connection status may be represented by a value of 0, indicating a lack of connection and 1, indicating a connection.

FIG. 2illustrates an example of such a graph, according to some embodiments of this disclosure. The example graph ofFIG. 2represents the connection status of a second device120versus the efficiency of a first device120, and thus this graph may be used to determine the interference quotient of the first device120with respect to the second device120. In other words, the horizontal axis represents the efficiency of the first device120, while the vertical axis represents whether the second device120known as Device2is attached to the host110along with the first device120.

At the value of 0 on the vertical axis are various points representing the various efficiency values of the first device120that were calculated based on data points for when Device2was not attached. At the value of 1 on the vertical axis are various points represent the various efficiency values of the first device120that were calculated based on data points for when Device2was attached. Using known curve-fitting techniques, a curve210may be fit to these points, and a characteristic or parameter of that curve210, such as the absolute value of the slope, may be used as the interference quotient or as a basis for calculating the interference quotient. Further, in some embodiments, the interference quotient may be normalized to be in the range of [0, 1].

Using this method of calculating the interference quotient, an interference quotient of 0 may reflect no interference while higher interference quotients may represent higher degrees of interference. However, the interference quotient may be calculated in other ways, and either a higher interference quotient or a lower interference quotient can represent more interference rather than less.

In some cases, the interference quotient of a first device120with respect to a second device120may be deemed unacceptable. In some embodiments, unacceptability may be determined based on whether interference quotient is in an unacceptable range (e.g., greater than 0.5), is above a threshold, or is below a threshold. When the interference quotient is unacceptable, the detection system100may take action to reduce the amount of interference. This action may include, for example, warning a user of existing interference or suggesting that the user reconfigures the devices120, such as by disconnecting them from the host110or repositioning them.

In some embodiments, the detection system100may use colors to warn of interference, where each color may correspond to a range of interference quotients. For example, a first color (e.g., green) may correspond to a first range of interference quotients classified as low, a second color (e.g., yellow) may correspond to a second range of interference quotients classified as medium, and a third color (e.g., red) may correspond to a third range of interference quotients classified as high. These colors may be used in various ways, so as to alert the user of potential interference. For example, the detection system100may cause a dialog box to be displayed on a monitor of the host110, where the dialog box has a background color corresponding to the range of the interference quotient of the first device120with respect to the second device120. For another example, each USB port115may be outlined by a light capable of lighting up in multiple colors. In this case, the light of a USB port115into which the first device120is plugged may light up in the color corresponding to the range of the interference quotient of that first device120.

In some embodiments, the detection system100may select one or more remedial actions to be performed, in addition to or alternatively to the above use of colors. The detection system100may maintain remedial data, which may include an action table of available remedial actions. The remedial data may also include information about one or more of: which remedial actions have been tried for each interference quotient of each device120when those remedial actions were tried, and the success of those remedial actions. Further, in some embodiments, the action table of remedial actions may be ordered, or ranked, based on their extremeness.

For example, and not by way of limitation, the available remedial actions may include moving the first device120to a different USB port115, moving the second device120(i.e., the interfering device120) to a different USB port115, disconnecting the first device120, disconnecting the second device120, adding a USB extension cable to the first device120, or adding an extension cable to the second device120. Given these available remedial actions, disconnecting the first device120may be considered the most extreme action and may thus be last in the order, or ranked lowest, based on extremeness.

Upon detecting that a first device120has an unacceptable interference quotient with respect to a second device120, the detection system100may select the least extreme remedial action available that has not yet been tried for this particular interference quotient, or that has not been tried within predetermined period of time. After making the selection, detection system100may suggest the user take this action, such as by providing the selected remedial action to the user in the form of a dialog box displayed on the monitor.

The detection system100may then receive some indication that the remedial action was performed. This indication may be a detection that the remedial action was taken (e.g., detecting that the first device was disconnected and then reconnected to a different USB port115), or it may be receipt of the user's confirmation that the remedial action was taken. Upon receiving the indication, the detection system100may indicate in its remedial data that the selected remedial action has been tried for the first device's interference quotient with respect to the second device120. The detection system100may then return to monitoring its connected devices120until one or more of the devices120is again deemed to have an unacceptable interference quotient. If the first device's interference quotient with respect to the second device120is later deemed to be unacceptable again, then the detection system100may select from the remedial actions the least extreme action that has not yet been tried.

If the first device's interference quotient with respect to the second device120remains acceptable for a predetermined period after the remedial action was taken, the detection system100may deem the remedial action successful, and may update the remedial data with the success. On the other hand, if the first device's interference quotient with respect to second device120becomes unacceptable again within the predetermined period after the remedial action was taken, the detection system100may deem the remedial action unsuccessful, and may update the remedial data with the success.

In some embodiments, the detection system100may use or contribute to a global knowledgebase, which may describe historical interference issues encountered, as well as remedial actions taken and indications of the success or failure of these actions.FIG. 3is a block diagram of the detection system100utilizing a knowledgebase310for this purpose, according to some embodiments of this disclosure.

As shown,FIG. 3illustrates the same components illustrated inFIG. 1, but additionally includes the knowledgebase310. The knowledgebase310may, for example, reside on a remote server accessible by the host110and accessible by one or more other hosts110at remote locations. The detection system100may notify the knowledgebase310of its experiences with the devices120and of actions taken and the effects of those actions toward reducing interference. Remote instances of the detection system100at other hosts110may do likewise. As such, the knowledgebase310may contain information useful to the host110regarding other hosts' experiences with devices120.

Specifically, for instance, the knowledgebase310may maintain remedial data for multiple hosts, including indications of which remedial actions have been tried in attempts to affect which interference quotients. Thus, when detecting an unacceptable interference quotient of a first device120with respect to a second device120, the detection system100may consult the knowledgebase310before taking action. The knowledgebase310may indicate that certain remedial actions have been unsuccessful in remote hosts110, and thus, the detection system100may skip those remedial actions when determining which remedial action to select and suggest to the user.

FIG. 4is a flow diagram of a method400for detecting interference, according to some embodiments of this disclosure. As shown, at block410, the detection system100may monitor the performance of one or more devices120connected to the host110. At block420, the detection system100may calculate an interference quotient for each device120with respect to each other device120, and may record performance data of the one or more devices120connected to a host110. For each of the one or more devices120, the performance data may include the interference quotients calculated for the device120.

At decision block430, the detection system100may determine whether any of the one or more devices120has an interference quotient in an unacceptable range. For example, and not by way of limitation, an interference quotient above a predefined interference threshold may be deemed to be in an unacceptable range. If no interference quotient is in an acceptable range, such that all interference quotients are within an acceptable range, the method400may return to block410.

However, if an interference quotient of a first device120with respect to a second device120is in an unacceptable range, then at block440, the detection system100may select a remedial action to perform with a goal of moving that interference quotient out of the unacceptable range and into an acceptable range. In some embodiments, selecting a remedial action may include selecting a next untried remedial action from an action table of ordered remedial actions. At block450, the detection system100may suggest the selected remedial action to a user. At block460, the detection system100may receive an indication that the selected remedial action was performed. The method400may then return to block410, where the detection system100may continue to monitor the connected devices120.

FIG. 5illustrates a block diagram of a computer system500for use in implementing a detection system100or method according to some embodiments. The detection systems100and methods described herein may be implemented in hardware, software (e.g., firmware), or a combination thereof. In some embodiments, the methods described may be implemented, at least in part, in hardware and may be part of the microprocessor of a special or general-purpose computer system500, such as a personal computer, workstation, minicomputer, or mainframe computer. For instance, the host110may be a computer system500, and the detection system100may operate by way of the detection agent150running on that computer system500.

In some embodiments, as shown inFIG. 5, the computer system500includes a processor505, memory510coupled to a memory controller515, and one or more input devices545and/or output devices540, such as peripherals, that are communicatively coupled via a local I/O controller535. These devices540and545may include, for example, a printer, a scanner, a microphone, and the like. Input devices such as a conventional keyboard550and mouse555may be coupled to the I/O controller535. The I/O controller535may be, for example, one or more buses or other wired or wireless connections, as are known in the art. The I/O controller535may have additional elements, which are omitted for simplicity, such as controllers, buffers (caches), drivers, repeaters, and receivers, to enable communications.

The processor505is a hardware device for executing hardware instructions or software, particularly those stored in memory510. The processor505may be a custom made or commercially available processor, a central processing unit (CPU), an auxiliary processor among several processors associated with the computer system500, a semiconductor based microprocessor (in the form of a microchip or chip set), a macroprocessor, or other device for executing instructions. The processor505includes a cache570, which may include, but is not limited to, an instruction cache to speed up executable instruction fetch, a data cache to speed up data fetch and store, and a translation lookaside buffer (TLB) used to speed up virtual-to-physical address translation for both executable instructions and data. The cache570may be organized as a hierarchy of more cache levels (L1, L2, etc.).

The memory510may include one or combinations of volatile memory elements (e.g., random access memory, RAM, such as DRAM, SRAM, SDRAM, etc.) and nonvolatile memory elements (e.g., ROM, erasable programmable read only memory (EPROM), electronically erasable programmable read only memory (EEPROM), programmable read only memory (PROM), tape, compact disc read only memory (CD-ROM), disk, diskette, cartridge, cassette or the like, etc.). Moreover, the memory510may incorporate electronic, magnetic, optical, or other types of storage media. Note that the memory510may have a distributed architecture, where various components are situated remote from one another but may be accessed by the processor505.

The instructions in memory510may include one or more separate programs, each of which comprises an ordered listing of executable instructions for implementing logical functions. In the example ofFIG. 5, the instructions in the memory510include a suitable operating system (OS)511. The operating system511essentially may control the execution of other computer programs and provides scheduling, input-output control, file and data management, memory management, and communication control and related services.

Additional data, including, for example, instructions for the processor505or other retrievable information, may be stored in storage520, which may be a storage device such as a hard disk drive or solid state drive. The stored instructions in memory510or in storage520may include those enabling the processor to execute one or more aspects of the detection systems100methods of this disclosure.

The computer system500may further include a display controller525coupled to a display530. In some embodiments, the computer system500may further include a network interface560for coupling to a network565. The network565may be an IP-based network for communication between the computer system500and an external server, client and the like via a broadband connection. The network565transmits and receives data between the computer system500and external systems. In some embodiments, the network565may be a managed IP network administered by a service provider. The network565may be implemented in a wireless fashion, e.g., using wireless protocols and technologies, such as WiFi, WiMax, etc. The network565may also be a packet-switched network such as a local area network, wide area network, metropolitan area network, the Internet, or other similar type of network environment. The network565may be a fixed wireless network, a wireless local area network (LAN), a wireless wide area network (WAN) a personal area network (PAN), a virtual private network (VPN), intranet or other suitable network system and may include equipment for receiving and transmitting signals.

Detection systems100and methods according to this disclosure may be embodied, in whole or in part, in computer program products or in computer systems500, such as that illustrated inFIG. 5.

Technical effects and benefits of some embodiments include the ability to detect and act on interference between USB devices120, in the aim of reducing such interference where it causes unacceptable behavior. In some embodiments, this is performed by calculating an interference quotient for each device120and performing one or more activities, such as moving or disconnecting a device120, in response to an interference quotient being in an unacceptable range.