looks like your offcial USB specification is totally optional. Post your official USB specification link.http://www.usb.org/developers/docs/usb_20_110512.zip
Download, extract, view file usb_20.pdf. This document is:
1.2 Objective of the Specification
This document defines an industry-standard USB. The specification describes the bus attributes, the protocol definition, types of transactions, bus management, and the programming interface required to design and build systems and peripherals that are compliant with this standard.
So, this is the official standard.
This section describes the USB power distribution specification.
The power source and sink requirements of different device classes can be simplified with the introduction of the
concept of a unit load. A unit load is defined to be 100 mA. The number of unit loads a device can draw is an
A device may be either low-power at one unit load or high-power, consuming up to five unit loads. All devices default to low-power. The transition to high-power is under software control. It is the responsibility of software to ensure adequate power is available before allowing devices to consume high-power.
So, your device can have "1 load unit", or 100mA, for free. If your device wants more than 1 load unit/100mA, it may be configured for up to 5 load units (500mA) after appropriate software-controlled negotiation.
I know my original arduinos did not have the FTDI chips configured to negotiate for the full 500mA (use the FTDI-supplied configuration tool to examine/change this). I don't have any of the newer Atmel USB interfaced arduinos, so I don't know anything about their power negotiation characteristics.