TIer here. I used to work on OMAP USB back in the day, including on the OMAP3 and this particular board. Mainly Linux drivers, so not directly on the boot behavior which was done by ROM code. Fond memories and nice to see this pop up today. I’m generally curious if Doug ever asked about the behavior on the linux-usb mailing list or elsewhere and what the response was. There were a few of us from that time that might have been able to help.
Very cool that you worked on the OMAP3 and BeagleBoard! I didn't ask anybody else about it. I just decided to tinker with my USB sniffer to try to get to the bottom of what was going on.
I'm still a little puzzled about why the 2 second retry doesn't work. It might be worth diving in deeper to figure out why the data received during the retry never makes its way back to libusb. It's a bit of an edge case, but it seems like it could potentially be a bug. I might consider bringing that up as a question on the linux-usb list.
I have a BeagleBoard like that in a drawer somewhere. Getting it to boot from USB may be a reason to fiddle with it again, sounds fun.
As a side note, I want that reasonably priced <https://github.com/ataradov/usb-sniffer>.. I've felt the need for one several times (I've always enjoyed work which involves looking at problematic low level traffic data, for some weird reason). But soldering a QFN chip is not something I'm set up to do, unfortunately. However, apparently AliExpress sells them pre-built.. though Taradov himself states "Do not buy CY7C68013A from eBay or AliExpress, they all are either fake or sketchy". I wonder if that also applies to pre-built boards including that MCU.
The sketchy part comes from no buffering/clamping/conditioning of inputs on those $5 "logic analyzer" ebay boards. Means you only get CMOS compatible signal levels* and might fry it with bad signal, but at prices like this https://pl.aliexpress.com/item/1005003649856071.html blowing a few is a non issue.
* meaning you need to know your probed signal will work beforehand, for example by verifying with a scope first.
reply