USB resets USB device(s) connected to bus-powered USB hub

I've a latptop and USB hub that's connected to its USB port, no PSU for the hub, so it's bus-powered. I've 2-3 external SATA hard drives connected to this hub via USB interface, all hard drives have PSUs of their own, so they draw only 2mA according to lsusb.

Now, I'm running Listen that plays MP3s off one of the external drives and I have tar busy unpacking a big number of archives to another drive that's connected to USB hub.

And the music started pausing, sort of, just no sound for 10 seconds or something like that, and then it plays again. So I checked lsusb output, all the devices connected to all USB buses were there, so I looked into dmesg output and there I saw this:

this happens each time the music in Listen goes off, so the drive is being reset. Especially when USB bus is busy and loaded heavily. I'm relatively new to USB in Linux so my question would be what's going on here? How do I troubleshoot this? Is it just a poor quality USB hub? (if drives are connected to laptop's USB ports directly I never experienced a problem like that, even under heavy load). Is there any chance of simply tweaking the settings or will I have to go out and buy a more powerful and robust USB hub?

The USB specification states that all USB devices must support power management. Nevertheless, the sad fact is that many devices do not support it very well. You can suspend them all right, but when you try to resume them they disconnect themselves from the USB bus or they stop working entirely. For this reason, by default the kernel disables autosuspend (the power/control attribute is initialized to "on") for all devices other than hubs. Hubs, at least, appear to be reasonably well-behaved inthis regard.

Sometimes it turns out that even when a device does work okay with autosuspend there are still problems.

and

The default autosuspend idle-delay time is controlled by a module parameter in usbcore. You can specify the value when usbcore is loaded. For example, to set it to 5 seconds instead of 2 you would do:

modprobe usbcore autosuspend=5

Equivalently, you could add to /etc/modprobe.conf a line saying:

options usbcore autosuspend=5

Some distributions load the usbcore module very early during the boot process, by means of a program or script running from an initramfs image. To alter the parameter value you would have to rebuild that image.

If usbcore is compiled into the kernel rather than built as a loadable module, you can add

usbcore.autosuspend=5

to the kernel's boot command line.

Finally, the parameter value can be changed while the system is running. If you do:

echo 5 >/sys/module/usbcore/parameters/autosuspend

then each new USB device will have its autosuspend idle-delay initialized to 5. (The idle-delay values for already existing devices will not be affected.)

Setting the initial default idle-delay to -1 will prevent any autosuspend of any USB device. This is a simple alternative to disabling CONFIG_USB_SUSPEND and rebuilding the kernel, and it has the added benefit of allowing you to enable autosuspend for selected devices.

Re: USB resets USB device(s) connected to bus-powered USB hub

I tried that but it didn't change anything, unfortunatelly. It's still a mystery to me why it would sometimes work without any problems for almost 8 hours in a row and then reset the devices two times in half an hour.

Re: USB resets USB device(s) connected to bus-powered USB hub

Hi xCrucialDudex, have you come across the solution to this? I have been having a similar problem, however I have the drives setup in a software raid. When they reset (all at the same time) the raid marks them as faulty >_<

A couple of things you might want to try if you haven't solved this already: