Comment on LGA1155 motherboard - no USB ports work
j4k3@piefed.world 1 week ago
Use linux-hardware.org to search for a relevant kernel scan. I think that should have some kind of potential hardware identification for the USB hub and PCI trees. That may clue you in about the architecture and devices. I’m no expert on motherboards or the evolution of hardware devices. However, it could be as simple as a USB hub chip on the board. I only know that these things exist from around 5 years ago when I was researching how I might make a USB 3 to PCIE adaptor for an Intel Core Duo machine. I was looking into adding a faster external drive port to libreboot hardware.
From what I recall, the CPU has a ton of connections on its various I/O pins, (like you indicated checking for bent pins). However each register port has a ton of compromises to make at the board design level. Like, the hardware spec of the CPU says it has way way more stuff than is actually possible to implement in practice. The base CPU spec may say it has a half dozen USB ports and three 32 bit PCI lanes or whatnot, but when one gets into the weeds of hardware design, one quickly finds stuff like one USB port is hardware available in practice in the same hardware register as something like the Ethernet controller, but if you use it, the Ethernet speed is halved, and the other five hardware USB ports are only available if one disables all the PCI lanes. So instead, the hardware designer uses a GPIO pin against the enable pin of a USB hub to PCI converter chip that sits on the same PCI bus as all other external hardware. This was also very common in older generations of laptops. There was often a small daughter board that had a set of ports for USB, SD cards, Ethernet, etc., and this worked in a similar topology where it was a PCI device.
The first rule of troubleshooting is “thou shall check ground”. Beyond this, if you happen to discover that the USB ports are handled by such a controller, if you look up the datasheet and pinout, the Enable pin in the first to check after confirming power is present. Also be sure you have the kernel module or driver necessary to identify this device. Worst case scenario, if you identify there is an external controller, you could simply replace it. There is no programming in such a chip. It is just a simple hot air rework swap job. Alternatively, maybe try an external card or adaptor on one of the other ports or on PCI.