So the basic USB PD sequence is 1. Source: Source_Capabilities { 5V3A, other possible capabilities} 2. Sink: Request { 5V1.5A } 3. Source: Accept 4. Source: PS_Rdy I spent the entire day trying to work out why the source (my laptop) didn't like my Accept message. It was bitwise identical to what I saw other hardware sending, so I didn't understand why it disliked it. I added all sorts of debug logging to track it down. The problem turned out to be that my stack was too slow, on account of all of the debug logging. A good old embedded systems classic.
Reply