Rockbox General > Rockbox General Discussion

Rockbox-own USB w/ Sansa Fuze doesn't work with USB hub

(1/1)

helloworld.c:

The subject says it all. I am running r27409-100713 with a Fuze V1 and have no problem using the Rockbox USB connection as long as I plug directly into the computer. I've tried a Win7 laptop and my XP desktop. Great job, btw.

However, when I plug into my powered USB hub, the device connects/disconnects rapidly. I see the USB connector on the display and intermittent flickers of the main menu. Needless to say, the computer eventually gives up citing a "hardware problem."

The stock firmware doesn't show this behaviour. Nor any other devices that I have used on the hub so far. I have disconnected almost everything but the problem persists. I am guessing that the Rockbox firmware perhaps overstates its anticipated power requirements and is therefore disconnected when it is on a hub or something like this. But perhaps the real experts can shed some light on it.

torne:
Rockbox asks for the maximum amount of USB power, 500mA (except on devices that support charging control, but that doesn't currently include the Fuze). If it's really a powered USB hub it should be able to provide this. Bus-powered hubs won't be able to (though many of them lie and claim they can anyway).

The stock firmware may ask for less, but it's unlikely; pretty much all devices ask for the maximum even if they don't need it, and for charging pretty much all devices draw the maximum even if they didn't ask for it ;)

There should be a way to see how much the stock firmware is asking for: plug it in, then on Windows, go to control panel -> administrative tools -> computer management -> device manager. Find the USB hub in the list (it will be under "Universal Serial Bus controllers") and right click on it, hit properties -> power, and it should say whether the hub claims to be self-power or bus powered, how much power it provides per port, and how much power each currently connected device is asking for. None of this information implies that anyone involved is telling the truth, though, sadly: hubs often lie about their capabilities, and devices often exceed their stated requirements, and if this lying results in an actual physical current limit being exceeded somewhere, then you will generally see the behaviour you describe: a cutoff will disconnect the device, but then it'll reconnect again, and so on ;)

helloworld.c:

OK, did some more research:

- It *is* really a self-powered 7-port hub that reports itself to Windows as such and can provide 500 mA per port. I've used it with all seven ports connected in the past and never had a problem such as the one I am seeing with the Fuze in Rockbox-USB mode.

- The stock firmware claims 500 mA, I checked. Rockbox-USB claims the same, checked by plugging it in directly and looking at the root hub.

- In both modes the device "looks" the same to Windows as far as I can tell (I have turned off HID support in Rockbox)

I have now determined that the problem only happens if I have another device connected to the same hub that draws 500 mA. If I remove it, no matter what else is plugged in, I can plug in the Rockbox-USB and it works on the hub. When I plug in the Rockbox-USB first and then the other 500 mA device, the same thing happens to the Fuze but the other device works fine. I've tried it with two such devices, a webcam and another MP3 player.

This doesn't happen with the stock firmware at all and is rock solid no matter where I plug in the Fuze. I can also connect the two other 500 mA devices together with the Fuze in stock-USB mode and lots of other stuff and everything works. So Rockbox must do "something" crucial differently. A timing issue, perhaps drawing full power too quickly?

torne:
Okay, that's interesting. It may indeed be that it's objecting to us drawing 500mA immediately on connection, but if that's the case then there must be some way to convince the hardware not to do that or else the OF wouldn't work either. I recently implemented a proper USB charging system which tries to follow the specification and wishes of the host, but it needs to have the mechanism for switching the charging mode implemented for each device, since it's hardware-specific. If we can find such a thing on the Fuze and implement it, then that might help.

Or... it might be something else. :)

I don't know how charging is implemented at the moment on Fuze, other than that it doesn't use my system...

Navigation

[0] Message Index

Go to full version