I have found out how to make it work in “sky/monitor” mode now.
The “SRC” is the laptop side.
The “SNK” is the usb device attached to the laptop.
FW16 trace that cycles about every 2 seconds:
EVENT 37471 1 EVENT_ATTACHED 0
DEBUG 37471 1 VBUS:3703, CC:1 1
SRC 37531 1 SOP PD3 s:006 H:0x11A1 (id:0, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910127
Option: UNCHUNK DRD USB DRP
[1] Fixed : 5V - 3A
2
SRC 37533 1 SOP PD3 s:006 H:0x11A1 (id:0, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910127
Option: UNCHUNK DRD USB DRP
[1] Fixed : 5V - 3A
3
SRC 37534 1 SOP PD3 s:006 H:0x11A1 (id:0, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910127
Option: UNCHUNK DRD USB DRP
[1] Fixed : 5V - 3A
4
SRC 37716 1 SOP PD3 s:006 H:0x13A1 (id:1, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910127
Option: UNCHUNK DRD USB DRP
[1] Fixed : 5V - 3A
5
SRC 37717 1 SOP PD3 s:006 H:0x13A1 (id:1, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910127
Option: UNCHUNK DRD USB DRP
[1] Fixed : 5V - 3A
6
SRC 37719 1 SOP PD3 s:006 H:0x13A1 (id:1, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910127
Option: UNCHUNK DRD USB DRP
[1] Fixed : 5V - 3A
7
SRC 37900 1 SOP PD3 s:006 H:0x15A1 (id:2, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910127
Option: UNCHUNK DRD USB DRP
[1] Fixed : 5V - 3A
8
SRC 37902 1 SOP PD3 s:006 H:0x15A1 (id:2, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910127
Option: UNCHUNK DRD USB DRP
[1] Fixed : 5V - 3A
9
SRC 37903 1 SOP PD3 s:006 H:0x15A1 (id:2, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910127
Option: UNCHUNK DRD USB DRP
[1] Fixed : 5V - 3A
10
SNK 37904 1 SOP s:002 H:0x0481 (id:2, DR:UFP, PR:SNK) GOODCRC 11
SNK 37907 1 SOP PD3 REQUEST s:006 H:0x1082 (id:0, DR:UFP, PR:SNK) DATA: 2CB10412
ObjectPosition:1
GiveBack:0
CapabilityMismatch:0
USBCommunicationCapable:1
NoUSBSuspend:0
UnchunkedExtendedMessagesSupported:0
MaximumOperatingCurrent:3000mA
OperatingCurrent:3000mA 12
SRC 37907 1 SOP s:002 H:0x0161 (id:0, DR:DFP, PR:SRC) GOODCRC 13
SRC 37909 1 SOP PD3 ACCEPT s:002 H:0x07A3 (id:3, DR:DFP, PR:SRC) 14
SRC 37911 1 SOP PD3 ACCEPT s:002 H:0x07A3 (id:3, DR:DFP, PR:SRC) 15
SRC 37912 1 SOP PD3 ACCEPT s:002 H:0x07A3 (id:3, DR:DFP, PR:SRC) 16
SRC 37915 1 SOP PD3 SOFT_RESET s:002 H:0x01AD (id:0, DR:DFP, PR:SRC) 17
SRC 37916 1 SOP PD3 SOFT_RESET s:002 H:0x01AD (id:0, DR:DFP, PR:SRC) 18
SRC 37918 1 SOP PD3 SOFT_RESET s:002 H:0x01AD (id:0, DR:DFP, PR:SRC) 19
DEBUG 37996 1 VBUS:960: CC:1 20
EVENT 37996 1 EVENT_DETACHED 21
Note: After the SOFT_RESET attempt, the SRC (FW Laptop) also sends a HARD_RESET, but that is not shown here. It only appears on the oscilloscope data recording.
A good trace from a different non-FW laptop:
EVENT 898815 1 EVENT_ATTACHED 0
DEBUG 898815 1 VBUS:1536, CC:1 1
SRC 898941 1 SOP PD2 s:006 H:0x1161 (id:0, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910104
Option: USB
[1] Fixed : 5V - 3A
2
SRC 898942 1 SOP PD2 s:006 H:0x1161 (id:0, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910104
Option: USB
[1] Fixed : 5V - 3A
3
SRC 898944 1 SOP PD2 s:006 H:0x1161 (id:0, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910104
Option: USB
[1] Fixed : 5V - 3A
4
SRC 898946 1 SOP PD2 s:006 H:0x1161 (id:0, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910104
Option: USB
[1] Fixed : 5V - 3A
5
SRC 899058 1 SOP PD2 s:006 H:0x1361 (id:1, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910104
Option: USB
[1] Fixed : 5V - 3A
6
SRC 899060 1 SOP PD2 s:006 H:0x1361 (id:1, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910104
Option: USB
[1] Fixed : 5V - 3A
7
SRC 899062 1 SOP PD2 s:006 H:0x1361 (id:1, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910104
Option: USB
[1] Fixed : 5V - 3A
8
SRC 899063 1 SOP PD2 s:006 H:0x1361 (id:1, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910104
Option: USB
[1] Fixed : 5V - 3A
9
SRC 899175 1 SOP PD2 s:006 H:0x1561 (id:2, DR:DFP, PR:SRC) SRC_CAPABILITIES DATA: 2C910104
Option: USB
[1] Fixed : 5V - 3A
10
SNK 899176 1 SOP s:002 H:0x0441 (id:2, DR:UFP, PR:SNK) GOODCRC 11
SNK 899178 1 SOP PD2 REQUEST s:006 H:0x1042 (id:0, DR:UFP, PR:SNK) DATA: 2CB10412
ObjectPosition:1
GiveBack:0
CapabilityMismatch:0
USBCommunicationCapable:1
NoUSBSuspend:0
UnchunkedExtendedMessagesSupported:0
MaximumOperatingCurrent:3000mA
OperatingCurrent:3000mA 12
SRC 899179 1 SOP s:002 H:0x0161 (id:0, DR:DFP, PR:SRC) GOODCRC 13
SRC 899180 1 SOP PD2 ACCEPT s:002 H:0x0763 (id:3, DR:DFP, PR:SRC) 14
SNK 899180 1 SOP s:002 H:0x0641 (id:3, DR:UFP, PR:SNK) GOODCRC 15
SRC 899211 1 SOP PD2 PS_RDY s:002 H:0x0966 (id:4, DR:DFP, PR:SRC) 16
SNK 899212 1 SOP s:002 H:0x0841 (id:4, DR:UFP, PR:SNK) GOODCRC 17
SRC 899215 1 SOP PD2 GET_SNK_CAP s:002 H:0x0B68 (id:5, DR:DFP, PR:SRC) 18
SNK 899216 1 SOP s:002 H:0x0A41 (id:5, DR:UFP, PR:SNK) GOODCRC 19
SNK 899216 1 SOP PD2 s:006 H:0x1244 (id:1, DR:UFP, PR:SNK) [1] Fixed : (5V - 3A)
SNK_CAPABILITIES DATA: 2C910104 20
SRC 899217 1 SOP s:002 H:0x0361 (id:1, DR:DFP, PR:SRC) GOODCRC 21
It looks like the main problem here is the Laptop(SRC) sends the “ACCEPT” but never received a GOODCRC in return from the device(SNK).
I don’t know what the cause of this is yet, it could be any off (guesses):
- Signal noise or distortion or wrong levels on the Laptop TX side so that when it arrives at the destination device, it sees CRC errors. Note: There is no reporting of bad CRC, so this will be hard to be sure about.
- The Laptop TX side does not wait long enough between transmissions for the device to react.
- The Laptop RX side is not sensitive enough and sees more CRC errors that other non-FW laptops.
In summary, I need to find a way for the spy/monitor to report bad CRC errors and maybe hook up a digital oscilloscope to look for problems in the signal.
The TX and the RX is done over the same cable it will be difficult to know which side is sending when on the oscilloscope display.
- laptop not providing enough power to the device to complete the CC power negotiation process.
- The SNK (device) is simply not responding to the SRC (laptop) ACCEPT request.
I have connected a data capture oscilloscope to the CC1 pin and then decoded the resulting CC messages. Checked all their CRCs and they are OK, but (5) is confirmed. the SNK is simply not responding to the SRC ACCEPT request as no pulses for it appear on the oscilloscope.
- The SNK (device) is not correctly detecting when the CC link is “idle”, and thus not responding when it should. This needs further investigation. The “gap” between messages does appear to be different when comparing FW and non-FW laptops.
- Observation, but no impact on this problem: Neither the FW or the Non-FW laptop send requests to find out which type of cable is attached.
There are some SOP’ “vendor specific” messages that I see on the oscilloscope data that is not present on the spy/monitor output. The SRC (laptop) is not sending GoodCRC for those, so it keeps trying to repeat send them. This is non-compliant to the USB-PD standard, but the non-FW laptop also does not respond to the SOP’ messages, but works fine, so I think that point is not the cause of the problem.