On Thu, 22 Oct 2009, Rob Duncan wrote: > My reading of the USB specification is that the new address takes > effect after the SET_ADDRESS status stage is "completed successfully", > which means after the ACK for the ZLP is received by the device. That's right. If the device doesn't receive the ACK then it doesn't know that the host has received the ZLP, so it has to stay at the old address in order to receive a possible retransmission of the IN packet. > What > behavior should be expected if that ACK is sent by the host but lost > before it is received by the device? The host believes it has > successfully updated the devices address, but the device must continue > to respond to the old address. Right. The spec doesn't say explicitly what should happen in this case. > Does the host somehow detect this (perhaps because it can no longer > enumerate devices?), and what should it do if it does detect it? Presumably the host will continue with its enumeration procedure for the device and will fail because nothing responds at the expected address. This should cause it to disable the device's port or restart the enumeration from the beginning. Either way, there's no interference with other devices. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html