From mouse at Rodents-Montreal.ORG Sun Mar 8 15:08:20 2026 From: mouse at Rodents-Montreal.ORG (Mouse) Date: Sun, 8 Mar 2026 11:08:20 -0400 (EDT) Subject: [geeks] USB reference? Message-ID: <202603081508.LAA29480@Stone.Rodents-Montreal.ORG> I'm looking for ground-up documentation on USB (reasons below in case anyone cares). At the moment I'm most interested in conceptual protocol-level documentation (what is an endpoint, how do transfers work, that kind of thing), but I've found that understanding a thing at every level usually turns out to be valuable eventually. I want to build host software to speak to a USB device. I've been noodling around the Web this morning (I'm not much good at it; it's difficult and unpleasant for me) and have found pretty close to nothing: everything is either descriptions designed for the sort of person who doesn't know what an ohm or a byte really is or documentation on close to the very lowest level (connector pinouts and such), nothing in between. Anyone got any pointers? As for why I care: A friend just gave me a (relatively) open smartphone. I of course want to replace the software on it (especially as the existing software is an Android variant which refuses to complete its setup without making me agree to some Google ToS even when I tell it to turn off all the Google `features' it offers). There is a magic startup gesture which allows dropping into the bootloader. But the bootloader then just tells me to connect USB and run a particular tool on the host. That tool requires a whole pile of prerequisites to build and appears to be Linux-only. I've found a document which speaks in terms such as "requires two bulk endpoints, one in and one out; max packet size is 64 bytes; packet content in this direction is such-and-such". I obviously am lacking details of important concepts - an endpoint is a simple concept, but the devil is, as always, in the details; I can't write software for using this without knowing what, for example, it means to send a packet to an endpoint, how to set up endpoints, etc. I may be able to use some existing software, but first I need to know enough to figure out whether existing software does anything useful for what I want. /~\ The ASCII Mouse \ / Ribbon Campaign X Against HTML mouse at rodents-montreal.org / \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B