IP Library › Granted Patent US 10,684,906
Granted Patent B2
US 10,684,906 · App. 15/183,613 · Granted Jun 16, 2020

Monitoring peripheral transactions

Inventors: Pengxiang Zhao (Bellevue, WA); Bin Wang (Bellevue, WA); Dejun Zhang (Bellevue, WA); Wei Huang (Redmond, WA); Robert Zhu (Bellevue, WA); Xuejun Chen (Redmond, WA); Ying N. Chin (Bellevue, WA); Satyendra Bahadur (Bellevue, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F11/079G06F11/0742G06F11/0748G06F11/0751G06F11/3013G06F11/349G06F13/102G06F13/4286G06F2213/0042
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,684,906
App. No.
15/183,613
Granted
Jun 16, 2020
Kind
B2
Abstract

A communications link between a computing device and an external device is monitored. A driver for the communications link is executed on the computing device. The driver is configured to monitor data traffic over the communications link. Data indicative of the monitored data traffic is received from the driver. The data is sent to an analysis function configured to identify a condition of the communications link based on accumulated data indicative of the data traffic. Data indicative of an identified condition of the communications link is received from the analytics function. An indication of the identified condition is rendered on a display device of the computing device.

Claims (38)

1. A computing device comprising:

at least one processor; and

at least one memory in communication with the at least one processor, the at least one memory having stored thereon computer readable instructions that, when executed by the computing device, cause the computing device to at least:

execute a driver for a communications link between the computing device and an external device, wherein the driver is configured to collect error information generated on the communications link comprising counts of handshake packets, wherein each of the handshake packets is associated with one of a plurality of handshake values, wherein the driver includes a counter associated with each of the plurality of handshake values, and wherein the driver collects error information by incrementing a counter that corresponds to a handshake value of a received handshake packet;

receive, from the driver, the counts of handshake packets;

send the counts of handshake packets to an analytics engine configured to identify a condition of the communications link based at least in part on the counts of handshake packets and historical counts of handshake packets;

receive, from the analytics engine, data indicative of an identified condition of the communications link; and

in response to receiving the data indicative of the identified condition of the communications link, render, on a display device of the computing device, an indication of the identified condition.

2. The computing device according to claim 1 , wherein the data indicative of an identified condition comprises a predicted cause of a failure associated with the communications link.

3. The computing device according to claim 2 , wherein the predicted cause of a failure is determined based on a failure prediction model.

4. The computing device according to claim 3 , wherein the failure prediction model is based on a Naive Bayes classifier.

5. The computing device according to claim 1 , wherein the communications link is Universal Serial Bus (USB), and wherein the handshake packets comprise an ACK packet, a NAK packet, a STALL packet, and a NYET packet.

6. The computing device according to claim 1 , further comprising computer readable instructions that, when executed by the computing device, cause the computing device to at least send the data indicative of the data traffic to an off-device service via a communications network.

7. A method for monitoring a communications link between a computing device and an external device, the method comprising:

executing a driver for the communications link on the computing device, wherein the driver is configured to collect error information generated on the communications link comprising counts of handshake packets, wherein each of the handshake packets is associated with one of a plurality of handshake values, wherein the driver includes a counter associated with each of the plurality of handshake values, and wherein the driver collects error information by incrementing a counter that corresponds to a handshake value of a received handshake packet;

receiving, from the driver, the counts of handshake packets;

sending the counts of handshake packets to an analysis function configured to identify a condition of the communications link based at least in part on counts of handshake packets and accumulated counts of handshake packets of the data traffic;

receiving, from the analysis function, data indicative of an identified condition of the communications link; and

rendering, on a display device of the computing device, an indication of the identified condition.

8. The method of claim 7 , wherein the identified condition is an error condition of the communications link.

9. The method of claim 7 , further comprising receiving, from the analysis function, data indicative of a recommended remedial action associated with the identified condition of the communications link.

10. The method of claim 7 , wherein the analysis function is trained using a machine learning function.

11. The method of claim 7 , wherein the analysis function comprises a probabilistic classifier.

12. The method of claim 7 , further comprising sending the counts of handshake packets to an off-device service via a communications network.

13. The method of claim 12 , wherein the off-device service is configured to receive counts of handshake packets from a plurality of computing devices.

14. The method of claim 13 , wherein the off-device service is configured to analyze the counts of handshake packets from the plurality of computing devices to identify the condition based on a probabilistic pattern matching function.

15. The method of claim 14 , wherein the accumulated data comprises one or more handshake packets for a Universal Serial Bus (USB) protocol.

16. The method of claim 14 , wherein the counts of handshake packets are counted in one or more counters implemented as 64 bit counters.

17. A computer-readable storage medium having stored thereon computer readable instructions for a driver for a Universal Serial Bus (USB) communications link on a computing device, the computer-readable instructions comprising instructions that upon execution on a computing device, at least cause:

monitoring USB data traffic over the USB communications link, the USB data traffic comprising handshake packets;

accumulating error information generated on the communications link comprising counts of handshake values, wherein each of the handshake packets is associated with one of a plurality of handshake values, wherein the driver includes a counter associated with each of the plurality of handshake values, and wherein the driver counts handshake values by incrementing a counter that corresponds to a handshake value of a received handshake packet;

receiving, via a programming interface, first electronic messages that encode identifiers indicative of requests for the accumulated counts of handshake values of the monitored USB data traffic; and

in response to receiving one of the first electronic messages, sending, via the programming interface, second electronic messages indicative of the accumulated counts of handshake values of the monitored USB data traffic.

18. The computer-readable medium of claim 17 , further comprising computer-readable instructions comprising instructions that upon execution on the computing device, at least cause:

receiving a third electronic message that encodes a command to clear the accumulated data; and

in response to receiving the third electronic message, clearing the counters associated with each of the plurality of handshake values of the monitored USB data traffic.

19. The computing device according to claim 1 , additionally causing the computing device to:

send voltage, current, temperature, temperature changes, vibration, or noise information to the analytics engine, wherein the data indicative of the identified condition of the communications link is based in part on the sent information.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE FIRST NAME OF INVENTOR SATY BAHADUR PREVIOUSLY RECORDED ON REEL 038924 FRAME 0239. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT OF ASSIGNORS INTEREST. Recorded May 31, 2017
From: ZHAO, PENGXIANG; WANG, BIN; ZHANG, DEJUN; HUANG, WEI; ZHU, ROBERT; CHEN, XUEJUN; CHIN, YING N.; BAHADUR, SATYENDRA
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042643/0682 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE OF INVENTOR SATY BAHADUR PREVIOUSLY RECORDED AT REEL: 038924 FRAME: 0239. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT . Recorded May 15, 2017
From: ZHAO, PENGXIANG; WANG, BIN; ZHANG, DEJUN; HUANG, WEI; ZHU, ROBERT; CHEN, XUEJUN; CHIN, YING N.; BAHADUR, SATY
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 042464/0302 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 15, 2016
From: ZHAO, PENGXIANG; WANG, BIN; ZHANG, DEJUN; HUANG, WEI; ZHU, ROBERT; CHEN, XUEJUN; CHIN, YING N.; BAHADUR, SATY
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 038924/0239 →
Continuity (1)
Related Publication 20170364401A1 · Dec 21, 2017