Electrical – USB 1.0 Host speed negotiation to USB 2.0 Device

usbusb deviceusb-host

What is the negotiation sequence of a Low Speed (USB 1.0) Host connected to a High Speed (USB 2.0 Device) ?
On connection the Device pulls up the D+. If this was HS/FS the Host would pull the D+ down – transmit SE0, followed by the device K chirp. But in this case the LS Host is waiting for a D- pull up connection event ?

Best Answer

Low speed (1.5 Mbps) devices can attach to any USB host (1.0, 1.1, 2.0 or 3.0). The low speed device initiates communication by pulling D- to 3 volts via 1500 ohm resistor. Any version USB host will be immediately able to communicate with the device at 1.5Mbps, e.g. ask for device descriptor, set address etc. Full and high speed devices use D+ for the same purpose.

I'd be surprised if there is a low-speed-only USB host commercially available. But if you are making the USB host yourself, and you only need to support low speed devices, such as an old keyboard or mouse, then you don't need to implement full speed. You don't need anything that is not necessary for your application as you have complete control on how you want to communicate with the device (except the speed). And by making the host yourself, I mean that you are not using a ready-made USB hardware. Perhaps you are using discrete logic or even bit-banging it on a microcontroller (there are known software implementations that bit-bang 1.5 Mbps USB).

With discrete logic, CPLD etc, it's not that complex. At core level, USB is remarkably simple. As an example, here's logic of how to do a USB receiver with just 15 flip-flops. I once did it because I was bored one summer day in 2014. It snoops USB data and converts it to SPI output so it can be snooped with a microcontroller with an SPI input.

USB receiver with 15 flip flops

Obviously, if a full speed or high speed device is connected to your low-speed-only host, your host will not be able to initiate communication with those devices. But if you're only going to attach low speed devices, then you don't need full speed. You can still detect the DP pull-up of full/high speed device and display a message that the device is not supported.