http://www.usb.org/developers/whitepapers/327216.pdf