I have an old Raspberry Pi 3, which I believe offers 4x USB 2.0 ports with max 1.2A in total, according to documentation. I actually only use one port but for an SSD NVMe (using a USB housing) which is very power hungry. The SSD itself states 1.7A @ 3.3V which means ~5,61W, which means the USB would be trying to pull ~1,122A. Considering that the housing must contain some kind of voltage regulator from 5V to 3.3V, which generates some lost, I am assuming the USB housing is trying to pull at least 1.2A, which would be the RPi maximum. However I keep getting constant Undervoltage detection on the RPi when using the SSD. It does work, reads and writes, but often with undervoltage warnings and every once in a while it loses connection and corrupts a file during an undervoltage detection:
So I was trying a cheap solution to increase the power delivery of this port. After seeing a lot of posts here and some other sources, I decided to try the very basics first:
I see on my ext. power supply that it is indeed providing enough current and the SSD seems to be trying to be recognized by the RPi but it fails. I havent tried on windows but I assume I would get a "Device not recognized" as I also saw many people on other posts having the same trouble. After reading about, it seems to be related to some kind of VBUS sensing which is part of the whole handshaking process, but I am not really sure how this happens. So I tried to connect the Host's VBUS to the circuit as follows:
but still fails. Only thing that changed is that now the ext. power supply only provides power when the device is attached, but still not recognized. I saw that the power supply also delivers less current now with this solution, not sure why.
Reading all other discussions about the same topic seemed to be inconclusive to me. I saw different opinions but not really a final solution.
Does anybody know how can I correct the circuit so it does get recognized, without the need of buying a powered USB hub? Or at least why this is not working?
PS.: RPi power supply should be enough (official RPi PSU 5V@3A / 15.3W), not using HDMI or other peripherals. Only the SSD and Ethernet cable connected to the board.
EDIT: So it turns out the first solution DOES work. Problem was, I was making these wirings using those standard arduino jumper cables (about ~15cm long each) and realized that even if I connected both USB connectors directly to each other as a normal cable, it would still not work due to sensitive USB data exchange. Twisting the Data wires also did not help. Now I've soldered both connectors to each other without wires in between and it worked. Then I removed only the VUSB pin and took it from the external power supply. What kind of bothers me now is the fact that the power supply shows a current consumption varying between 150mA and 250mA. That is far away from the top limit, even when streaming a media file (which is the same situation that was causing undervoltage before). Now I do not have undervoltage warnings anymore, but I'm wondering why it was happening before, since the current doesnt seem to be that high. Only explanation would be current spikes (perhaps when fetching new data?). That means a big capacitor on the VBUS line could solve this problem without external power supply? Not sure if it is recommended, but I might give it a try. Or maybe Raspberry Pi is not providing full current capacity? Is there any kind of fuse/software limitation to be checked?
EDIT2: I did some measuring with the oscilloscope and it seems I have constant peaks indeed:
Unfortunately I just had 9x 10 Ohm resistors to do the shunting, then applied a bit higher voltage with the power supply (~5.3V) and it does reach peaks of 1.30V, which means roughly ~1.2A in fact. The whole peak however lasts for less than 1ms and happens every second more or less. So a big enough capacitor on the VBUS line should do the trick, correct?