You could try something akin to what worked here with regard to an OTG hub on a Pi Zero.
However, the situation is a little different on the other models, where the onboard hub has two entries in /sys
(possibly due to the ethernet controller which is part of the USB controller, but more likely due to the way the hub is configured for use as a USB master -- doesn't matter for our purposes).
You need to go into /sys/bus/usb/devices
, where there is set of symlinked directories and files; we are interested in the directories which have a format such as 1-1:1.0
, keeping in mind that that and 1-0:1.0
are the onboard hub. There is a bit of an explanation of how to do that here, although that may not be easy to follow partially because of how the numbering scheme output from lsusb -t
works. However, that command should clearly indicate the hub itself as a brand identifier should be included. Most likely, the directory you are looking for is 2-0:1.0
.
Inside there is another set of symlinks, one of which is driver
. Use readlink driver
to see what that points to; if it ends in bus/usb/drivers/hub
you've found it [but see also comments at bottom].
Now go to /sys/bus/usb/drivers/hub
(you can use the driver
symlink, e.g., cd driver
); there will be symlinked directories there including 2-0:1.0
(if that's the hub). There should also be two file nodes, bind
and unbind
. As per the answer linked in the first question, from inside that directory, try:
echo "2-0:1.0" > unbind
Then
echo "2-0:1.0" > bind
You have to do this as root, e.g., by using su
; you cannot use sudo
because they use redirection (>
), but you could put them in a script with a brief sleep
, as per the first linked answer, and use sudo
with that.
Beware when you do this everything on the hub will be disconnected, so if that includes a wifi adapter and you are logging in remotely, you will have to attach that directly to the pi first instead. It doesn't matter about the pi itself because the power from the hub won't be affected.
Now try just plain lsusb
. It and fdisk -l
should show the drives.
If that works, you can use the same strategy from the first linked answer with /etc/rc.local
to ensure when the pi boots up, the drives should be found. That file is run root by the init system, but you can run it yourself to similar effect (in this case, anyway) with sudo
.