Method and system for controlling transmission of USB messages over a data network between a USB device and a plurality of host computers
A solution is provided for controlling universal serial bus (USB) messages between a plurality of host computers and a USB device. First and second USB servers may communicate with first and second host computers, respectively. A USB client may then communicate with the USB device. A first control path between the USB client and the first USB server and a second control path between the USB client and the second USB server may be established. Then a first data transfer path may be established between the USB client and the first USB server, the first data transfer path enabling the sending of data between the USB client and the first USB server over a data network. Then a busy message may be sent from the USB client to the second USB server over the second control path when the first data transfer path is established with the first USB server.
Latest Cisco Technology, Inc. Patents:
The present application relates to commonly assigned, copending U.S. Patent Application, filed concurrently herewith, for METHOD AND SYSTEM FOR SENDING AND RECEIVING USB MESSAGES OVER A DATA NETWORK Ser. No. 11/006,988. The disclosure of the above-listed application is incorporated herein by reference in its entirety for all purposes.
BACKGROUND OF THE INVENTION1. Field of the Invention
The present invention relates generally to transmission of USB messages. More particularly, the present invention relates to controlling the transmission of USB messages over a data network between a USB device and a plurality of host computers.
2. Description of the Related Art
Universal Serial Bus (“USB”) has become a standard for connecting peripherals to computers. Most computers have USB ports allowing the connection of USB-enabled peripherals such as mice, keyboards, printers, scanners, digital cameras, webcams, modems, speakers, telephones, storage devices, flash card readers, network interfaces, and other devices. One benefit of USB is that any USB-enabled device (“USB device”) can be connected to its host computer using the same, standardized USB connection.
Regardless of the particular USB device, the USB device can be plugged into the host computer simply by connecting a USB cable between the device and the host computer. When the USB device is connected, the operating system of the host computer can often automatically detect it. Driver software can be easily installed on the host computer to interact with the USB device.
For host computers with fewer USB ports than desired USB devices, a USB hub can be connected to provide additional USB connections. Conventional USB hubs, such as a 4-port hub, can be plugged into the USB port on the host computer, enabling the connection of 4 USB devices to the single USB host port. USB hubs can be chained together to provide additional USB ports as desired and share the bandwidth available on the root port.
There are generally four types or modes of data transfer that can occur between the USB device and the computer: (1) Control, (2) Interrupt, (3) Bulk and (4) Isochronous. Control mode is used to enumerate (identify) a device and is often used for out of band device control such as accessing control registers on the device. Interrupt mode can be used for a device such as a mouse or keyboard that sends data at a lower bandwidth and speed. Bulk mode is used for devices such as printers which receive data in larger packets. In one example, a block of data is sent to the printer in 64-byte packets. Isochronous mode is used for streaming devices such as speakers. Data streams between the USB device and the computer.
A USB cable connects a USB device and host computer in a point-to-point manner. The USB cable limits the physical distance and connectivity between a USB device and the host. Individual USB cables are generally manufactured in lengths on the order of several meters. With USB hubs, USB devices can be connected to a host computer up to about 30 meters away from the host. However, the distance between the USB device and the host it communicates with is still limited to the physical distance of the USB cables and hubs.
Because of the physical limitation of the USB cable, attempts to connect USB devices remotely with respect to a host have been problematic. One example of a USB device which has not been effectively connected to the host as a remote device is a USB-enabled multi-function printer. Print servers exist that use an LPR protocol and provide an Ethernet connection to the printer. However, many print servers preclude the bi-directional protocol of the multi-function printer. The print server only provides the print function of the printer and eliminates the enhanced functions of the printer. Also, when the host computer is connected by virtual private network (VPN) in a corporate environment, the Ethernet enabled printer is not available to print from the host computer. In the past, the only way to access the multiple functions of the printer was to disconnect the printer from the VPN and connect the printer to the host computer by a USB cable. Then, to access the printer via the VPN, the printer had to be disconnected from USB and re-connected to the VPN.
With the advent of multiple hosts, it is desirable to share common peripherals. However, an additional limitation of USB is the inability to share USB devices among two or more hosts. Conventional techniques for connecting USB devices to hosts have only provided for one-to-one connections: one USB device to one host. Logical sharing of USB devices among two or more hosts has not been possible. The only way to arguably share a USB device has been is in the physical sense—the USB cable connecting the USB device to a first host is physically unplugged from the first host, moved into the necessary proximity with a second host, and then plugged into the second host.
What is needed is a scheme for eliminating the physical distance limitation of USB, enabling the remote connection and communication of a USB device with a host, and enabling the sharing of a USB device or devices by multiple hosts.
SUMMARY OF THE INVENTIONAspects of the present invention relate to methods, computer program products, apparatus, and systems for controlling sending and receiving of universal serial bus (“USB”) messages between a plurality of host computers and a USB device over a data network. A first USB server is in communication with a first one of the host computers and the data network. A second USB server is in communication with a second one of the host computers and the data network. A USB client is in communication with the data network and the USB device. A first control path is established between the USB client and the first USB server, and a second control path is established between the USB client and the second USB server. A data transfer path is established between the USB client and the first USB server. The data transfer path enables sending of data between the USB client and the first USB server over the data network. A busy message is sent from the USB client to the second USB server over the second control path when the data transfer path is established with the first USB server.
Embodiments of the present invention enables remote connectivity of USB devices to a host computer or other data processing apparatus, regardless of the operating system on the computer, and regardless of the type of USB device (e.g., camera, printer, keyboard, flash card reader, media player). This host computer or apparatus has full access to a plurality of USB devices served on a data network. One embodiment of methods and apparatus of the present invention provides for a split software spoofing technique to implement a USB (“Universal Serial Bus”) system over a data network. The spoofing technique, described below, enables the USB system to appear to include a physical USB connection between a host computer and a USB device, when in fact the USB device is remotely connected to the host computer over the data network. Thus, the physical USB cable requirement and distance limitation associated with conventional USB cables can be eliminated.
One embodiment of methods and apparatus of the present invention further provides for the sharing of hosts or host computers by a remotely connected USB device. In some implementations, bulky or seldom used USB devices can be physically located in designated areas, and connected remotely to one or more host computers over the data network. The terms “host computer” and “host” are used interchangeably herein, generally referring to a computer or other data processing apparatus capable of interacting with a USB server using the methods and apparatus described below.
In
In
In
In
In one embodiment of the system 100 of
Embodiments of the present invention provide for different implementations of USB server 120 and USB clients such as USB client 140c. In one embodiment, as shown in
In an alternative embodiment shown in
In
Secondly, in
Fourth, in
In
In one embodiment, as shown in
Those skilled in the art will appreciate that the apparatus, modules and functions described above can be implemented with combinations of hardware and software. In one example, the USB server 120 includes a processor and a memory with instructions executable to perform the functions above. Similarly, the USB client can also have a processor and memory for performing its functions. Other hardware and software implementations of the USB server 120 and USB client are possible, as will be understood by those skilled in the art.
The system 100 of
In
In one embodiment, described with reference to
In
In
In
In USB server 120 of
In
The system 800 shown in
In
In
In
In
In
In
In
In
In
In
In
In
In some embodiments, programs for performing methods in accordance with exemplary embodiments of the invention are embodied as computer program products. These generally include a storage medium or media having instructions stored thereon used to program a computer to perform the methods described above. Examples of suitable storage medium or media include any type of disk including floppy disks, optical disks, DVDs, CD ROMs, magnetic optical disks, RAMs, EPROMs, EEPROMs, magnetic or optical cards, hard disk, flash card, smart card, and other media.
Stored on one or more of the computer readable media, the program includes software for controlling both the hardware of a general purpose or specialized computer or microprocessor. This software also enables the computer or microprocessor to interact with a human or other mechanism utilizing the results of exemplary embodiments of the invention. Such software includes, but is not limited to, device drivers, operating systems and user applications. Preferably, such computer readable media further include software for performing the methods described above.
In certain other embodiments, a program for performing an exemplary method of the invention or an aspect thereof is situated on a carrier wave such as an electronic signal transferred over a data network. Suitable networks include the Internet, a frame relay network, an ATM network, a wide area network (WAN), or a local area network (LAN). Those skilled in the art will recognize that merely transferring the program over the network, rather than executing the program on a computer system or other device, does not avoid the scope of the invention.
Embodiments of the invention, including the methods, apparatus, modules, adaptors, controllers, and functions described herein, can be implemented in digital electronic circuitry, or in computer hardware, firmware, software, or in combinations of them. For example, the USB server 120 can be constructed to include a processor, memory, and appropriate software for performing the methods and functions described above. The same is true for any of the USB clients. Apparatus embodiments of the invention can be implemented in a computer program product tangibly embodied in a machine-readable storage device for execution by a programmable processor; and method steps of the invention can be performed by a programmable processor executing a program of instructions to perform functions of the invention by operating on input data and generating output. Embodiments of the invention can be implemented advantageously in one or more computer programs that are executable on a programmable system including at least one programmable processor coupled to receive data and instructions from, and to transmit data and instructions to, a data storage system, at least one input device, and at least one output device. Each computer program can be implemented in a high-level procedural or object-oriented programming language, or in assembly or machine language if desired; and in any case, the language can be a compiled or interpreted language.
Although illustrative embodiments and applications of this invention are shown and described herein, many variations and modifications are possible which remain within the concept, scope, and spirit of the invention, and these variations would become clear to those of ordinary skill in the art after perusal of this application. Accordingly, the present embodiments are to be considered as illustrative and not restrictive, and the invention is not to be limited to the details given herein, but may be modified within the scope and equivalents of the appended claims.
Claims
1. A method for controlling sending and receiving of universal serial bus (“USB”) messages between a plurality of host computers and a USB device over an Ethernet data network, a first USB server in communication with a first one of the host computers and the Ethernet data network, a second USB server in communication with a second one of the host computers and the Ethernet data network, a USB client in communication with the Ethernet data network and the USB device, the method comprising the steps of:
- establishing a first control path between the USB client and the first USB server and a second control path between the USB client and the second USB server;
- configuring an association module in the USB client with a first association between the USB client and the first USB server and a second association between the USB client and the second USB server;
- establishing a first data transfer path between the USB client and the first USB server, the first data transfer path enabling sending of data between the USB client and the first USB server over the Ethernet data network; and
- sending a busy message from the USB client to the second USB server over the second control path when the first data transfer path is established with the first USB server.
2. The method of claim 1, wherein the step of establishing the first data transfer path between the USB client and the first USB server includes:
- sending a request message from the first USB server to the USB client over the first control path.
3. The method of claim 1, wherein the step of establishing the first data transfer path between the USB client and the first USB server includes:
- sending an acknowledge message from the USB client to the first USB server over the first control path.
4. The method of claim 1, further comprising the step of:
- sending a request message from the second USB server to the USB client over the second control path, the busy message being sent responsive to the request message.
5. The method of claim 1, further comprising the steps of:
- terminating the first data transfer path; and
- establishing a second data transfer path between the USB client and the second USB server, the second data transfer path enabling sending of data between the USB client and the second USB server over the data network.
6. The method of claim 5, wherein the step of terminating the first data transfer path includes:
- sending a complete message from the USB client to the first USB server over the first control path.
7. The method of claim 5, wherein the step of terminating the first data transfer path includes:
- sending a complete message from the first USB server to the USB client over the first control path.
8. The method of claim 5, wherein the step of establishing the second data transfer path between the USB client and the second USB server includes:
- sending an acknowledge message from the USB client to the second USB server over the second control path.
9. The method of claim 5, further comprising the step of:
- sending the busy message from the USB client to the first USB server over the first control path when the second data transfer path is established with the second USB server.
10. The method of claim 5, further comprising the step of:
- sending the busy message from the USB client to a third USB server over a third control path established between the USB client and the third USB server when the second data transfer path is established with the second USB server, the third USB server in communication with a third one of the host computers and the data network.
11. The method of claim 1, wherein the USB client is connected to a single USB device.
12. The method of claim 1, further comprising:
- finding a first USB server and a second USB server with which the USB client should associate.
13. The method of claim 12, wherein the finding includes:
- broadcasting to find the nearest USB server.
14. The method of claim 12, wherein the finding includes:
- retrieving stored data identifying a particular USB server with which the USB client should associate.
15. The method of claim 12, wherein the finding includes:
- receiving an identification of a USB server from a user in response to presenting the user with a user interface allowing selection of the USB server.
16. The method of claim 12, wherein the finding includes:
- receiving a selection of a USB server from a user through hardware settings.
17. A computer program product, stored on a processor readable medium, comprising instructions operable to cause a data processing apparatus to perform a method for controlling sending and receiving of universal serial bus (“USB”) messages between a plurality of host computers and a USB device over an Ethernet data network, a first USB server in communication with a first one of the host computers and the Ethernet data network, a second USB server in communication with a second one of the host computers and the Ethernet data network, a USB client in communication with the Ethernet data network and the USB device, the method comprising the steps of:
- establishing a first control path between the USB client and the first USB server and a second control path between the USB client and the second USB server;
- configuring an association module in the USB client with a first association between the USB client and the first USB server and a second association between the USB client and the second USB server;
- establishing a first data transfer path between the USB client and the first USB server, the first data transfer path enabling sending of data between the USB client and the first USB server over the Ethernet data network; and
- sending a busy message from the USB client to the second USB server over the second control path when the first data transfer path is established with the first USB server.
18. The computer program product of claim 17, wherein the USB client is connected to a single USB device.
19. A system for controlling sending and receiving of universal serial bus (“USB”) messages between a plurality of host computers and a USB device over a data network, the system comprising:
- a data network that comprises at least one of the Internet, an intranet, an extranet, a local area network, a wide area network, or a combination thereof;
- a first USB server in communication with the data network and a first one of the host computers, the first USB server having a first network address on the data network;
- a second USB server in communication with the data network and a second one of the host computers, the second USB server having a second network address on the data network; and
- a USB client in communication with the data network and the USB device, the USB client configured to: i) establish communications paths with the first and second USB servers, ii) configure an association module in the USB client with a first association between the USB client and the first USB server and a second association between the USB client and the second USB server; iii) establish a data transfer path with the first USB server, the data transfer path enabling passing data between the USB client and the first USB server over the data network, and iv) send a busy message to the second USB server over the communications path established with the second USB server when the data transfer path is established with the first USB server.
20. The system of claim 19, wherein the USB client sends the busy message to the second computer responsive to a request message received from the second computer over the communications path established with the second computer.
21. The system of claim 19, the USB client further configured to:
- iv) receive a USB message from the USB device, and
- v) translate the USB message to a network format suitable for sending over the data network.
22. The system of claim 21, wherein translating the USB message to the network format includes encapsulating the USB message in a network protocol.
23. The system of claim 21, the USB client further configured to:
- vi) send the translated USB message as a network message to the first USB server over the data transfer path.
24. The system of claim 19, the USB client further configured to:
- iv) receive a network message from the first USB server over the data transfer path,
- v) translate the network message to a USB format, and
- vi) provide the translated network message as a USB message for the USB device.
25. The system of claim 19, wherein the data network includes an Internet.
26. The system of claim 19, wherein the data network includes a wireless network.
27. The system of claim 19, wherein the USB client is connected to a single USB device.
28. A system for controlling sending and receiving of universal serial bus (“USB”) messages between a plurality of host computers and a USB device over an Ethernet data network, the system comprising:
- first USB server means in communication with the data network and a first one of the host computers, the first USB server means having a first network address on the Ethernet data network;
- second USB server means in communication with the data network and a second one of the host computers, the second USB server means having a second network address on the Ethernet data network; and
- a USB client in communication with the data network and the USB device, the USB client including: i) means for establishing communications paths with the first and second USB server means, ii) means for configuring an association module in the USB client with a first association between the USB client and the first USB server and a second association between the USB client and the second USB server; iii) means for establishing a data transfer path with the first USB server means, the data transfer path enabling passing data between the USB client and the first USB server means over the data network, and iv) means for sending a busy message to the second USB server means over the communications path established with the second USB server means when the data transfer path is established with the first USB server means.
29. The system of claim 28, wherein the USB client is connected to a single USB device.
30. A USB client apparatus for controlling sending and receiving of universal serial bus (“USB”) messages between a plurality of host computers and an associated client device over a data network, each host computer having an associated USB server in communication with the data network, the USB client apparatus comprising:
- a multi-host controller in communication with the data network, the multi-host controller configured to: i) establish communications paths with the USB servers, ii) configure an association module in the USB client with a first association between the USB client and the first USB server and a second association between the USB client and the second USB server; iii) establish a data transfer path with a first one of the USB servers, the data transfer path enabling the sending of data between the USB client and the first USB server over a data network, the data network consisting of the Internet, an intranet, an extranet, a local area network, a wide area network, or a combination thereof, and iv) send a busy message to a second one of the USB servers when the data transfer path is established with the first USB server.
31. The USB client apparatus of claim 30, further comprising:
- a USB device adaptor interfacing with the client device and configured to: i) receive a USB message from the client device, ii) translate the USB message to a network format suitable for sending over the data transfer path, iii) receive a network message from the data network, and iv) translate the network message to a USB format suitable for providing to the client device.
32. The USB client apparatus of claim 30, the USB client apparatus further comprising:
- a stream queue configured to store stream data for sending to or receiving from the data transfer path.
33. The USB client apparatus of claim 30, the multi-host controller further configured to:
- iv) send an acknowledge message to the first USB server over the communications path established with the first USB server.
34. The USB client apparatus of claim 33, the USB client apparatus further comprising:
- a message queue configured to store the busy and the acknowledge messages for sending to the data network.
35. The USB client apparatus of claim 30, wherein the USB client is connected to a single USB device.
4135240 | January 16, 1979 | Ritchie |
4835737 | May 30, 1989 | Herrig et al. |
5408627 | April 18, 1995 | Stirk et al. |
5416910 | May 16, 1995 | Moyer et al. |
5586033 | December 17, 1996 | Hall |
5655151 | August 5, 1997 | Bowes et al. |
5719961 | February 17, 1998 | Normile et al. |
5784393 | July 21, 1998 | Byers et al. |
6061746 | May 9, 2000 | Stanley et al. |
6141719 | October 31, 2000 | Rafferty et al. |
6182167 | January 30, 2001 | Basham et al. |
6308239 | October 23, 2001 | Osakada et al. |
6334121 | December 25, 2001 | Primeaux et al. |
6369909 | April 9, 2002 | Shima |
6381666 | April 30, 2002 | Kejser et al. |
6389029 | May 14, 2002 | McAlear |
6546450 | April 8, 2003 | Liu |
6549966 | April 15, 2003 | Dickens et al. |
6600739 | July 29, 2003 | Evans et al. |
6904489 | June 7, 2005 | Zarns |
6934793 | August 23, 2005 | Ying et al. |
7047344 | May 16, 2006 | Lou et al. |
7069373 | June 27, 2006 | Teng |
7412621 | August 12, 2008 | Choi |
20030074431 | April 17, 2003 | Abbondanzio et al. |
20040095888 | May 20, 2004 | Noel, Jr. |
20050027889 | February 3, 2005 | Sandulescu |
20050135422 | June 23, 2005 | Yeh |
20050265385 | December 1, 2005 | Cromer et al. |
20060069543 | March 30, 2006 | Sajwani et al. |
20060123129 | June 8, 2006 | Toebes et al. |
- Compaq et al. Universal Serial Bus Specification. Apr. 27, 2000. Revision 2.0.
- Byard, Larry F. Dux Computer Works. FAQs: Mac Address. Feb. 2, 2002. http://www.duxcw.com/faq/network/mac.htm.
- PCI Special Interest Group. PCI Local Bus Specification. Jun. 1, 1995.
- Inside Out Networks. AnywhereUSB. Product Data Sheet. 2005.
- Greenberg et al. IP-Over-USB Gateway. Final Project Report. Apr. 15, 2005.
- D-Link. DNS-120. Express EtherNetwork USB to Ethernet Network Storage Adapter. datasheet. 2005.
- SIIG Inc. USB Over IP. User's Manual. Jun. 2008.
- Digi 5-Port USB AnyWhere Remote USB Over IP Extender, KVMs.com web page http://www.kvms.com/nav/item.asp?item=8221, printed Oct. 14, 2004.
- Inside Out Networks—the Leader in Enterprise USB Connectivity Products, Inside Out Networks web page http://www.ionetworks.com/products/index.jsp, printed Oct. 14, 2004.
- USB Over IP: Turning Your Network Into an I/O Bus, White Paper, www.ionetworks.com, © 2003-2004 Digi International Inc. 91001239 A1/0204, 3 pages.
- AnywhereUSB®, Inside Out Networks—the Leader in Enterprise USB Connectivity Products web page http://www.ionetworks.com/products/usboverip/index.jsp, printed Oct. 14, 2004.
- MIMIO by Virtual Ink, Copyright © 2004, Virtual Ink Corporation web page http://www.mimio.com/, printed Oct. 14, 2004.
- USPTO Office Action issued in related U.S. Appl. No. 11/006,988 dated Jun. 12, 2008 (22 pages).
Type: Grant
Filed: Dec 7, 2004
Date of Patent: Jan 5, 2010
Patent Publication Number: 20060123166
Assignee: Cisco Technology, Inc. (San Jose, CA)
Inventors: John Toebes (Cary, NC), Arthur Howarth (San Jose, CA), Mickey Sartin (Apex, NC)
Primary Examiner: Mark Rinehart
Assistant Examiner: Matthew D Spittle
Attorney: Weaver Austin Villeneuve Austin LLP
Application Number: 11/006,989
International Classification: G06F 13/42 (20060101);