December 2, 2023

Let's learn USB! -- Progress Report, 12-2-2023

Where exactly are we? Right now, we see this in the linux kernel logs from my code:
Dec  2 20:09:05 trona kernel: usb 2-1.2: new full-speed USB device number 63 using ehci-pci
Dec  2 20:09:05 trona kernel: usb 2-1.2: device descriptor read/all, error -32
Dec  2 20:09:05 trona kernel: usb 2-1.2: new full-speed USB device number 64 using ehci-pci
Dec  2 20:09:05 trona kernel: usb 2-1.2: device descriptor read/64, error -32
Our log of this is:
Enum Reset
1 Enum Rx S 8B10 EA60 8 8006000100004000
2 Enum Tx   8B00 72A0 18 120100020200004083044057000201020301
3 Enum Reset
4 Enum Rx S 8B10 EA60 8 00053F0000000000
5 Enum Tx   8B00 72A0 0
6 Enum Reset
The first exchange worked. I was asked for, and returned the device descriptor.
Then the host reset us and set our address, which seemed to work. I see the address 0x3f in the packet (63) and linux does not complain about the address not being set (as it sometimes does).

From working enumerations (watching papoon) the host should then ask for the device descriptor again. I seem to have never received this packet, so I certainly wouldn't reply to it. But linux seems to think it sent a request, so there we are. Maybe Wireshark would shed some light on this. Here is what I see running wireshark.

So, linux is satisfied that I have set the address, but I have apparently failed to do so, and the packets are not being received.
Feedback? Questions? Drop me a line!

Tom's Computer Info / [email protected]