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.

0

If you have a fediverse account, you can quote this note from your own instance. Search https://akko.erincandescent.net/objects/30eeaebf-efec-4023-9412-e4cff5310117 on your instance and quote it. (Note that quoting is not supported in Mastodon.)