So, fun fact about USB: the way they handled backwards compatibility in USB 3.x was to… not be backwards compatible, and instead just have separate pins for 3.x and older devices. And the 2.0/3.x split was even carried over into Type-C, which still has dedicated low-speed pins.
What this means that you can effectively shove two devices into one port without a hub or mux, by…
- Wiring up the 2.0 pins of the expansion connector straight into the D+/D- pins of the USB-A port (which will be 2.0 only)
- Wiring up the high-speed lanes to the USB-C port
- Connecting power and ground to both ports with appropriate diodes to prevent backpowering the connectors
- Wiring up the CC pins on the expansion connector and Type-C port to make the card look like a single legacy adapter
There’s two deal breakers with this setup:
- For safety reasons, we lose dual-role power, so you can’t charge the laptop with the Type-C port.
- We also lose 2.0 pins on the Type-C port.
I don’t know of a solution for the first dealbreaker, but the second one is actually fixable! Turns out there’s silicon specifically for adding 2.0 pins to a 3.x-only port (and apparently those exist). It’s called the VL670/VL671. Since the expansion card only goes in one way, and we’re probably already breaking spec 10 ways to Sunday, we probably could also omit the 3.x lane mux on the expansion connector and get away with a really janky two-chip “”“hub”"".
Note that I have not validated or even tried wiring up anything this way. But it at least makes more sense than putting two ports in parallel with one another.