On Twitter, [whitequark] has found and highlighted an intriguing design – a breakout board for the VL670, accompanied by an extensive yet very easy to digest write-up about its usefulness and inner workings. The VL670 is a chip that addresses a surprising problem – converting USB 2.0 signals into USB 3.0.
If you have a USB 2.0 device and a host with only USB 3.0 signals available, this chip is for you. It might be puzzling – why is this even needed? It’s about the little-known dark secret of USB3, that anyone can deduce if they ever have to deal with a 9-pin USB 3.0 connector where one of the three differential pairs doesn’t quite make contact.
When you see a blue “3.0” port, it’s actually USB 2 and USB 3 — two separate interfaces joined into a single connector. USB 3 uses two single-directional differential pairs, akin to PCI-E, whereas USB 2 uses a single bidirectional one, and the two interfaces on a blue connector operate basically independently of each other. There’s many implications to this that are counterintuitive if you simply take “USB 3.0” for “faster backwards-compatible USB”, and they have painful consequences.
For instance, USB 3 hub ICs have two separate hub entities inside – one for USB 3 and one for USB 2. Even if you have a USB 3 hub plugged into a USB 3 port, multiple USB 2 devices plugged into it still cannot break through the USB 2 uplink limit of 480 MBps. If you ever thought that a faster hub with a faster uplink would fix your USB 2 device speed problems – USB-IF engineers, apparently, thought differently; and you might have to find a workaround for your “many cheap SDRs and Pi 4 in a box” setup.
As a fun party trick, since USB 3 device enumeration only uses USB 2 as fallback, you can, in theory, connect eight devices to a four-port USB 3 hub – four USB 2 devices and four USB 3 devices. In fact, some USB devices use USB 3 lanes exclusively and don’t even connect to USB 2 lanes. Yes, this also implies that you might be able to connect six USB devices to a Raspberry Pi 4, and even seven if you switch the OTG port into a host mode.
So if you find yourself stuck between USB 2 and USB 3, the VL670 is a functional solution. But because it’s addressing a deficiency in the standard, it’s not quite compliant itself. (Not that USB standard non-compliance ever stopped anyone.)
There’s an open-source devboard that you can order parts for and build, with VL670 chips seemingly available on TaoBao. What was this chip originally intended for? Apparently, VirtualLink, a standard that quite a few people feel glad to see dead. The aforementioned extensive write-up does talk about more relatable use cases, however – for instance, it turns out that USB 3 signals are easier to galvanically isolate!
We’ve discussed the USB 3 vs USB 2 peculiarity in passing, but it bears establishing its implications more clearly. If you ever wondered about other shady parts of USB, you’ll want to check out the Hacking USB Hack Chat we had with [Kate Temkin]!