This is a tested design for a hand made USB 2.0 hub. It can be made exactly as it is, or embedded into another project by coping my schematic. I've included the .JSON from Easy EDA for the schematic, the PCB, as well as the Gerber if you want to have one made exactly as it is.
The circuit is based on the SL2.1A by Core Chips. My schematic is based on the example schematic in the chip's datasheet. This chip is pretty simple to use. Just add a crystal, a few capacitors, and some USB ports and you've got a USB hub. ISL2.1A only comes in a surface mount package, but it's not so small that it's difficult to solder. I've added an SK54 zener diode and a DC barrel jack to allow the hub to be powered from an external source. I also added a 2A self resetting fuse for obvious reasons.
The most important thing to mention about USB is that the D+ and D- traces must have equal impedance's, and they must be routed exactly next to one another. This is because they run at an extremely high frequency, and the data will be distorted if the traces aren't perfect.
This design seems to work with everything I have plugged into it, with the exception of my USB C phone. I suspect this could be solved by adding some pull-up or pulldown resistors to the data lines. If anyone has any insight, please post a comment.
Thanks for this, it's helping me understand some things for my own sl2.1a design. I'm curious why the crystal in this case doesn't require load caps, I also have to use 2 unshielded 2x4 pin headers as downstream ports, could I just treat these as you have and not worry about the additional 100uf cap?