Enumeration is the handshake that happens when a device is plugged in, where the device describes itself and the host sets it up. When the device attaches, it signals its presence and speed via a pull-up on D+ (full-speed) or D− (low-speed); the host issues a bus reset, then requests the device descriptor to learn what it is (vendor/product IDs, device class, and EP0's max packet size), assigns it a unique bus address with SET_ADDRESS, reads the full descriptor set (configuration, interfaces, endpoints, strings), selects and loads a matching driver based on the class/VID/PID, and finally issues SET_CONFIGURATION to make the device usable. Until that final configuration step the device isn't operational and is limited in the current it may draw. The reason enumeration matters in practice is that most "my USB device doesn't show up" problems are enumeration failures, malformed or inconsistent descriptors, a missing/wrong pull-up, or an inaccurate USB clock, so understanding the sequence tells you where to look. It's also what makes USB plug-and-play: the device is self-describing, so the host can configure anything without prior knowledge.
Communication Protocols · Interview question
What is enumeration?
A strong answer
What a weak answer sounds like
You know the answer. Do you know what gets you dinged?
Pro breaks down the answer most candidates actually give to this question — and the specific reason an interviewer marks it down. It’s the difference between sounding correct and sounding senior, on all 472 questions.
From the lesson
USB Basics
Host-controlled, self-describing, and far more complex than UART: enumeration, descriptors, endpoints, and the four transfer types, plus device classes like CDC that need no custom driver.