1
\$\begingroup\$

I'm trying to make a USB-C switcher.

I'm using a rotary switch (center) to have one input USB-C receptacle switch between two output receptacles. This is so I can plug my keyboard into the input and two computers into the two outputs, and use a knob to select which computer the keyboard is attached to without unplugging any cables.

Here is my circuit diagram:

Circuit diagram of USB-C switcher

The VBUS, D+, and D- lines of the two output receptacles are switched through the rotary switch and connected to the input receptacle. Pins CC1 and CC2 of each Output receptacle are joined, and then switched through the rotary switch and connected to the CC1 and CC2 pins of the input receptacle. A common ground plane is shared between all three receptacles and isn't switched by the rotary switch.

Here's the PCB I designed: USB-C PCB design from KiCad

I thought I could join together the CC pins (since there is only one CC line in USB-C cables) and pass the CC line through the switch to allow for native USB-C power delivery negotiation between each host and the keyboard. But when I soldered up the boards, that didn't work. No connection was made no matter what cables or plug orientation I used. It also didn't help to unplug one cable so only two cables were plugged into the device, one input and one output. I have verified with a multimeter that my solder connections on the board are sound.

My question is: why isn't passing through the VBUS, D+, D-, and CC lines of a USB-C cable, with a common ground, allowing USB connections?

I have a few ideas:

  • Maybe the fact that I'm sharing ground between all three receptacles isn't good, and is messing up various things.
  • Maybe the fact that B8 and A8 aren't passed through is causing some issue? But I've learned these are USB-C SuperSpeed lines and I think it should work fine to leave them unconnected. (I don't need high-speed data since I just want this to work for a keyboard.)

Thanks for the help!

\$\endgroup\$
8
  • 1
    \$\begingroup\$ Even without SuperSpeed, USB is a fairly fast interface that requires attention to signal integrity; your rotary switch and layout could be causing significant signal degradation. By any chance, do you have suitable equipment (such as access to an oscilloscope) to assess this? (it's worth noting that for an alternate design, you could maybe have the rotary switch control a dedicated, off-the-shelf chip designed for switching/muxing USB) \$\endgroup\$
    – nanofarad
    May 6 at 17:20
  • 1
    \$\begingroup\$ Sorry, but your idea is never going to work - at least not that implementation of it anyway. USB's D+/D- signal lines must be routed as an impedance-controlled differential transmission line pair. You can't randomly rout them apart from each other like that, and your rotary switch is simply not able to maintain the impedance matching required. There's a reason that USB switch ICs exist. \$\endgroup\$
    – brhans
    May 6 at 17:31
  • 4
    \$\begingroup\$ Using a rotary switch will bypass the hot-plugness of USB. It does not guarantee that power connects first and then data pins, or that data disconnects before power does. Not to mention the obvious that USB is a high speed differential data pair which does not tolerate impedance discontinuities. It would have been more correct to use a chip dedicated for USB multiplexing and to use the rotary to control the chip to select how the ports are routed. And CC pins cannot be combined like that. \$\endgroup\$
    – Justme
    May 6 at 17:37
  • \$\begingroup\$ @Justme Thanks, can you elaborate on why CC pins can't be combined? Is it because the resistance used for power delivery negotiation needs to be measured with both pins? I was under the impression that there are two CC pins only for plug symmetry and plug orientation detection \$\endgroup\$
    – will
    May 6 at 17:52
  • \$\begingroup\$ @nanofarad Thanks for the feedback! I wasn't taking into account signal integrity, or using a USB muxing chip (which I've looked into now). I don't have access to an oscilloscope to assess what's going on. However I don't think signal degradation is entirely the problem, because if I manually pull all CC pins to ground through a 5.1kΩ resistor, I can get a working USB signal through the device. \$\endgroup\$
    – will
    May 6 at 17:55

1 Answer 1

1
\$\begingroup\$

The CC pin connections are not correct.

Sure, there is only one CC wire in the cable itself.

The other CC pin that is not wired 7n the cable is pulled down to ground via a resistor by the cable, in the connector, which enables the host to detect which way the connector is plugged in to host.

The cable wiring will then connect the remaining CC pin to the device, to detect if something is connected, and what type of device is connected.

The device (keyboard) will also detect cable orientation from which pin is connected to correct resistance by cable and which pin is connected to host.

Only when correct cable and device resistance signatures are detected, the host will turn the standard 5V VBUS on to power the device.

So having short-circuited the CC pins, the host can't detect cable orientation or device type so it will not turn 5V VBUS on.

Since your device is a keyboard, it is highly unlikely it needs to communicate USB PD, but even if it would like to communicate USB PD, nothing happens as the keyboard won't receive even 5V from host.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.