i found the standards themselves fine for all that. i did look at a book but it didn't notice the ambiguity in the endpoint definition either, and the book won't help you write the code for OHCI. it might even mislead: as with PCMCIA, there's a peculiar terminology and assumed structure to device interfaces that doesn't necessarily match the way the software might choose to see it. it's a bit like books that tell you that BSD sockets are the only way to do networking. it's not as bad as books that told you that OSI was any way to do networking. i think my main moans about USB would be that the raw protocol and interfaces are tolerable, but neither UHCI nor OHCI are the way i'd choose to see those, for different reasons; also that the device description and manufacturer-independent driver approach didn't work out in the end. perhaps the latter has improved since i last dealt with it. in any case, it's there, growing, and needs to be dealt with.