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.)

3 responses to “overriding usb charging current in linux?”

  1. Bizarre. When I plug my berry into any USB port, it starts charging. I don’t usually even install the drivers under Windows. I’ve charged it off a Linux host and my Playstation 2 without issue.

  2. I just got a Blackberry myself and am working on the issue. I’m not familiar with the usb module, but now is as good a time as any to figure it out.

    If I find anything, I will be sure to post the fix here.

  3. I have been working on this too. I tried writing udev rules to set bMaxPower to 500mA, but i guess you cant override the settings that the BB tells the computer for that setting with udev.