overriding usb charging current in linux?

Asking here because I can’t think of where I should post, and because I’m tired of people on various IRC channels completely misunderstanding the question, and because I know a few people from RIM read this:

The goal here is to charge my Blackberry by plugging it into a USB host running Linux.

The problem is that the single USB configuration presented by the Blackberry claims MaxPower is 100mA, but I know that the Blackberry will accept 500mA. In Windows, from what I can tell, it negotiates with the Blackberry driver and then increases the current even though the device still claims to accept only 100mA.

At 100mA, the Blackberry either refuses to charge, or it presents an error claiming that it is refusing to charge but actually charges very, very slowly.

What do I have to do in Linux to convince the host USB drivers that the device can accept 500mA? Even if I have to write a driver for the thing, I can’t find any way to say “No, really, give it more juice, it’s OK”.

(The iPod Shuffle, incidentally, does this better, by presenting two USB configurations, one driverless and 100mA, and the other usb-storage and 500mA; once the host decides that it’s a usb-storage device, it starts providing the charging current.)

Comments 3