USB enumeration short Steps

1) Hub/root detect device is whether high/full speed by detecting D+ and D- pull up signaling(reset and wait for atleast for 10ms and check using J and K states of signaling{check JKJKJK pattern]) and create data path between host and device after notifying root by Interrupt end point interrupt.

2) Host send get device descriptor to address 00h,endpoint zero to get max packet size of default pipe.though the request is for 64 byte descriptor at 8th byte size is found and status status stage of the transfer.

3)Host reset the device.

4) Host set the device address using SET ADDRESS

5)Host send Device descriptor request to learn device ability and other functions.It learns furter by requesting configuration descriptors ,and other subordinate descriptors (interface decriptor vendor specific descriptors etc.)

6) After learning from configuration descriptors host match best suitable driver for it and load it.

7) Host driver may select one configuration may request further configurations if devices support multiple configurations.And request device to chose a configuration using Set Configuration request.

Ref: USB in nutshell..

Comments

Popular posts from this blog

Airtel Digital tv remote factory reset and reprogram

Tracking Linux kworker threads

Asynchronus I/O (AIO) in vxworks and Linux