Following an issue with a USB memory stick I'd like to make a tester that can give me results I cant get from connecting to a PC.
I have in mind something like this
Get a hold of the old USB 1.1 specification. It explains how everything works before USB got real complicated. See chapter 7 Electrical for the physical set-up
311 pages!
This is useful:
The USB uses a differential output driver to drive the USB data signal onto the USB cable. The static output swing of the driver in its low state must be below V OL (max) of 0.3V with a 1.5k load to 3.6V and
in its high state must be above the V OH (min) of 2.8V with a 15k load to ground as listed in Table 7-5.
However, everything in the old specification still applies since it's backwards compatible.
In the past, I have used PIC microcontrollers when doing USB but they at least had the tranceivers and some of the simple processing built in.
For example, you want to send 0x15 from NANO to PC using USB Protocol, then you need firmware at the NANO side that will mimic the whole/part of CH340G type TTL <----> USB Converter.