I have previously opened up a $5 3-to-1 HDMI switch. The HDMI switch is implemented with AZHW37 HDMI mux that is controlled by logic level signals controlled with some additional glue logic likely a 8-pin microcontroller to handle the buttons and selection LED.
HDMI Switch datasheet: http://www.amazingic.com/english/01_products/AZHW37
PS/2 devices are not hot pluggable, so a KVM emulates a pair of PS/2 mouse/keyboards for each of the computers. It pass through key strokes, mouse events and commands. It also has to remember the LED states of the keyboard/mouse so that it can restore the states switching between different computers.
Unlike PS/2, USB is designed to be hot pluggable. i.e. The KVM (Hub Based) connects/disconnects the USB port for each time it switches. The OS level support simplifies the design a lot. Windows even saves the LED states of keyboard and restores it upon reconnecting.
USB 1.X Switching - The easy way
If you want to switch USB 1.X signals, you can probably get by with a 74HC4052 (Dual 4:1 Analog MUX). The 74HC4052 covers all the logical combinations, so it is a matter of taking advantage of that to match up with the HDMI switch and discarding the combination not covered by the HDMI.
Most of the commodity keyboard/mouse are USB 1.X devices, so this is probably good enough.
You do have to make sure that the USB HUB you are using is only USB 1.x (i.e. 1.5 or 12Mbps) as the MUX is not rated for USB 2.0. USB unlikely Ethernet doesn't falls back gracefully if the signal quality is bad. You just have to shop for the cheapest $2 hubs from China which are still USB 1.1.
When not to switch
I have decided to try to make this KVM for USB 2.0.
There are proper USB 2.0 MUX out there e.g. On Semi NCN9252. On Semi NCN9252 is a fine pitched (0.4mm) DFN parts targeted for skinny consumer electronic devices. Their pin placements doesn't exactly make sense without a multilayer PCB, but I have to work with what is available.
As an alternative, one could possibly make a USB MUX out of 3 DTDP relays. Short pieces of twist pair from CAT5/6 could be used to wire things together. CAT5/6 have 100 ohms impedance which is within the USB specs.
They have decided to use a different combination for selecting the channels than the HDMI switch. There are a couple of ways to connect the control pins to the USB MUX.
- Invert one of the logic signals e.g. S1 from HDMI
- A Dual 4 to 1 MUX (e.g. 74HC153) can be used as a pair of 4 entries lookup table.
- Use a $0.24 microcontroller.
I have thrown together a breakout PCB that I am going to order because of the tight tolerances and the high speed signals. There are some additional requirements that I haven't sorted out yet, so those are going to be on a separate PCB with a modular approach.
I use 3 schottky diodes as Or'ing diodes to provide power for the USB hub. The diodes prevent power from leaking back to unpowered PCs. Cheap hubs do away with the protection Schottky diode, so we only have 1 diode drop to worry about.
0.52x1.48 inch (13.08x37.46 mm) 2 layer board. 3 boards at $3.75 per batch of three.
PCB Signal Impedance
It is hard to get the right impedance on a 0.062" (1.6mm) doubled sided PCB on thin tracks and prototype design rules. (Online impedance calculator: here)
Due to the relative distances, edge coupling will have a significant effect. Normally you are supposed to maintain a few d clearance between differential pair to other signals and grounds. I tried to lower the impedance Z0 by having continuous ground fills right next to the traces. :P
The differential tracks highlighted in yellow has cross section and impedance like this:
USB...Read more »