USB Device Sharing between PCs.
Original Publication Date: 2000-Dec-23
Included in the Prior Art Database: 2003-Jun-18
Simple USB device sharing technologies offer a mechanical switch that unplugs the device from one machine and plugs it into another machine. This mechanism requires the user to select the device as well as causes the OS to reenumerate the device that it thinks has just been connected. This new invention has two possible solutions: one allowing one USB device to be connected and one allowing for multiple USB devices to be connected. The first solution (as shown below) consists of multiple UBS peripheral chips that communicate with the a single host PC and feed their data stream into a microcontroller. The microcontroller has to accomodate a couple of problems assiciated with connecting one USB devices to multiple hosts. The first prolem is that each host could select a different USB address for the same device. The device can only run at one address, so the microcontroller will set the USB address of the device independently of the address set by the hosts. The second problem associated with connecting multiple hosts to one device is that one host may select a different device configuration than another host. The device can only opperate one configuration at a time. The microcontroller will need to keep track of the configurations set by the hosts and change the configuration of the device depending upon the which host is currently sending or receiving data from the device. A third issue and important part of this new invention is the ability for multiple hosts to communicate with one device simultaneously. This feature is impossible with other solutions, but through the use of standard USB protocols and our microcontroller this design is able to handle this with minimal impact upon the host. While only one host is sending or receiving data from the device, the other hosts commands are buffered and queued. The microcontroller determines when a good stopping point for one hosts transaction occurs and will switch to the other host that is communicating. From the host perspective, a command sent to a device may take a few more milliseconds to execute then when only one host is connected, but the delay is well within the parameters of the device and within the USB specification.