Hi Steve, > I don't want to spam the list with this large sample file. It was captured > at work with a Catalyst SBAE 3 analyzer. It contains the complete > enumeration of my mouse (ie low speed) on my XP Home laptop. It has a lot > of data and this text export file is hard to read, but it should give you > everything you need. I won't have access to simpler, easier to read kitty > analyzer until this weekend when I get home. > > If you want I can send you another capture this weekend.
Thanks a lot for the capture file. Windows XP seems to enumerate low speed devices by performing the following requests in sequence: GET_DESCRIPTOR(DEVICE, 18 bytes) SET_ADDRESS GET_DESCRIPTOR(DEVICE, 18 bytes) GET_DESCRIPTOR(CONFIGURATION, 9 bytes) GET_DESCRIPTOR(CONFIGURATION, full) while linux-2.6.7 does SET_ADDRESS GET_DESCRIPTOR(DEVICE, 8 bytes) GET_DESCRIPTOR(DEVICE, 18 bytes) GET_DESCRIPTOR(CONFIGURATION, 9 bytes) GET_DESCRIPTOR(CONFIGURATION, full) The following comment is present in hub.c:1175 /* cope with hardware quirkiness: * - let SET_ADDRESS settle, some device hardware wants it * - read ep0 maxpacket even for high and low speed, */ Could anyone tell me who added that comment ? Is anyone aware of any low-speed device that would fail with more than ep0 maxpacket ? My low-speed device fails for ep0 maxpacket :-) If we want to mimic Windows XP behaviour, the request size should be raised to 18 bytes (which is the size of a device descriptor), and SET_ADDRESS should be issued after reading the descriptor. Laurent Pinchart
pgp6rdfmdf5hF.pgp
Description: signature
