Made a brief detour to write a Wireshark dissector for I2C comms with FUSB302 controller: from what I see, message exchange goes the same way as with a regular Type-C cable:
Source_Capabilities →
← Request
Accept →
PS_RDY →
But then, unlike a regular cable, about 2.8 seconds after PS_RDY, MagSafe cable cuts the power and the whole process restarts from scratch.
One of the suspects I have is the lack of normal ongoing message exchange between Sink and Source, but the timing doesn’t line up. (Still possible that Apple has hardcoded a shorter timeout, so I still want to try sending them with 1s intervals and see what happens)
I think at this stage I’ll try to make a USB PD sniffer out of FUSB302 and find someone with a macbook and obtain a dump of communications between MagSafe cable and the IC that Apple is using in their laptops. (Until now I’ve used Pinecil breakout board attached to a logic analyzer to dump the I2C bus Pinecil’s internal FUSB302 is connected to)
If it indeed turns out that the cable requires slightly modified protocol, then we’d have two options:
- modify EC firmware to support these modifications (at least on my AMD Framework 13 it seems that EC is handling PD negotiation and the main system knows nothing about it)
- have a microcontroller inside the expansion card to take care of that, presenting a normal PD interface to the laptop