geekhack Community => Keyboards => Topic started by: Jtaks on Sun, 17 May 2020, 13:28:19

Title: Custom Keyboard Cable Problem
Post by: Jtaks on Sun, 17 May 2020, 13:28:19
Hey everyone,

I have a Steel Series 6GV2 that I modified to have a detachable cable. I removed the built in USB cable and attached a female USB C port where that cable was attached. It works great but only with certain cables. I was hoping someone might be able to provide some insight as to which types of cables work because I am at a loss. All cables I have are USB A to C (2.0 I think based on only 4 pins on the A side).

- Logitech MX Master 3 mouse cable
- Nintendo Switch Pro controller charging cable

Doesn't work:
- Amazon Basic 2.0
- JianHan USB C Cable (with "reversable" design)

Title: Re: Custom Keyboard Cable Problem
Post by: Leslieann on Sun, 17 May 2020, 20:21:15
Type C broke several prior USB standards.
There are two parts that can trip you up, one of which is a lack of standards and the other is new standards that broke the old ones, USB is a mess, and Type C made things far, far worse and I'm not talking about the whole what thunderbolt standards are supported, that's a whole separate complaint, easily as long as this.

The thing to remember is that type C is a connector, not a standard, as such not all cables are equal. Some Type-C cables not only do not reverse, several have power wires on both sides, but data only one one. Some aren't even USB 3.0 inside, the Type-C extension cable I used to make the pigtail on my keyboard had 4 wires inside (USB 2.0).  Not all are wired the same way either, some will wire the shield into ground, some have a dedicated shield, some have no shield at all. If you take a cable with a proper shield and connect to one that is not, it can cause connection to fail as some use the shield as a second ground. When messing with USB cables, I always tie black and shield together on them to avoid this issue. Not great for the signal, but it eliminates the problem when both need to be connected. If you have an aluminum keyboard, I also like to connect ground to the chassis. It seems to help with reducing static.

Type-C broke USB's simple rules.
Anything plugging into a type A port is fine, but the moment you connect anything to a Type C port all hell breaks loose, you may be using a Type A but it can still trip you up now and certainly will if you ever plug into a Type C port. Type C requires devices to identify themselves as host or sub device and until this happens it won't work. Obviously your computer's port is a host, so why not just assume so, because when charging through the port it's a sub device. I'm still not convinced that this was needed but they did it anyway and so it makes Type C even more complicated than it already was. Luckily it's an easy fix, just a resistor across two pins, but if you aren't aware of it, it can be a surprise.  Now I know I said I don't think this is your problem (and I still don't since you're connecting to a Type A port, but it will be an issue later) but then I re-read and notices you used a Type-C USB port, not a cable. Some of these have the resistor in them for this purpose, but for some reason they're mounted as a host. The video below goes into detail about this whole thing.

One thing to note on this video, he removes the built in resistor that designated it as a host and then installs a different one, watch closely when he removes the pre-installed one there's a set of pads right next to it. If you were making a universal connector that needed to be flipped in this way, wouldn't you make the necessary pads right next to it? I and a bunch of others all noted the same thing, all he (probably) had to do was move the resistor over.

Anyhow, I hope all this helps.
Title: Re: Custom Keyboard Cable Problem
Post by: typo on Mon, 18 May 2020, 00:34:50
since last two do not comply to final standard. You really need to fix your jack right.
Title: Re: Custom Keyboard Cable Problem
Post by: Jtaks on Mon, 18 May 2020, 12:45:52
That was a good read. Thank you.

The port I installed on the keyboard is the Adafruit USB C Breakout Board - Downstream Connection0. Reading about USB Hardware1 on Wikipedia it sounds like downstream is roughly equivalent to host.

With that I will likely need to make that resistor change you mentioned (please correct me if I am mistaken :D).

Follow up question -- does this mean that the cables that work are likely ignoring the keyboard saying it is a host?

Title: Re: Custom Keyboard Cable Problem
Post by: Leslieann on Mon, 18 May 2020, 20:01:03
Downstream is sub device (think of a river), the resistors on the Adafruit part tell the host to allow it to give full power.

Sounds like a cable issue or you flipped the data wires, which is easy to do.