Just want to start out by saying that I'm primarily a software guy and relatively new to the whole hardware side of things so there well may be some flaws in my assumptions due to my inexperience.
For this project I wanted to create a device that was similar to a switched high speed USB 2.0 hub, but instead of only being able to use one computer with multiple devices I wanted to be able to route multiple devices to multiple computers. If I have computers A, B, C and USB devices 1, 2, 3 I want to be able to say route device 1 to computer C, device 2 to computer A etc... at runtime through some control application.
Originally I thought that I could just use a bunch of Omron's tiny solid state DPDT relays but once I started designing the switching logic that this really wasn't feasible for anything other then a couple of ports because the relay count was growing exponential and the little buggers are expensive.
So I sat down and redid my switching logic and found a way to make the relay count grow at a linear rate by grouping things into little four port units but when it came to connecting these units together It looks like it would render one or more ports inoperable when connecting a computer from one pod to a device on another.
So this led me to my third idea which is to pick up some USB hub controllers. I would have one controller per computer I wish to support and route each of the device USB ports to a set of signal lines on each hub controller. So if I pick up 7 port hub controllers I could support 7 USB devices and N computers. I would use relays to route say device 1 to port 1 on each of the hub controllers and switch the relays to control which computer it is connected to. TI has some USB 1.0 hub controllers that they would let me get samples of, but haven't found a place where I could get free samples of a 2.0 high speed hub controllers.
So what I'm guess I'm asking of you guys is does this seam rational? Does my plan seem feasible? Have I overlooked some other method of switching these USB signal lines between computers that might work better, cheaper to implement or just simpler to wire up? This is my first real electronics project since ever if you don't count those radio shack 101 project kits I did as a kid, and I'm not entirely confident in my logic on this one. Thanks in advance for any help or pointers you guys may be able to give me.
Sounds as reasonable as it gets. I suppose ideal would be a USB hub chip that supported port disable, but I don't see any of those.
Your first design sounds like you wanted a crossbar switch. There are integrated circuits for this, but sadly since you end up with a lot of pins they are all in packages that are tricky to play with like ball grid arrays/ In any event, you don't need a crossbar, it takes a lot of switches and allows each input to be connected to many outputs at the same time, very bad if you think of your USB devices as the inputs.
What you really want is a multiplexor that can connect each device to one of several outputs. Unfortunately I'm not seeing a 4:1 mux in a DIP package with low enough resistance to not screw up your USB. But for very low power devices you might get by with a pair of MAX4618 (2 bit 4:1 muxes with a 10ohm Ron) for each USB device. This probably doesn't work for USB 2.0 HiSpeed devices, it looks like it starts degrading about 20MHz.
Alternatively, you could wire each device to all hubs simultaneously but insert a switch to interrupt the connection. If you have some soldering skill or know someone who does you can get little adapter boards to mount the tiny packages on and then break out the signals to something large enough to get on a breadboard. That said, you might look at something like a Fairchild FSUSB31 which is tailor made for making and breaking a USB connection and in stock at digikey. Somewhat less ideal would be something like a Maxim MAX4677 which is 4 bits of SPST switch in a 16 pin DIP so you can easily handle it. The downside is that it isn't fast enough for USB 2.0 HiSpeed.
And I wondered what would happen if you left the +5 and grounds connected all the time and only switched the data lines. I thought that would work, but you would not be in compliance with the USB spec. It demands that your pull up or pull down resistors that identify your speed only get driven when the host supplies the +5v.
Thanks for the pointer to the FSUSB31 didn't know a device like that existed. That may just work. For power control I'll be utilizing something like the 595-TPS2067D from TI:
Should be able to handle the power up sequence and I'll be monitoring for over current events using the Arduino mini. Was able to get free samples for dual and three channel versions from TI. Thanks very much for the help.