The present technology pertains to remedying problems observed in a device; and more specifically pertains to issuing a software update tailored to a specific device to solve or avoid an observed problem.
Even the best engineered and built devices can fail to operate as expected due to environmental conditions. For example, a device may be deployed in an environment that is subject to inconsistent power supplies, e.g., brownouts or blackouts. In another example, a device may be employed in environment that is subject to a lot of environmental interference with wireless communications. These environmental operating conditions are unique to each environment, and thus affect deployed devices differently. As such, it is difficult for a device manufacturer to ameliorate such issues since they may only affect a specific device.
The above-recited and other advantages and features of the present technology will become apparent by reference to specific implementations illustrated in the appended drawings. A person of ordinary skill in the art will understand that these drawings only show some examples of the present technology and would not limit the scope of the present technology to these examples. Furthermore, the skilled artisan will appreciate the principles of the present technology as described and explained with additional specificity and detail through the use of the accompanying drawings in which:
Various examples of the present technology are discussed in detail below. While specific implementations are discussed, it should be understood that this is done for illustration purposes only. A person skilled in the relevant art will recognize that other components and configurations may be used without parting from the spirit and scope of the present technology.
The disclosed technology addresses the need in the art for software implemented solutions to problems experienced by a specific device when deployed in an operating environment by detecting problems experienced by the specific device that might not be experienced by other similar devices. Once detected, a firmware update for the specific device can be issued to solve or avoid the detected problem.
While the specific device might be in good operating condition, environmental factors present in an operating environment for the specific device can cause problems with the function of the specific device. Such problems are not likely to be observed by similar devices (e.g., other devices in the same model line of the product) since the problems are specific to the operating environment for the specific device.
The present technology provides a solution to this problem by issues updates specific to the specific device to solve or avoid the detected problem.
Throughout this disclosure reference is made to a payment object reader and/or a point-of-sale terminal as example devices to which the present technology applies. However, it should be appreciated that the present technology can apply to any category of devices that can benefit from detecting a performance problem with a specific device and implementing a solution to the performance problem for the specific device.
Point-of-sale system 106 can utilize payment object reader 102 to read payment objects. Payment objects can be, for example, a magnetic stripe card, a near field communication device, and integrated circuit card, etc. In some embodiments, as illustrated in
In the embodiment illustrated in
When the system of
However, due to environmental factors the system illustrated in
In the past, when such errors were encountered, they have been solved via troubleshooting by a human operator. However the present technology includes an example system and methods wherein point-of-sale terminal 106 may utilize hardware remediation service 108 to remedy the problems experienced by payment object reader 102.
While throughout this description reference will be made to the devices illustrated in
As addressed above the present technology is directed to remediating, avoiding, or solving problems encountered by point-of-sale terminal 106, or payment object reader 102 when deployed in an operating environment.
When the error log 112 is located on payment server 110 error analysis service 114 can determine (204) that the performance metrics indicate a performance problem with the device by analyzing error log 112, and can identify (206) a solution to the problem that will prevent the device from experiencing the problem further. Payment server 110 can then implement (208) the solution by communicating with point-of-sale terminal 106. In some embodiments, the solution is prepared by firmware update service 116 that can prepare firmware update specific to the device experiencing the problem. Payment server 110 can send the firmware update to point-of-sale terminal 106 to either be installed on point-of-sale terminal 106 if point-of-sale terminal 106 is the device experiencing the problem, or point-of-sale terminal 106 can pass firmware update to payment object reader 102 if payment object reader 102 is the device experiencing the problem.
When error log 112 is located on point-of-sale terminal 106 hardware remediation service 108 can determine (204) at the performance metrics indicate a performance problem with the device by analyzing error log 112, and can identify (206) a solution to the problem that will prevent the device from experiencing the problem further, it can implement the solution itself if the problem occurs on the point-of-sale terminal 106 or can communicate the solution to payment object reader 102.
Log 112 of performance metrics on payment server 110 can include performance metrics for many payment object reader devices 102. Performance metrics sent by each payment object reader 102 can be associated with an unique identifier of the specific payment object reader 102.
Persons skilled in the art will recognize that there are many ways to analyze the log of performance metrics 112.
In some embodiments known problem signatures include a characterization of problems that have been observed to exist in similar hardware components. For example, a Bluetooth interface may report that it is observing a high number of disconnections on a particular channel, or that transmissions over a particular channel has encountered a higher than normal amount of packet loss. As these problems are known, Bluetooth controllers are configured to handle such problems when they are encountered. But the solutions built into Bluetooth controllers do not provide an adequate solution for reoccurring environmental problems. For example Bluetooth controllers are configured with a timeout interval for connections over a given channel. When the timeout interval is exceeded, the Bluetooth controller may drop the connection on that channel and try to connect over another channel. However Bluetooth controller will not learn that connections over particular channel are commonly dropped and discontinue attempting to use that channel. Rather a Bluetooth controller will attempt to connect to any channel that appears clear when the connection is initiated. This is especially insufficient in an environment where noise or interference on a channel occurs only intermittently.
Another known problem signature might exist for USB connections. It may be observed that a USB connection is subject to a lot of interference in the data transmission is not reliable.
While, the above examples have been given regarding a Bluetooth controller and USB it should be appreciated at almost any hardware component can have known characterizations of common problems experienced by that hardware component.
When the analysis of performance metrics by machine learning (304) or by algorithm or heuristic (306) indicates that the log performance metrics indicate a performance of a hardware component for specific device that matches a known problem type, error analysis service 114 can identify (308) a solution to the problem by looking up the problem signature in a solutions database. For example, if the observed problem is that the Bluetooth controller continuously disconnects when communicating over a particular channel, the solution can be to increase the timeout interval when it is observed that the interference causing the disconnection is intermittent. Another solution to the same problem is to discontinue use of that particular channel in the future. In the USB example where the data transmission is unreliable, the solution can be to configure the USB controller to send transmissions using a nonstandard transmission protocol that includes a greater amount of error correction such as cyclic redundancy checks. Another solution can be to open up another communication channel such as over Bluetooth or Wi-Fi to be used redundantly or as a backup when the USB channel fails.
Once error analysis service 114 identifies a possible solution, firmware update service 116 can prepare (310) a firmware update for the payment object reader that will prevent the problem. Firmware update service 116 can then send (312) the firmware update to point-of-sale terminal 106 which then passes the firmware update to payment object reader 102 where is installed. In this way, known hardware problems affecting particular device, but not a full model line of product devices can be automatically remediated or solved, thereby avoiding calls for product support.
Client device 126 can log (402) performance metrics for peripheral device 122 in error log 112. Peripheral device 122 can include integrated and/or attached devices including but not limited to communication devices, displays, input devices, storage devices, media devices, interfaces, printers, card readers, etc.
Client device 126 can analyze error log 112 to determine (404) that the logged performance metrics indicate a performance problem with peripheral device 122 by comparing the logged performance metrics with a database of known problem signatures. When it is determined (404) that the log of performance metrics indicates a known problem, client device 126 can identify (406) a solution to the problem or prevent peripheral device 122 from experiencing the problem in the future, and can implement (408) the solution.
In some embodiments, implementing (408) the solution can include providing an instruction to peripheral device 122 to adjust its operation. In some embodiments implementing (408) solution can include providing a firmware update or driver update for peripheral device 122. In some embodiments the firmware update or the driver update may be requested from an online server such as server 120.
In some embodiments, error analysis service 114 can perform additional analysis beyond merely determining a problem signature to determine a context for the observed problem signature. For example error analysis service 114 can also analyze data regarding when particular problem has occurred in the past. Such analysis may reveal patterns associated with a particular problem. For example a particular problem may be more likely to occur at a particular period during the day or week. In another example, the particular problem may be a short-lived problem such that while the problem may be detected frequently, it quickly resolves itself. In another example, a particular problem may only occur when a particular product is purchased using point of sale terminal 106 (e.g., shortly after a smoothie is purchase a blender might cause interference). These patterns are just examples and may be determined from human observations, or by machine learning.
The patterns mentioned above can provide context to particular problems observed in payment object reader 102.
Table 505 includes a description of possible error signatures on the left and possible solutions on the right. For each error signature in table 505, there are at least two solutions. Error analysis service 114 can contain logic to select (508) from among the possible solutions and can take into account the context (506) the error signature is observed, and for that solves or avoids the error in the context in which it is observed.
For example if the error signature indicates that a Bluetooth connection is repeatedly dropped on the same channel and the context analysis reveals that the connection is just as likely to be dropped at any time during the day, the best solution might be to ban the channel for which connections are dropped. The fact that the connection may be dropped any time during the day might indicate a reoccurring interference that is difficult to predict or avoid. However, if the problem signature indicates the Bluetooth connection that is dropped repeatedly on the same channel occurs infrequently, and when connections are dropped the channel becomes reusable within a short period of time, the best solution might be to increase the timeout interval before a connection is considered dropped. The fact that the connection appears dropped only infrequently and that the channel becomes usable within a short period of time may indicate a sudden but fleeting interference for which it is more effective to wait for the interference to end. However, if the problem signature indicates that the Bluetooth connection is dropped repeatedly on the same channel, and once the connection is dropped it is unlikely to be recovered for a longer period of time, it may make sense to decrease the timeout interval since once it appears that the connection is dropped it will only create a worse user experience to attempt to continue to use the connection over that channel when connect contextual analysis reveals it is unlikely that channel will be usable again in a short time.
When the problem signature indicates that once a connection is dropped that no channel will be usable, the best solution may be to increase the timeout interval until the Bluetooth connection becomes available again since there are limited other alternatives. However if contextual analysis indicates that once a connection is dropped that the Bluetooth interface will not be available within a reasonable period of time the best solution might be to disable Bluetooth so that a user will be required connect payment object reader 102 via a USB 105 to point-of-sale terminal 106. While the user may not appreciate the initial inconvenience of being required to use a wired connection, this will provide a better user experience in the long run. Alternatively when the problem signature identifies data loss over a wired connection, the solution can be to initiate a redundant wireless connection.
When the problem signature indicates data loss over a USB connection, contextual analysis may indicate that the data loss is more likely to occur during a period of time in the morning. For example perhaps a coffee grinder is run in the morning hours that causes interference with the USB connection. When contextual analysis indicates the problem signature is more likely to be experienced during the morning, it might be most effective to open a redundant communication path during morning. However if the USB connection is still usable to provide a sufficient user experience, it might be more preferable to slow the transmission rate and increase error redundancy checks for transmissions over the USB connection.
While the present technology is suited to implementing solutions to observed problem signatures for a specific device, it can be observed that a specific solution has been issued to many devices. When such an observation is made it may be more efficient to issue a firmware update for all devices of the same model rather than solve the problem one specific device at a time. This could be accomplished by error analysis service 114 determining that a greater than a threshold number of devices in a product line requires a solution. For example, error analysis service 114 may be aware 2000 devices of a particular model line have been issued and that greater than 5% of those devices require a particular solution. In such instances firmware update service 116 can issue a firmware update to all such payment object readers 102.
In some embodiments payment object reader can have a separate memory space for device specific firmware updates. This way when general firmware updates are issued to payment object reader 102 they do not overwrite device specific firmware updates. In some embodiments, after a general firmware update, payment object reader 102 can re-download any device specific firmware updates.
In some embodiments computing system 600 is a distributed system in which the functions described in this disclosure can be distributed within a datacenter, multiple datacenters, a peer network, etc. In some embodiments, one or more of the described system components represents many such components each performing some or all of the function for which the component is described. In some embodiments, the components can be physical or virtual devices.
Example system 600 includes at least one processing unit (CPU or processor) 610 and connection 605 that couples various system components including system memory 615, such as read only memory (ROM) and random access memory (RAM) to processor 610. Computing system 600 can include a cache of high-speed memory connected directly with, in close proximity to, or integrated as part of processor 610.
Processor 610 can include any general purpose processor and a hardware service or software service, such as services 632, 634, and 636 stored in storage device 630, configured to control processor 610 as well as a special-purpose processor where software instructions are incorporated into the actual processor design. Processor 610 may essentially be a completely self-contained computing system, containing multiple cores or processors, a bus, memory controller, cache, etc. A multi-core processor may be symmetric or asymmetric.
To enable user interaction, computing system 600 includes an input device 645, which can represent any number of input mechanisms, such as a microphone for speech, a touch-sensitive screen for gesture or graphical input, keyboard, mouse, motion input, speech, etc. Computing system 600 can also include output device 635, which can be one or more of a number of output mechanisms known to those of skill in the art. In some instances, multimodal systems can enable a user to provide multiple types of input/output to communicate with computing system 600. Computing system 600 can include communications interface 640, which can generally govern and manage the user input and system output. There is no restriction on operating on any particular hardware arrangement and therefore the basic features here may easily be substituted for improved hardware or firmware arrangements as they are developed.
Storage device 630 can be a non-volatile memory device and can be a hard disk or other types of computer readable media which can store data that are accessible by a computer, such as magnetic cassettes, flash memory cards, solid state memory devices, digital versatile disks, cartridges, random access memories (RAMs), read only memory (ROM), and/or some combination of these devices.
The storage device 630 can include software services, servers, services, etc., that when the code that defines such software is executed by the processor 610, it causes the system to perform a function. In some embodiments, a hardware service that performs a particular function can include the software component stored in a computer-readable medium in connection with the necessary hardware components, such as processor 610, connection 605, output device 635, etc., to carry out the function.
For clarity of explanation, in some instances the present technology may be presented as including individual functional blocks including functional blocks comprising devices, device components, steps or routines in a method embodied in software, or combinations of hardware and software.
Any of the steps, operations, functions, or processes described herein may be performed or implemented by a combination of hardware and software services or services, alone or in combination with other devices. In some embodiments, a service can be software that resides in memory of a client device and/or one or more servers of a content management system and perform one or more functions when a processor executes the software associated with the service. In some embodiments, a service is a program, or a collection of programs that carry out a specific function. In some embodiments, a service can be considered a server. The memory can be a non-transitory computer-readable medium.
In some embodiments the computer-readable storage devices, mediums, and memories can include a cable or wireless signal containing a bit stream and the like. However, when mentioned, non-transitory computer-readable storage media expressly exclude media such as energy, carrier signals, electromagnetic waves, and signals per se.
Methods according to the above-described examples can be implemented using computer-executable instructions that are stored or otherwise available from computer readable media. Such instructions can comprise, for example, instructions and data which cause or otherwise configure a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. Portions of computer resources used can be accessible over a network. The computer executable instructions may be, for example, binaries, intermediate format instructions such as assembly language, firmware, or source code. Examples of computer-readable media that may be used to store instructions, information used, and/or information created during methods according to described examples include magnetic or optical disks, solid state memory devices, flash memory, USB devices provided with non-volatile memory, networked storage devices, and so on.
Devices implementing methods according to these disclosures can comprise hardware, firmware and/or software, and can take any of a variety of form factors. Typical examples of such form factors include servers, laptops, smart phones, small form factor personal computers, personal digital assistants, and so on. Functionality described herein also can be embodied in peripherals or add-in cards. Such functionality can also be implemented on a circuit board among different chips or different processes executing in a single device, by way of further example.
The instructions, media for conveying such instructions, computing resources for executing them, and other structures for supporting such computing resources are means for providing the functions described in these disclosures.
Although a variety of examples and other information was used to explain aspects within the scope of the appended claims, no limitation of the claims should be implied based on particular features or arrangements in such examples, as one of ordinary skill would be able to use these examples to derive a wide variety of implementations. Further and although some subject matter may have been described in language specific to examples of structural features and/or method steps, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to these described features or acts. For example, such functionality can be distributed differently or performed in components other than those identified herein. Rather, the described features and steps are disclosed as examples of components of systems and methods within the scope of the appended claims.
Number | Name | Date | Kind |
---|---|---|---|
6741555 | Li | May 2004 | B1 |
6920179 | Anand | Jul 2005 | B1 |
7249286 | Krishnan | Jul 2007 | B1 |
7540030 | Zaitsev | May 2009 | B1 |
7809811 | Rao | Oct 2010 | B1 |
7813822 | Hoffberg | Oct 2010 | B1 |
7920495 | Salokannel | Apr 2011 | B2 |
8794517 | Templeton | Aug 2014 | B1 |
8910868 | Wade | Dec 2014 | B1 |
9069737 | Kimotho | Jun 2015 | B1 |
9112799 | Zhou | Aug 2015 | B2 |
9439205 | Lin | Sep 2016 | B1 |
9548797 | Green | Jan 2017 | B1 |
9661672 | Aoki | May 2017 | B2 |
9667756 | Koo | May 2017 | B2 |
9852016 | Griffith | Dec 2017 | B2 |
20040098715 | Aghera | May 2004 | A1 |
20050141747 | Shi | Jun 2005 | A1 |
20060217113 | Rao | Sep 2006 | A1 |
20090177890 | Mueller | Jul 2009 | A1 |
20110044314 | Calvanese Strinati | Feb 2011 | A1 |
20110134909 | Huang | Jun 2011 | A1 |
20110271163 | Le Floch | Nov 2011 | A1 |
20120066547 | Gilbert | Mar 2012 | A1 |
20120272206 | Sengupta | Oct 2012 | A1 |
20130036062 | Natarajan | Feb 2013 | A1 |
20130124607 | Griffith | May 2013 | A1 |
20130124718 | Griffith | May 2013 | A1 |
20130124752 | Griffith | May 2013 | A1 |
20130124911 | Griffith | May 2013 | A1 |
20130166886 | Sasanka | Jun 2013 | A1 |
20130322246 | Zhou | Dec 2013 | A1 |
20130322468 | Koo | Dec 2013 | A1 |
20140208150 | Abuelsaad | Jul 2014 | A1 |
20150161616 | Brunet | Jun 2015 | A1 |
20150245400 | Aoki | Aug 2015 | A1 |
20160041864 | Yu | Feb 2016 | A1 |
20160078382 | Watkins | Mar 2016 | A1 |
20160139974 | Herb | May 2016 | A1 |
20160239487 | Potharaju | Aug 2016 | A1 |
20160328282 | Rogati | Nov 2016 | A1 |
20160371163 | Swierk | Dec 2016 | A1 |
20170006141 | Bhadra | Jan 2017 | A1 |
20170033889 | Ma | Feb 2017 | A1 |
20170060546 | Prasad | Mar 2017 | A1 |
20170093730 | Roberts | Mar 2017 | A1 |
20170117987 | Park | Apr 2017 | A1 |
20170118573 | Yae | Apr 2017 | A1 |
20170132055 | Wu | May 2017 | A1 |
20170207989 | Cai | Jul 2017 | A1 |
20170237471 | Green | Aug 2017 | A1 |
20170238397 | Green | Aug 2017 | A1 |
20170296056 | Hresko | Oct 2017 | A1 |
20180196402 | Glaser | Jul 2018 | A1 |
Entry |
---|
Soila Pertet et al., Causes of Failure in Web Applications, Dec. 2005, [Retrieved on Jun. 18, 2019]. Retrieved from the internet: <https://www.cs.cmu.edu/˜priya/PDL-CMU-05-109.pdf> 19 Pages (1-19) (Year: 2005). |
Jorg Ott et al., Applying DTN to Mobile Internet Access: An Experiment with HTTP, Jul. 12, 2005, [Retrieved on Jun. 18, 2019]. Retrieved from the internet: <https://pdfs.semanticscholar.org/005c/84a7d6d9519726cebb375cOdc77b16c7b4f1.pdf> 13 Pages (1-13) (Year: 2005). |