# US 8,789,070 B2 · Local device virtualization

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,789,070 B2
- Document ID: US8789070B2
- Status: Granted
- Kind: B2
- Application number: 11/952,071
- Filed: 2007-12-06
- Published: 2009-06-11
- Granted: 2014-07-22
- Earliest claimed: 2007-12-06
- Assignees: Wyse Technology L.L.C.
- Applicants: Daniel Ernesto Barreto; Shishuang Wang; Jayadev Marulappa Niranjanmurthy; Sriranga Seetharamaiah
- Inventors: Daniel Ernesto Barreto; Shishuang Wang; Jayadev Marulappa Niranjanmurthy; Sriranga Seetharamaiah
- Web page: https://patentgrep.com/patent/US8789070B2

## CPC

- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system for virtualization of a local device includes a proxy configured to report, to a remote system, a status of a local Universal Serial Bus (“USB”) device of the system, and to receive a transaction request designated for the local device from the remote system. The system further includes a generic device driver configured to receive the transaction request for the local device, and to provide a result of the transaction request. The proxy is further configured to provide the result of the transaction request to the remote system. The local device is remote to the remote system, which is configured to include a device-specific driver for the local device. A system for utilizing a local device of a remote system is also provided. The system may include an agent and a virtual bus driver. Methods and machine-readable media are also provided.

## Claims

### Claim 1

A computing device for virtualization of a Universal Serial Bus (“USB”) device when the USB device is physically coupled to the computing device, comprising:
a processor;
a memory coupled to the processor, the memory storing computer-executable instructions, the instructions when executed by the processor, including instructions to execute at least a portion of a first operating system;
a proxy to:
report a status of the USB device to a remote system, wherein the remote system is accessible to the computing device using a socket connection and is executing a second operating system different from the first operating system;
receive, from the remote system, a transaction request designated for the USB device in a second form compatible with the second operating system, wherein the transaction request corresponds to a command for the USB device;
translate the transaction request from the second form into a first form compatible with the first operating system;
receive a result of the transaction request in the first form, wherein the result corresponds to an executed command for the USB device;
translate the result of the transaction request from the first form into the second form; and
provide the translated result in the second form to the remote system; and
a generic device driver to:
operate with different USB devices including the USB device;
assign priorities to the different USB devices based on data paths;
receive the translated transaction request for the USB device from the proxy;
control the USB device;
receive the result of the transaction request in the first form from a device bus driver; and
provide the result of the transaction request in the first form to the proxy; and
wherein the generic device driver is native to the first operating system, and
wherein the remote system comprises a device-specific driver for the USB device.

### Claim 2 (depends on 1)

The computing device of claim 1, wherein the computing device translating the result includes at least one of the proxy and the generic device driver translating the result.

### Claim 3 (depends on 1)

The computing device of claim 1, further comprising the device bus driver to:
receive the transaction request from the generic device driver;
provide the transaction request to the USB device;
receive the result from the USB device; and
provide the result to the generic device driver.

### Claim 4 (depends on 1)

The computing device of claim 1, wherein the device bus driver:
is operable with the first operating system and not operable with the second operating system; and
is operable with a first type of communications protocol wherein the USB device and a second local device utilize the first type of communications protocol,
wherein the generic device driver is operable with the first operating system and not operable with the second operating system.

### Claim 5 (depends on 1)

The computing device of claim 1, wherein the status of the USB device includes whether the local USB device is connected to the computing device.

### Claim 6 (depends on 1)

The computing device of claim 1, wherein the status of the USB device includes identifying information about the USB device.

### Claim 7 (depends on 1)

The computing device of claim 1, wherein the remote system comprises a virtual device bus driver, an agent, and a processor.

### Claim 8 (depends on 1)

The computing device of claim 1, wherein at least one of the transaction request and the result is encrypted.

### Claim 9

A computing device for utilizing a Universal Serial Bus (“USB”) device when the USB device is physically coupled to a remote system, comprising:
a processor;
a memory coupled to the processor, the memory storing computer-executable instructions, the instructions when executed by the processor, including instructions to execute at least a portion of a first operating system;
a virtual device bus driver to:
receive a transaction request, the transaction request designated for the USB device at the remote system, the transaction request corresponding to a command for the USB device; and
receive a result of the transaction request corresponding to an executed command of the USB device;
an agent to:
receive a notification that the USB device is connected to the remote system;
receive the transaction request;
forward the transaction request to the remote system;
receive, from the remote system, a result of the transaction request, the result corresponding to the executed command of the USB device; and
provide the result of the transaction request; and
a device-specific driver specific to the USB device,
wherein the computing device executes the first operating system and the remote system executes a second operating system different from the first operating system, wherein the remote system is accessible to the computing device using a socket connection, and wherein the remote system comprising:
a proxy to:
report a status of the USB device to the computing device;
receive, from the computing device, the transaction request in a first form compatible with the first operating system;
translate the transaction request from the first form into a second form compatible with the second operating system;
receive the result of the transaction request in the second form;
translate the result of the transaction request from the second form into the first form; and
provide the translated result in the first form to the computing device; and
a generic device driver native to the second operating system to:
operate with different USB devices including the USB device;
assign priorities to the different USB devices based on data paths;
receive the translated transaction request for the USB device from the proxy;
control the USB device;
receive the result of the transaction request in the second form from a device bus driver; and
provide the result of the transaction request in the second form to the proxy.

### Claim 10 (depends on 9)

The computing device of claim 9, wherein the virtual device bus driver accepts transaction requests from other device-specific drivers.

### Claim 11 (depends on 9)

The computing device of claim 9, wherein the agent receives identifying information about the USB device from the remote system.

### Claim 12 (depends on 11)

The computing device of claim 11, wherein the computing device loads the device-specific driver based on the identifying information about the USB device.

### Claim 13 (depends on 9)

The computing device of claim 9, wherein the virtual device bus driver is to:
receive the notification from the agent;
provide the notification to the first operating system;
receive the transaction request from the device-specific driver;
receive the result from the agent; and
provide the result to the device-specific driver,
wherein the agent receives the notification from the remote system, and receives the transaction request from the virtual device bus driver.

### Claim 14 (depends on 9)

The computing device of claim 9, wherein the device-specific driver translates a transaction with the USB device to a transaction request understandable by the USB device.

### Claim 15 (depends on 9)

The computing device of claim 9, wherein at least one of the transaction request and the result is encrypted.

### Claim 16 (depends on 9)

The system of claim 9, wherein the virtual device bus driver is further to wait to receive the result of the at least one transaction request.

### Claim 17

A method for virtualization of a local device, comprising:
reporting, using a proxy of a local system, to a remote system, a status of a local device when the local device is physically connected to the local system, the remote system accessible to the local system using a socket connection, wherein the local system executes a first operating system and the remote system executes a second operating system different from the first operating system;
receiving, using the proxy, at least one transaction request in a second form compatible with the second operating system designated for the local device from the remote system, the at least one transaction request corresponding to a command for the local device;
translating, using the proxy, the at least one transaction request from the second form into a first form compatible with the first operating system;
receiving, using a generic device driver of the local system, the at least one translated transaction request from the proxy, wherein the generic device driver is native to the first operating system;
controlling, using the generic device driver, the local device;
receiving, using the generic device driver, a result of the at least one transaction request in the first form from a device bus driver, the result of the at least one transaction request corresponding to an executed command of the local device;
receiving, using the proxy, the result of the at least one transaction request in the first form from the generic device driver
translating, using the proxy, the result of the at least one transaction request from the first form compatible with the first operating system into the second form that is compatible with the second operating system; and
transmitting, using the proxy, the translated result in the second form to the remote system,
wherein the generic device driver operates with different local devices including the local device and assigns priorities to the different local devices based on data paths, and
wherein the remote system comprises a device-specific driver for the local device.

### Claim 18 (depends on 17)

The method of claim 17, wherein the local device is a Universal Serial Bus device.

### Claim 19 (depends on 17)

The method of claim 17, further comprising translating the at least one transaction request from the second form compatible with the second operating system into the first form that is compatible with the first operating system.

### Claim 20 (depends on 17)

The method of claim 17, wherein the device bus driver is operable with the first operating system and not operable with the second operating system, wherein the device bus driver is operable with a first type of communications protocol, and wherein the local device and a second local device utilize the first type of communications protocol,
wherein the generic device driver is operable with the first operating system and not operable with the second operating system.

### Claim 21 (depends on 17)

The method of claim 17, wherein the status of the local device includes whether the local device is connected to the local system.

### Claim 22 (depends on 17)

The method of claim 17, wherein the status of the local device includes identifying information about the local device.

### Claim 23 (depends on 17)

The method of claim 17, wherein the local system is a computer comprising a processor, and wherein the remote system comprises a virtual device bus driver, an agent and a processor.

### Claim 24 (depends on 17)

The method of claim 17, further comprising encrypting at least one of the at least one transaction request and the result of the at least one transaction request.

### Claim 25

A method for utilizing a device when the device is connected to a remote system, comprising:
receiving a notification from a proxy of a remote system that a device is connected to the remote system accessible using a socket connection;
loading a device-specific driver for the device;
accepting at least one transaction request using the device-specific driver, the at least one transaction request designated for the device and corresponding to a command for the device;
executing a first operating system;
sending the at least one transaction request to the remote system in a first form compatible with the first operating system, wherein the remote system executes a second operating system different from the first operating system;
receiving, using the proxy, the at least one transaction request in the first form;
translating, using the proxy, the at least one transaction request from the first form into a second form that is compatible with the second operating system;
receiving, using a generic device driver of the remote system, the at least one translated transaction request from the proxy, wherein the generic device driver is native to the second operating system;
controlling, using the generic device driver, the device;
receiving, using the generic device driver, a result of the at least one transaction request in the second form from a device bus driver, the result of the at least one transaction request corresponding to an executed command of the device;
receiving, using the proxy, the result of the at least one transaction request in the second form from the generic device driver;
translating, using the proxy, the result of the at least one transaction request from the second form into the first form;
transmitting, using the proxy, the translated result in the first form; and
receiving, from the proxy of the remote system, the result of the at least one transaction request,
wherein the generic device driver operates with different devices including the device and assigns priorities to the different devices based on data paths.

### Claim 26 (depends on 25)

The method of claim 25, wherein the device is a Universal Serial Bus device.

### Claim 27 (depends on 25)

The method of claim 25, wherein the remote system is configured to translate the result of the at least one transaction request from the second form compatible with the second operating system into the first form compatible with the first operating system.

### Claim 28 (depends on 25)

The method of claim 25, wherein the step of accepting at least one transaction request from the device-specific driver comprises accepting the at least one transaction request using a virtual device bus driver, the virtual device bus driver configured to accept transaction requests from other device-specific drivers.

### Claim 29 (depends on 25)

The method of claim 25, further comprising:
receiving identifying information about the device from the remote system.

### Claim 30 (depends on 29)

The method of claim 29, wherein the step of loading a device-specific driver for the device connected to the remote system is based on the identifying information about the local device.

### Claim 31 (depends on 25)

The method of claim 25, further comprising encrypting at least one of the at least one transaction request and the result of the at least one transaction request.

### Claim 32 (depends on 25)

The method of claim 25, further comprising waiting for the result of the at least one transaction request, prior to receiving the result of the at least one transaction request.

### Claim 33

A non-transitory machine-readable medium encoded with instructions executable by a processor to perform a method for virtualization of a local device, the method comprising:
reporting, using a proxy of a local system, to a remote system, a status of a local device when the local device is physically connected to the local system that includes the processor, the remote system accessible to the local system using a socket connection, wherein the local system executes a first operating system and the remote system executes a second operating system different from the first operating system;
receiving, using the proxy of the local system, at least one transaction request in a second form compatible with the second operating system designated for the local device from the remote system, the at least one transaction request corresponding to a command for the local device;
translating, using the proxy, the at least one transaction request from the second form into a first form compatible with the first operating system;
receiving, using a generic device driver of the local system, the at least one translated transaction request from the proxy, wherein the generic device driver is native to the first operating system;
controlling, using the generic device driver, the local device;
receiving, using the generic device driver, a result of the at least one transaction request in the first form from a device bus driver, the result of the at least one transaction request corresponding to an executed command of the local device;
receiving, using the proxy, the result of the at least one transaction request in the first form from the generic device driver
translating, using the proxy, the result of the at least one transaction request from the first form compatible with the first operating system into the second form that is compatible with the second operating system; and
transmitting, using the proxy, the translated result in the second form to the remote system,
wherein the generic device driver operates with different local devices including the local device and assigns priorities to the different local devices based on data paths, and
wherein the remote system comprises a device-specific driver for the local device.

### Claim 34 (depends on 33)

The non-transitory machine-readable medium of claim 33, wherein the local device is a Universal Serial Bus device.

### Claim 35 (depends on 33)

The non-transitory machine-readable medium of claim 33, wherein the method further comprises translating the at least one transaction request from the second form compatible with the second operating system into the first form that is compatible with the first operating system.

### Claim 36 (depends on 33)

The non-transitory machine-readable medium of claim 33, wherein the device bus driver is operable with the first operating system and not operable with the second operating system, wherein the device bus driver is operable with a first type of communications protocol, and wherein the local device and a second local device utilize the first type of communications protocol,
wherein the generic device driver is operable with the first operating system and not operable with the second operating system.

### Claim 37 (depends on 33)

The non-transitory machine-readable medium of claim 33, wherein the status of the local device includes whether the local device is connected to the local system.

### Claim 38 (depends on 33)

The non-transitory machine-readable medium of claim 33, wherein the status of the local device includes identifying information about the local device.

### Claim 39 (depends on 33)

The non-transitory machine-readable medium of claim 33, wherein the local system is a computer comprising the processor, and wherein the remote system comprises a virtual device bus driver, an agent, and a processor.

### Claim 40 (depends on 33)

The non-transitory machine-readable medium of claim 33, wherein the method further comprises encrypting at least one of the at least one transaction request and the result of the at least one transaction request.

### Claim 41

A non-transitory machine-readable medium encoded with instructions executable by a processor to perform a method for utilizing a device when the device is connected to a remote system, the method comprising:
receiving a notification from a proxy of a remote system that a device is connected to the remote system accessible using a socket connection;
loading a device-specific driver for the device;
accepting at least one transaction request using the device-specific driver, the at least one transaction request designated for the device and corresponding to a command for the device;
executing, using the processor, a first operating system;
sending the at least one transaction request to the remote system in a first form compatible with the first operating system, wherein the remote system executes a second operating system different from the first operating system;
receiving, using the proxy, the at least one transaction request in the first form;
translating, using the proxy, the at least one transaction request from the first form into a second form that is compatible with the second operating system;
receiving, using a generic device driver of the remote system, the at least one translated transaction request from the proxy, wherein the generic device driver is native to the second operating system;
controlling, using the generic device driver, the device;
receiving, using the generic device driver, a result of the at least one transaction request in the second form from a device bus driver, the result of the at least one transaction request corresponding to an executed command of the device;
receiving, using the proxy, the result of the at least one transaction request in the second form from the generic device driver;
translating, using the proxy, the result of the at least one transaction request from the second form into the first form;
transmitting, using the proxy, the translated result in the first form; and
receiving, from the proxy of the remote system, the result of the at least one transaction request,
wherein the generic device driver operates with different devices including the device and assigns priorities to the different devices based on data paths.

### Claim 42 (depends on 41)

The non-transitory machine-readable medium of claim 41, wherein the device is a Universal Serial Bus device.

### Claim 43 (depends on 41)

The non-transitory machine-readable medium of claim 41, wherein the remote system is configured to translate the result of at least one transaction request from the second form compatible with the second operating system into the first form compatible with the first operating system.

### Claim 44 (depends on 41)

The non-transitory machine-readable medium of claim 41, wherein the step of accepting at least one transaction request from the device-specific driver comprises accepting the at least one transaction request using a virtual device bus driver, the virtual device bus driver configured to accept transaction requests from other device-specific drivers.

### Claim 45 (depends on 41)

The non-transitory machine-readable medium of claim 41, wherein the method further comprises:
receiving identifying information about the device from the remote system.

### Claim 46 (depends on 45)

The non-transitory machine-readable medium of claim 45, wherein the step of loading a device-specific driver for the device connected to the remote system is based on the identifying information about the local device.

### Claim 47 (depends on 41)

The non-transitory machine-readable medium of claim 41, wherein the step of receiving a notification that a device is locally connected to a remote system is performed using an agent,
wherein the step of accepting at least one transaction request from the device-specific driver is performed using a virtual device bus driver,
wherein the step of receiving, from the remote system, a result of the at least one transaction request is performed using the agent,
wherein the step of providing the result of the at least one transaction request to the device-specific driver is performed using the virtual device bus driver, and
wherein the method further comprises:
receiving, using the virtual device bus driver, the notification from the agent;
providing, using the virtual device bus driver, the notification to an operating system of the system;
receiving, using the agent, the at least one transaction request from the virtual device bus driver;
receiving, using the virtual device bus driver, the result of the at least one transaction request from the agent.

### Claim 48 (depends on 41)

The non-transitory machine-readable medium of claim 41, wherein the method further comprises encrypting at least one of the at least one transaction request and the result of the at least one transaction request.

### Claim 49 (depends on 41)

The non-transitory machine-readable medium of claim 41, wherein the method further comprises waiting for the result of the at least one transaction request, prior to receiving the result of the at least one transaction request.
