Why doesn't my computer USB port break when I plug in a 2A device?

To be compatible with the original standard, USB devices should not draw more than 100mA (which is plenty to power the logic interface), until they have negotiated with the host, to find out what it can supply. After successful negotiation, they can draw up to 500mA. This is to protect the operation of a 4 port hub, should it be plugged into a PC with all its downstream devices already attached.

Not all USB devices are compliant to the standard, but just draw full current anyway, USB toys commonly do this. Most PCs provide 500mA anyway, so it all generally works.

Dumb power supplies generally hold their data lines in particular states, to signal to the device being charged that they are a power supply, with a certain capability. Later standard revisions allow USB-C and PCs higher currents, and higher voltages (eek!) to be negotiated.


Historically:

  • really old mainboards connect USB power pins to the 5V power rail, with no protection
  • power on by keypress was added, which added a jumper or a BIOS setting that decided whether USB ports would be powered from the standby power or from the regular 5V rail. Since standby power was introduced in ATX, this does not exist on AT mainboards.
  • USB port power control was added to root hubs, allowing the host to turn off power to ports programmatically (with the hub controller switching an external "power" FET). These supply a lot of power to the ports, and have no meaningful protection besides using the FET as a current limiter, which is generally a bad idea for prolonged time as these are not usually cooled.
  • the control FET was later integrated into the root hub as manufacturing processes improved to a point where you could run a few hundred mA through what is otherwise a logic IC. This setup has lower current carrying capability, and shorting USB ports will usually destroy the southbridge IC and/or cause a reboot.
  • current monitoring and emergency shutdown were added to the controllers as well as processes permitted.

There are also some older mainboards that implement current monitoring as discrete components (increasing board cost, but giving robustness), but on consumer boards, expect the cheapest possible approach.

Some modern boards also use the same kind of integrated voltage/current controller that usually provides CPU and chipset power to control other circuits, as these ICs are sufficiently cheap that duplicating the logic around them saves enough engineering effort to make them a good contender to "dumb" FETs. On such boards you'd probably be able to draw exactly 2.000A, but current monitoring and reporting may be limited as communication between the USB root hub and the power controller is just "enable" and "error" signals.


My question is:

  • Do USB ports or devices typically have a mechanism to regulate current to avoid overloading ports?

The answer is yes, they do.

USB includes a fairly elaborate protocol that allows devices and hosts to negotiate the amount of power that the device can use.