Today my MacBook Pro showed some signs of being not so "pro" anymore, as it repeatedly showed a pop up claiming that usb had been disabled due to a device drawing too much current, but actually there were no devices connected to the hub.
"Fine", i tought, "i'll take it to Apple tomorrow". But then i realized that this was not my style, and even that they would have kindly persuaded me to change the whole motherboard (and even to buy some iwatches, just in case). And as i'm one who wants everything hinc et nunc, i decided to solve the issue myself. So what did i do, perform an hard reset? reset the smc? No, i teared down my mac and investigated.
I found that some some stages of the power supply section of one of the USBs seemed to be shorted to ground.
I started by desoldering some capacitors which i suspected of being damaged, but without luck.
The short seemed to be localized at the final stage of the supply; an ic took my attention: the TPS2046, it is a dual current-limited power distribution switch from TI (which i'm pointing at with the tweezers).
After some time i found that the ic was internally damaged and shorted to ground, and the problem affected only the yet not working section of the power switch.
So i solved it by deceiving the CPU that everything was fine by cutting the other overcurrent protection trace and pulling it to VCC, and by bypassing the switch by soldering the second USB directly to the main 5V bus.
And now we are back in business!
I cut some traces with a scalpel to isolate the chip and performed some testing. The ic has two open drain overcurrent and thermal protection warning outputs, which i found were both pulled to gound, so that the computer was interpreting that as an OC problem and consequently disabling the whole bus. Once i forced the both OC pins to VCC, the pop up disappeared. But unfortunately the USBs were not working, precisely power was not being supplied to the connectors. In fact, the enable pins weren't being handled correctly by the mac, even after a restart. Forcing the enable pin to ground worked for one of the ports but i had to investigate more to solve the problem...
As shown by the photo both usb now work, and a little label was added next to one of the ports in order to prevent users from plugging in excessive loads.