Are there any hosts in the real world that actually reject a device that requests >100 mA? The only one I've ever seen is an iOS device with a Camera Connection Kit attached to it (but our devices connect directly with a Lightning connector in that case).
I even bought some bus-powered USB hubs, expecting them to limit downstream ports to 100 mA, and
none of them did. They all lied and claimed to be self-powered, even AmazonBasics hub.
There is one report here of a hub refusing >100 mA:
https://superuser.com/q/1350148/13889Any smartphone models that have this limitation?
This article says that current limitations are "a myth" and you can just draw 500 mA all the time from everything with no problems. I know that's probably true for 99% of hosts, and
even the Type C spec seems to say "You can always draw 500 mA without even enumerating", but I want to really understand if there are any exceptions out there.
Similarly, USB OTG spec only requires hosts to support 8 mA.
OTG 1.0 On-The-Go Supplement to the USB 2.0 Specification Revision 1.0 2001-12-18
3.2 Dual-role Device
In addition to being a fully compliant USB 2.0 peripheral, a dual-role device must include the following features and characteristics:
...
• one, and only one, Mini-AB receptacle
• minimum 8 mA output on VBUS
...
A dual-role device must be able to source a minimum of 8 mA on VBUS when it is the A-device and a session is in progress.
...
An unconfigured, SRP capable, peripheral-only B-device shall not draw more than 8 mA average current (IB_PO_UNCFG max) from VBUS.
I'm confused as to whether our device would ever be plugged into such a host. They use the same connectors and behave like a normal host otherwise, right? So a smartphone, etc. could be following this spec? And then even if we request 100 mA it could conceivably be rejected?
SRP means:
Session Request Protocol (SRP), which allows a B-device to request the A-device to turn on VBUS and start a session. This protocol allows the A-device, which may be battery powered, to conserve power by turning VBUS off when there is no bus activity while still providing a means for the B-device to initiate bus activity.
...
Any B-device, including a standard USB peripheral, is allowed to initiate SRP.
So I guess if we don't support Data-line Pulsing or VBUS Pulsing, we can't connect to these devices anyway, so it's not relevant.
The context is that our device can run from batteries or not, depending on what it's plugged into, and I'd like it to charge as fast as possible from whatever it's plugged into, but still function from batteries even if current draw is refused.