Re: USB devices fail unnecessarily on unpowered hubs

From: Oliver Neukum
Date: Sat Jun 03 2006 - 05:37:53 EST


Am Dienstag, 30. Mai 2006 22:01 schrieb Pavel Machek:
> Hi!
>
> > Starting with 2.6.16, some USB devices fail unnecessarily on unpowered
> > hubs. Alan Stern explains,
> >
> > "The idea is that the kernel now keeps track of USB power budgets. When a
> > bus-powered device requires more current than its upstream hub is capable
> > of providing, the kernel will not configure it.
> >
> > Computers' USB ports are capable of providing a full 500 mA, so devices
> > plugged directly into the computer will work okay. However unpowered hubs
> > can provide only 100 mA to each port. Some devices require (or claim they
> > require) more current than that. As a result, they don't get configured
> > when plugged into an unpowered hub."
>
> Actually I have exactly opposite problem: my computer (spitz) can't
> supply full 500mA on its root hub, and linux tries to power up
> 'hungry' devices, anyway, leading to very weird behaviour.


You could lower the obvious values in this code from drivers/usb/core/hub.c

if (hdev == hdev->bus->root_hub) {
if (hdev->bus_mA == 0 || hdev->bus_mA >= 500)
hub->mA_per_port = 500;
else {
hub->mA_per_port = hdev->bus_mA;
hub->limited_power = 1;
}

If that does the job we need to somehow inherit the power supply maximum from
PCI when we allocate the root hub's device structure.

Regards
Oliver
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/