IP Library › Granted Patent US 11,190,569
Granted Patent B2
US 11,190,569 · App. 16/585,119 · Granted Nov 30, 2021

Peripheral device sharing over peer-to-peer connection

Inventors: Yedong Yu (Nanjing, CN); Jiandong Hong (Nanjing, CN); Yajun Yao (Nanjing, CN); Mingming Ren (Nanjing, CN); Yuan Zhang (Nanjing, CN); Juanjuan Chen (Nanjing, CN); Qiaofei Zhu (Nanjing, CN)
Assignee: Citrix Systems, Inc.
H04L65/608H04L61/2007H04L65/1073H04L65/607H04L67/1078H04L67/1091
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 11,190,569
App. No.
16/585,119
Filed
Sep 27, 2019
Granted
Nov 30, 2021
Kind
B2
Art Unit
2451
USPC
709/231
Abstract

Disclosed is a computing system capable of performing a method that involves receiving, from a first device, a first indication that a peripheral device associated with the first device is available for sharing; sending, to a second device, a second indication that the peripheral device is available for sharing; receiving, from the second device, a request to access the peripheral device; and based at least in part on receipt of the request, causing a peer-to-peer connection to be established between the second device and the first device, the peer-to-peer connection enabling communication between the second device and the peripheral device. The peer-to-peer connection may, for example, enable direction of the peripheral device to the second device so that the peripheral device is a virtual device of the second device.

Claims (82)

1. A method performed by a computing system, comprising:

receiving, from a first device, a first indication that a first peripheral device associated with the first device is to be made available for sharing, wherein the first indication is indicative of at least one first user interface element presented on the first device having been selected, the at least one first user interface element identifying the first peripheral device;

sending, to a second device and based at least in part on receipt of the first indication, a second indication that the first peripheral device is available for sharing, wherein the second indication is configured to cause the second device to present at least one second user interface element that can be selected to request access to the first peripheral device;

receiving, from the second device, a first request to access the first peripheral device, wherein the first request is indicative of the at least one second user interface element having been selected; and

based at least in part on receipt of the first request, causing a communication channel to be established between the second device and the first device by sending real-time communication (RTC) instructions to the second device, the RTC instructions including an identifier of the first peripheral device, a network address of the first device associated with the first peripheral device, and a network address for an RTC service, the communication channel enabling communication between the second device and the first peripheral device.

2. The method of claim 1 , wherein the communication channel comprises a peer-to-peer connection between the second device and the first device.

3. The method of claim 2 , wherein the network address of the first device comprises a first internet protocol (IP) address to which the second device can direct first messages over the peer-to-peer connection, and causing the communication channel to be established further comprises:

receiving, from the second device, a second IP address associated with the second device; and

sending the second IP address to the first device to enable the first device to send second messages to the second device over the peer-to-peer connection.

4. The method of claim 3 , wherein causing the communication channel to be established further comprises:

receiving, from the first device, first information identifying data handling capabilities of the first device;

sending the first information to the second device to enable the second device to communicate with the first peripheral device over the peer-to-peer connection;

receiving, from the second device, second information identifying data handling capabilities of the second device; and

sending the second information to the first device to enable the second device to communicate with the first peripheral device over the peer-to-peer connection.

5. The method of claim 1 , further comprising:

based at least in part on the first indication, updating a record to include first data indicating the first peripheral device is available for sharing; and

determining to send the second indication to the second device based at least in part on the first data.

6. The method of claim 5 , further comprising:

authenticating an identity of a first user of the first device; and

determining to update the record based at least in part on authenticating the identity of the first user.

7. The method of claim 6 , further comprising:

authenticating an identity of a second user of the second device;

determining that the first data indicates the second user is authorized to access the first peripheral device; and

sending the second indication to the second device based at least in part on the first data indicating the second user is authorized to access the first peripheral device.

8. The method of claim 1 , further comprising:

based at least in part on receipt of the first request, enabling streaming of data between a driver for the first peripheral device and the communication channel to direct the first peripheral device to the second device so that the first peripheral device operates as a virtual device of the second device, wherein the first device includes the driver.

9. The method of claim 8 , wherein the communication channel comprises a peer-to-peer connection between the second device and the first device.

10. The method of claim 9 , wherein causing the communication channel to be established further comprises:

causing the peer-to-peer connection to be established using an RTCPeer Connection application programming interface (API) of WebRTC.

11. The method of claim 10 , further comprising:

enabling streaming of data between the driver and the peer-to-peer connection comprises using an RTCDataChannel application programming interface (API) of WebRTC to stream data between the driver and the peer-to-peer connection.

12. The method of claim 1 , further comprising:

in response to receiving the first request, sending a second request for a first user who selected the at least one first user interface element to authorize access to the first peripheral device by a second user who selected the at least one second user interface element; and

receiving a third indication that the first user has authorized access to the first peripheral device by the second user;

wherein causing the communication channel to be established between the second device and the first device is further based at least in part on the third indication.

13. A system comprising a first device, a first peripheral device associated with the first device, and a computing system, the system including:

at least one first processor;

at least one first computer-readable medium encoded with instructions which, when executed by the at least one first processor, cause the first device to:

present at least one first user interface element that can be selected to indicate that a first peripheral device is to be made available for sharing, the at least one first user interface element identifying the first peripheral device,

detect selection of the at least one first user interface element,

send, to the computing system, a first indication that the at least one first user interface element has been selected, and

communicate data between the first peripheral device and a second device via a communication channel;

at least one second processor; and

at least one second computer-readable medium encoded with instructions which, when executed by the at least one second processor, cause the computing system to:

receive, from the second device, a first request to access the first peripheral device, and

based at least in part on receipt of the first request, cause the communication channel to be established between the first device and the second device by sending real-time communications (RTC) instructions to the second device, the RTC instructions including an identifier of the first peripheral device, a network address of the first device associated with the first peripheral device, and a network address for an RTC service.

14. The system of claim 13 , wherein the communication channel comprises a peer-to-peer connection between the first device and the second device.

15. The system of claim 14 , wherein the network address of the first device comprises a first internet protocol (IP) address to which the second device can direct first messages over the peer-to-peer connection, the at least one second computer-readable medium is encoded with additional instructions which, when executed by the at least one second processor, further cause the computing system to:

receive, from the second device, a second IP address associated with the second device; and

send, to the first device, the second IP address to enable the first device to send second messages to the second device over the peer-to-peer connection.

16. The system of claim 15 , wherein the at least one first computer-readable medium is encoded with additional instructions which, when executed by the at least one first processor, further cause the first device to:

determine first information identifying data handling capabilities of the first device; send the first information to the computing system; and

receive, from the computing system, second information identifying data handling capabilities of the second device;

wherein the first messages are formatted in accordance with the first information, and the second messages are formatted in accordance with the second information.

17. The system of claim 13 , wherein the first device includes a driver for the first peripheral device, and the at least one first computer-readable medium is further encoded with additional instructions which, when executed by the at least one first processor, further cause the first device to:

enable streaming of data between the driver and the communication channel to direct the first peripheral device to the second device so that the first peripheral device operates as a virtual device of the second device.

18. The system of claim 17 , wherein the communication channel comprises a peer-to-peer connection between the first device and the second device.

19. The system of claim 18 , wherein the at least one first computer-readable medium is encoded with additional instructions which, when executed by the at least one first processor, further cause the first device to enable streaming of data between the driver and the communication channel at least in part by:

using an RTCDataChannel application programming interface (API) of WebRTC to stream data between the driver and the peer-to-peer connection.

20. The system of claim 13 , further comprising:

at least one third processor; and

at least one third computer-readable medium encoded with instructions which, when executed by the at least one third processor, cause the second device to:

present at least one second user interface element that can be selected to request access to the first peripheral device,

send, to the computing system, a third indication that the at least one second user interface element has been selected,

after sending the third indication, establish the communication channel between the first device and the second device, and

communicate with the first peripheral device over the communication channel.

21. The system of claim 20 , wherein the communication channel comprises a peer-to-peer connection between the first device and the second device.

22. The system of claim 21 , wherein the at least one third computer-readable medium is encoded with additional instructions which, when executed by the at least one third processor, further cause the second device to:

use an RTCPeerConnection application programming interface (API) of WebRTC to determine network configuration information for the peer-to-peer connection.

23. The system of claim 13 , wherein:

the at least one first computer-readable medium is encoded with additional instructions which, when executed by the at least one first processor, further cause the first device to:

output a request for a first user of the first device to authorize access to the first peripheral device by a second user of the second device, and

send, to the computing system, a third indication that the first user has authorized access to the first peripheral device by the second user; and

the at least one second computer-readable medium is encoded with additional instructions which, when executed by the at least one second processor, further cause the computing system to:

cause the communication channel to be established between the first device and the second device based at least in part on the third indication.

24. A computing system, comprising:

at least one processor; and

at least one computer-readable medium encoded with instructions which, when executed by the at least one processor, cause the computing system to:

receive, from a first device, a first indication that a first peripheral device associated with the first device is to be made available for sharing, wherein the first indication is indicative of at least one first user interface element presented on the first device having been selected, the at least one first user interface element identifying the first peripheral device;

send, to a second device and based at least in part on receipt of the first indication, a second indication that the first peripheral device is available for sharing, wherein the second indication is configured to cause the second device to present at least one second user interface element that can be selected to request access to the first peripheral device;

receive, from the second device, a first request to access the first peripheral device, wherein the first request is indicative of the at least one second user interface element having been selected; and

based at least in part on receipt of the first request, cause a communication channel to be established between the second device and the first device by sending real-time communication (RTC) instructions to the second device, the RTC instructions including an identifier of the first peripheral device, a network address of the first device associated with the first peripheral device, and a network address for an RTC service, the communication channel enabling communication between the second device and the first peripheral device.

Assignments (9)
PATENT SECURITY AGREEMENT Recorded Aug 15, 2025
From: CLOUD SOFTWARE GROUP, INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 072488/0172 →
SECURITY INTEREST Recorded May 24, 2024
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 067662/0568 →
PATENT SECURITY AGREEMENT Recorded Apr 14, 2023
From: CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.); CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 063340/0164 →
RELEASE AND REASSIGNMENT OF SECURITY INTEREST IN PATENT (REEL/FRAME 062113/0001) Recorded Apr 14, 2023
From: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
To: CITRIX SYSTEMS, INC.; CLOUD SOFTWARE GROUP, INC. (F/K/A TIBCO SOFTWARE INC.)
Reel/Frame 063339/0525 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 062112/0262 →
PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 062113/0470 →
SECOND LIEN PATENT SECURITY AGREEMENT Recorded Oct 7, 2022
From: TIBCO SOFTWARE INC.; CITRIX SYSTEMS, INC.
To: GOLDMAN SACHS BANK USA, AS COLLATERAL AGENT
Reel/Frame 062113/0001 →
SECURITY INTEREST Recorded Sep 30, 2022
From: CITRIX SYSTEMS, INC.
To: WILMINGTON TRUST, NATIONAL ASSOCIATION
Reel/Frame 062079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 27, 2019
From: YU, YEDONG; HONG, JIANDONG; YAO, YAJUN; REN, MINGMING; ZHANG, YUAN; CHEN, JUANJUAN; ZHU, QIAOFEI
To: CITRIX SYSTEMS, INC.
Reel/Frame 050512/0973 →
Continuity (2)
Continuation PCTCN2019105057 · Sep 10, 2019
Related Publication 20210075841A1 · Mar 11, 2021
Cited By (2)
US 12,210,643 US 12,362,947