IP Library › Granted Patent US 10,798,201
Granted Patent B2
US 10,798,201 · App. 16/267,149 · Granted Oct 6, 2020

Redirecting USB devices via a browser-based virtual desktop infrastructure application

Inventors: Gokul Thiruchengode Vajravel (Bengaluru, IN); Sandeep KS (Thodupuzha, IN)
Assignee: Dell Products L.P.
H04L67/2814G06F9/452G06F13/382H04L67/42G06F9/541G06F2213/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,798,201
App. No.
16/267,149
Filed
Feb 4, 2019
Granted
Oct 6, 2020
Kind
B2
Art Unit
2453
USPC
709/219
Abstract

USB devices can be redirected via a browser-based virtual desktop infrastructure (VDI) application. To enable redirection of USB devices even when native drivers cannot be installed on the client terminal, the browser-based VDI application can include a proxy that employs a suitable API to access the USB device. The proxy can function as an intermediary for adapting the representation of the USB device that exists within the browser to the USB request block (URB) data structures by which the server-side components communicate with USB devices.

Claims (49)

1. A method, performed by a proxy of a virtual desktop infrastructure (VDI) application that executes within a browser on a client terminal, for redirecting a USB device that is connected to the client terminal to enable the USB device to be accessed in a remote session on a server, the method comprising:

receiving, by the proxy and from an agent that executes on the server, a first USB request block (URB);

evaluating contents of the first URB to determine a USB function that the first URB defines and a handle that defines a target of the USB function;

determining that the handle is associated with a browser-based representation of a first USB device that is connected to the client terminal; and

invoking a function of the browser-based representation of the first USB device, the function corresponding to the USB function defined in the first URB.

2. The method of claim 1 , further comprising:

obtaining, from the browser-based representation of the first USB device, data that was returned by the first USB device as a result of invoking the function of the browser-based representation of the first USB device;

generating a second URB that defines the USB function and the handle;

populating a payload of the second URB with the data; and

sending the second URB to the agent.

3. The method of claim 2 , wherein the first URB is received and the second URB is sent using the Web Socket protocol.

4. The method of claim 1 , wherein the handle is a pipe handle.

5. The method of claim 4 , wherein the USB function is a request to read data from or write data to the first USB device.

6. The method of claim 4 , wherein determining that the pipe handle is associated with the browser-based representation of the first USB device comprises accessing a data structure which defines mappings between pipe handles and endpoint numbers defined in the browser-based representation of the first USB device.

7. The method of claim 1 , wherein the handle is a device handle.

8. The method of claim 7 , wherein the USB function is a request to select a configuration of the first USB device.

9. The method of claim 7 , wherein determining that the device handle is associated with the browser-based representation of the first USB device comprises accessing a data structure which maps the device handle to the browser-based representation of the first USB device.

10. The method of claim 1 , wherein invoking the function of the browser-based representation of the first USB device comprises invoking a function of the WebUSB API.

11. The method of claim 1 , wherein the browser-based representation of the first USB device includes at least one configuration of the first USB device, at least one interface for each configuration and at least one endpoint for each interface, wherein the method further comprises:

creating and mapping a unique identifier to each endpoint included in the browser-based representation; and

employing the unique identifiers as pipe handles in URBs that are sent to the agent.

12. The method of claim 11 , further comprising:

creating and mapping a unique identifier to each interface and configuration;

employing each unique identifier that is mapped to an interface as an interface handle in URBs that are sent to the agent; and

employing each unique identifier that is mapped to a configuration as a configuration handle in URBs that are sent to the agent.

13. A method, performed by a proxy of a virtual desktop infrastructure (VDI) application that executes within a browser on a client terminal, for redirecting a USB device that is connected to the client terminal to enable the USB device to be accessed in a remote session on a server, the method comprising:

obtaining, from a browser-based representation of a first USB device that is connected to the client terminal, descriptors of the first USB device, the descriptors including a device descriptor, at least one configuration descriptor, at least one interface descriptor and at least one endpoint descriptor, each endpoint descriptor defining an endpoint of the first USB device;

creating a data structure that maps a unique identifier to each endpoint defined in the browser-based representation of the first USB device;

receiving, from an agent that executes on the server, a first USB request block (URB);

evaluating contents of the first URB to determine a USB function that the first URB defines and a pipe handle that defines an endpoint to which the USB function is directed;

accessing the data structure to determine that the pipe handle matches the unique identifier that is mapped to a first endpoint defined in in the browser-based representation of the first USB device; and

invoking a function of the browser-based representation of the first USB device, the function corresponding to the USB function defined in the first URB.

14. The method of claim 13 , further comprising:

sending each unique identifier to the agent to enable client drivers on the server to employ each unique identifier as a pipe handle in URBs.

15. The method of claim 14 , wherein sending each unique identifier to the agent comprises sending one or more URBs to the agent that include each unique identifier.

16. The method of claim 13 , wherein the data structure also maps unique identifiers to each interface and each configuration, wherein the method further comprises:

sending each unique identifier that is mapped to an interface and each unique identifier that is mapped to a configuration to the agent to enable client drivers on the server to employ the unique identifiers as interface handles and configuration handles respectively in URBs.

17. The method of claim 13 , wherein the browser-based representation of the first USB device is a USBDevice object provided by the WebUSB API.

18. The method of claim 13 , wherein the USB function defined in the first URB is a request to read data from the first USB device, wherein the method further comprises:

generating a second URB that defines the USB function and includes the pipe handle;

populating a payload of the second URB with data obtained from the invocation of the function of the browser-based representation of the first USB device; and

sending the second URB to the agent.

19. One or more computer storage media storing computer executable instructions which when executed in a browser on a client terminal implement a proxy of a virtual desktop infrastructure (VDI) application, the proxy being configured to perform a method for redirecting a USB device that is connected to the client terminal to enable the USB device to be accessed in a remote session on a server, the method comprising:

receiving, by the proxy and from an agent that executes on the server, a first USB request block (URB);

evaluating contents of the first URB to determine a USB function that the first URB defines;

determining that the first URB is associated with a browser-based representation of a first USB device that is connected to the client terminal;

invoking a function of the browser-based representation of the first USB device, the function corresponding to the USB function defined in the first URB; and

sending a second URB to the agent, the second URB including data obtained from the first USB device by invoking the function of the browser-based representation of the first USB device.

20. The computer storage media of claim 19 , wherein determining that the first URB is associated with the browser-based representation of the first USB device comprises determining that the first URB includes a handle that is mapped to an element of the browser-based representation of the first USB device.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (050724/0466) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 060753/0486 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST AT REEL 050405 FRAME 0534 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058001/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
PATENT SECURITY AGREEMENT (NOTES) Recorded Oct 15, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 050724/0466 →
SECURITY AGREEMENT Recorded Sep 17, 2019
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 050405/0534 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 5, 2019
From: VAJRAVEL, GOKUL THIRUCHENGODE; KS, SANDEEP
To: DELL PRODUCTS L.P.
Reel/Frame 048239/0272 →
Continuity (1)
Related Publication 20200252472A1 · Aug 6, 2020