diff --git a/periscope/src/backend/periscopex/protocol_catalog.py b/periscope/src/backend/periscopex/protocol_catalog.py index c86352e..800119a 100644 --- a/periscope/src/backend/periscopex/protocol_catalog.py +++ b/periscope/src/backend/periscopex/protocol_catalog.py @@ -564,6 +564,7 @@ DOC_USBC_FTS = ( REV_USBC_FTS = "Revision 0.91, March 3, 2024" DOC_USBC_CABCON = "USB Type-C Cable and Connector Specification" REV_USBC_CABCON = "Release 2.5, March 2026" +REV_USBC_CABCON_R20 = "Release 2.0, August 2019" ORG_USB30PG = "USB 3.0 Promoter Group" DOC_DVI_10 = "Digital Visual Interface (DVI)" REV_DVI_10 = "Revision 1.0, 02 April 1999" @@ -581,7 +582,8 @@ DOC_USB_LSFS = ( ) DOC_USB_PD_VSAFE = ( "USB Power Delivery specification vSafe5V (not on file; Type-C CabCon R2.5 names vSafe5V " - "without restating the volt range)" + "and tVBUSON as the minimum vSafe5V threshold without restating the volt range. " + "Type-C Current charger 4.75–5.5 V is not vSafe5V)" ) DOC_IEEE_8023 = "IEEE 802.3 (clause for this variant; not on file)" DOC_IEEE_2012 = "IEEE Std 802.3-2012 IEEE Standard for Ethernet" @@ -989,16 +991,92 @@ def build_m0_catalog() -> dict[str, Any]: conditions=["powered cable VCONN", "Ra minimum 800 Ω", "maximum 1.2 kΩ"], )) continue + if p == "voltage": + out.append(_num( + pid, p, 4.75, "V", + document=DOC_USBC_CABCON, organization=ORG_USB30PG, + revision=REV_USBC_CABCON, section="4.8.1.2", + table="Figure 4-39", page="233", + source_type="CABLE", + conditions=[ + "USB Type-C Current charger (non-PD)", + "no-load output minimum 4.75 V (maximum 5.5 V)", + "measured at charger captive-cable plug / charger output", + "not USB PD vSafe5V", + "not a PCB trace voltage", + ], + )) + continue + if p == "vbus_requirements": + out.append(_num( + pid, p, 4.0, "V", + document=DOC_USBC_CABCON, organization=ORG_USB30PG, + revision=REV_USBC_CABCON, section="4.8.1.2", + table="Figure 4-39", page="233", + source_type="CABLE", + conditions=[ + "USB Type-C Current charger (non-PD)", + "at 3 A: 4.0–5.5 V", + "measured at charger captive-cable plug / charger output", + "not USB PD vSafe5V", + "not a PCB trace voltage", + ], + )) + continue + if p == "electrical_thresholds": + out.append(_num( + pid, p, 1.50, "V", + document=DOC_USBC_CABCON, organization=ORG_USB30PG, + revision=REV_USBC_CABCON_R20, section="4.11.3", + table="Table 4-32", page="240", + source_type="PCB", + conditions=[ + "Source shall-detect Sink (vRd), Default USB Type-C Current", + "vRd 0.25–1.50 V; detect threshold 1.60 V", + "R2.5 §4.11.3.2 tables are variance examples, not this shall-detect table", + ], + )) + continue + if p == "timing": + out.append(_num( + pid, p, 100.0, "ms", + document=DOC_USBC_CABCON, organization=ORG_USB30PG, + revision=REV_USBC_CABCON, section="4.11.2", + table="Table 4-34", page="250", + source_type="PCB", + conditions=[ + "tCCDebounce minimum (maximum 200 ms)", + "time a port shall wait before it can determine it is attached", + ], + )) + continue + if p == "termination": + out.append(_num( + pid, p, 126000.0, "ohm", + document=DOC_USBC_CABCON, organization=ORG_USB30PG, + revision=REV_USBC_CABCON, section="4.11.1", + table="Table 4-30", page="246", + source_type="CONNECTOR", + conditions=[ + "zOPEN minimum impedance to GND", + "Disabled / ErrorRecovery / unpowered Source", + "not Rp / Rd / Ra", + ], + )) + continue doc = DOC_USB_CABLE if p == "usb2_channel_requirements": doc = DOC_USB_ELEC - if p in {"vbus_requirements", "voltage"}: - doc = DOC_USB_PD_VSAFE if p == "current_advertisement": doc = ( "USB Type-C Cable and Connector Specification Release 2.5 Table 4-27 " "(Default USB Power / 1.5 A @ 5 V / 3.0 A @ 5 V — not a single ampere)" ) + if p == "cc": + doc = ( + "USB Type-C Cable and Connector Specification Release 2.0 Table 4-32 " + "(Source CC shall-detect packed as electrical_thresholds; CC is not a single ohm)" + ) out.append(_c(pid, p, "UNKNOWN", needed_document=doc)) out.append(_num( pid, "rp_1a5", 22000.0, "ohm", @@ -1028,6 +1106,52 @@ def build_m0_catalog() -> dict[str, Any]: mandatory="OPTIONAL", source_type="CABLE", conditions=["cable IR drop for VBUS; not a receptacle PCB ohm"], )) + out.append(_num( + pid, "vopen_source_default", 1.65, "V", + document=DOC_USBC_CABCON, organization=ORG_USB30PG, + revision=REV_USBC_CABCON_R20, section="4.11.3", + table="Table 4-32", page="240", + source_type="PCB", + conditions=[ + "Source CC no-connect (vOPEN) Default USB advertisement", + "R2.5 does not restate this shall-detect table", + ], + )) + out.append(_num( + pid, "vra_source_default_max", 0.15, "V", + document=DOC_USBC_CABCON, organization=ORG_USB30PG, + revision=REV_USBC_CABCON_R20, section="4.11.3", + table="Table 4-32", page="240", + source_type="PCB", + conditions=[ + "Source shall-detect powered cable/adapter (vRa) Default USB", + "vRa 0.00–0.15 V; threshold 0.20 V", + ], + )) + out.append(_num( + pid, "vrd_detect_threshold_default", 1.60, "V", + document=DOC_USBC_CABCON, organization=ORG_USB30PG, + revision=REV_USBC_CABCON_R20, section="4.11.3", + table="Table 4-32", page="240", + source_type="PCB", + conditions=["Source vRd detect threshold, Default USB Type-C Current"], + )) + out.append(_num( + pid, "t_vbuson_max", 275.0, "ms", + document=DOC_USBC_CABCON, organization=ORG_USB30PG, + revision=REV_USBC_CABCON, section="4.11.2", + table="Table 4-32", page="247", + source_type="PCB", + conditions=[ + "tVBUSON maximum (minimum 0 ms)", + "from Attached.SRC until VBUS reaches the minimum vSafe5V threshold at the source receptacle", + "vSafe5V volt range is USB PD, not restated here", + ], + )) + out.append(_c( + pid, "vsafe5v", "UNKNOWN", + needed_document=DOC_USB_PD_VSAFE, + )) return out def _eth_cons(pid: str, lid: str) -> list[dict[str, Any]]: diff --git a/periscope/src/backend/periscopex/protocol_data/catalog.json b/periscope/src/backend/periscopex/protocol_data/catalog.json index ba2c333..892895f 100644 --- a/periscope/src/backend/periscopex/protocol_data/catalog.json +++ b/periscope/src/backend/periscopex/protocol_data/catalog.json @@ -2543,22 +2543,34 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "USB Type-C Cable and Connector Specification Release 2.5, March 2026" + "needed_document": "USB Type-C Cable and Connector Specification Release 2.0 Table 4-32 (Source CC shall-detect packed as electrical_thresholds; CC is not a single ohm)" }, { "id": "usb-c-receptacle-vbus_requirements", "parameter": "vbus_requirements", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "CABLE", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 4.0, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.5, March 2026", + "section": "4.8.1.2", + "table": "Figure 4-39", + "page": "233" + }, + "conditions": [ + "USB Type-C Current charger (non-PD)", + "at 3 A: 4.0\u20135.5 V", + "measured at charger captive-cable plug / charger output", + "not USB PD vSafe5V", + "not a PCB trace voltage" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "USB Power Delivery specification vSafe5V (not on file; Type-C CabCon R2.5 names vSafe5V without restating the volt range)" + "typical": false }, { "id": "usb-c-receptacle-current_advertisement", @@ -2578,62 +2590,103 @@ { "id": "usb-c-receptacle-voltage", "parameter": "voltage", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "CABLE", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 4.75, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.5, March 2026", + "section": "4.8.1.2", + "table": "Figure 4-39", + "page": "233" + }, + "conditions": [ + "USB Type-C Current charger (non-PD)", + "no-load output minimum 4.75 V (maximum 5.5 V)", + "measured at charger captive-cable plug / charger output", + "not USB PD vSafe5V", + "not a PCB trace voltage" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "USB Power Delivery specification vSafe5V (not on file; Type-C CabCon R2.5 names vSafe5V without restating the volt range)" + "typical": false }, { "id": "usb-c-receptacle-timing", "parameter": "timing", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "PCB", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 100.0, + "unit": "ms", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.5, March 2026", + "section": "4.11.2", + "table": "Table 4-34", + "page": "250" + }, + "conditions": [ + "tCCDebounce minimum (maximum 200 ms)", + "time a port shall wait before it can determine it is attached" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "USB Type-C Cable and Connector Specification Release 2.5, March 2026" + "typical": false }, { "id": "usb-c-receptacle-electrical_thresholds", "parameter": "electrical_thresholds", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "PCB", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 1.5, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.0, August 2019", + "section": "4.11.3", + "table": "Table 4-32", + "page": "240" + }, + "conditions": [ + "Source shall-detect Sink (vRd), Default USB Type-C Current", + "vRd 0.25\u20131.50 V; detect threshold 1.60 V", + "R2.5 \u00a74.11.3.2 tables are variance examples, not this shall-detect table" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "USB Type-C Cable and Connector Specification Release 2.5, March 2026" + "typical": false }, { "id": "usb-c-receptacle-termination", "parameter": "termination", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "CONNECTOR", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 126000.0, + "unit": "ohm", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.5, March 2026", + "section": "4.11.1", + "table": "Table 4-30", + "page": "246" + }, + "conditions": [ + "zOPEN minimum impedance to GND", + "Disabled / ErrorRecovery / unpowered Source", + "not Rp / Rd / Ra" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "USB Type-C Cable and Connector Specification Release 2.5, March 2026" + "typical": false }, { "id": "usb-c-receptacle-connector_requirements", @@ -2760,6 +2813,117 @@ ], "value_origin": "SPEC", "typical": false + }, + { + "id": "usb-c-receptacle-vopen_source_default", + "parameter": "vopen_source_default", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "PCB", + "source_class": "NORMATIVE", + "value": 1.65, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.0, August 2019", + "section": "4.11.3", + "table": "Table 4-32", + "page": "240" + }, + "conditions": [ + "Source CC no-connect (vOPEN) Default USB advertisement", + "R2.5 does not restate this shall-detect table" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "usb-c-receptacle-vra_source_default_max", + "parameter": "vra_source_default_max", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "PCB", + "source_class": "NORMATIVE", + "value": 0.15, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.0, August 2019", + "section": "4.11.3", + "table": "Table 4-32", + "page": "240" + }, + "conditions": [ + "Source shall-detect powered cable/adapter (vRa) Default USB", + "vRa 0.00\u20130.15 V; threshold 0.20 V" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "usb-c-receptacle-vrd_detect_threshold_default", + "parameter": "vrd_detect_threshold_default", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "PCB", + "source_class": "NORMATIVE", + "value": 1.6, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.0, August 2019", + "section": "4.11.3", + "table": "Table 4-32", + "page": "240" + }, + "conditions": [ + "Source vRd detect threshold, Default USB Type-C Current" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "usb-c-receptacle-t_vbuson_max", + "parameter": "t_vbuson_max", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "PCB", + "source_class": "NORMATIVE", + "value": 275.0, + "unit": "ms", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.5, March 2026", + "section": "4.11.2", + "table": "Table 4-32", + "page": "247" + }, + "conditions": [ + "tVBUSON maximum (minimum 0 ms)", + "from Attached.SRC until VBUS reaches the minimum vSafe5V threshold at the source receptacle", + "vSafe5V volt range is USB PD, not restated here" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "usb-c-receptacle-vsafe5v", + "parameter": "vsafe5v", + "value_kind": "UNKNOWN", + "mandatory": "MANDATORY", + "source_type": "STANDARD", + "source_class": "NORMATIVE", + "value": null, + "unit": null, + "source": null, + "conditions": [], + "value_origin": "SPEC", + "typical": false, + "needed_document": "USB Power Delivery specification vSafe5V (not on file; Type-C CabCon R2.5 names vSafe5V and tVBUSON as the minimum vSafe5V threshold without restating the volt range. Type-C Current charger 4.75\u20135.5 V is not vSafe5V)" } ], "notes": "USB Type-C connector/interface system. Not USB 2.0/3.x/USB4 protocol. Rp/Rd/Ra from CabCon R2.5 Tables 4-27/4-28/4-29. VBUS volts still USB PD vSafe5V.", @@ -3418,7 +3582,7 @@ "conditions": [], "value_origin": "SPEC", "typical": false, - "needed_document": "USB Type-C Cable and Connector Specification Release 2.5, March 2026" + "needed_document": "USB Type-C Cable and Connector Specification Release 2.0 Table 4-32 (Source CC shall-detect packed as electrical_thresholds; CC is not a single ohm)" }, { "id": "usb-c-usb2-receptacle-current_advertisement", @@ -3438,47 +3602,78 @@ { "id": "usb-c-usb2-receptacle-voltage", "parameter": "voltage", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "CABLE", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 4.75, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.5, March 2026", + "section": "4.8.1.2", + "table": "Figure 4-39", + "page": "233" + }, + "conditions": [ + "USB Type-C Current charger (non-PD)", + "no-load output minimum 4.75 V (maximum 5.5 V)", + "measured at charger captive-cable plug / charger output", + "not USB PD vSafe5V", + "not a PCB trace voltage" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "USB Power Delivery specification vSafe5V (not on file; Type-C CabCon R2.5 names vSafe5V without restating the volt range)" + "typical": false }, { "id": "usb-c-usb2-receptacle-timing", "parameter": "timing", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "PCB", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 100.0, + "unit": "ms", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.5, March 2026", + "section": "4.11.2", + "table": "Table 4-34", + "page": "250" + }, + "conditions": [ + "tCCDebounce minimum (maximum 200 ms)", + "time a port shall wait before it can determine it is attached" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "USB Type-C Cable and Connector Specification Release 2.5, March 2026" + "typical": false }, { "id": "usb-c-usb2-receptacle-electrical_thresholds", "parameter": "electrical_thresholds", - "value_kind": "UNKNOWN", + "value_kind": "NUMERIC", "mandatory": "MANDATORY", - "source_type": "STANDARD", + "source_type": "PCB", "source_class": "NORMATIVE", - "value": null, - "unit": null, - "source": null, - "conditions": [], + "value": 1.5, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.0, August 2019", + "section": "4.11.3", + "table": "Table 4-32", + "page": "240" + }, + "conditions": [ + "Source shall-detect Sink (vRd), Default USB Type-C Current", + "vRd 0.25\u20131.50 V; detect threshold 1.60 V", + "R2.5 \u00a74.11.3.2 tables are variance examples, not this shall-detect table" + ], "value_origin": "SPEC", - "typical": false, - "needed_document": "USB Type-C Cable and Connector Specification Release 2.5, March 2026" + "typical": false }, { "id": "usb-c-usb2-receptacle-usb2_channel_requirements", @@ -3591,6 +3786,117 @@ "value_origin": "SPEC", "typical": false }, + { + "id": "usb-c-usb2-receptacle-vopen_source_default", + "parameter": "vopen_source_default", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "PCB", + "source_class": "NORMATIVE", + "value": 1.65, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.0, August 2019", + "section": "4.11.3", + "table": "Table 4-32", + "page": "240" + }, + "conditions": [ + "Source CC no-connect (vOPEN) Default USB advertisement", + "R2.5 does not restate this shall-detect table" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "usb-c-usb2-receptacle-vra_source_default_max", + "parameter": "vra_source_default_max", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "PCB", + "source_class": "NORMATIVE", + "value": 0.15, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.0, August 2019", + "section": "4.11.3", + "table": "Table 4-32", + "page": "240" + }, + "conditions": [ + "Source shall-detect powered cable/adapter (vRa) Default USB", + "vRa 0.00\u20130.15 V; threshold 0.20 V" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "usb-c-usb2-receptacle-vrd_detect_threshold_default", + "parameter": "vrd_detect_threshold_default", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "PCB", + "source_class": "NORMATIVE", + "value": 1.6, + "unit": "V", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.0, August 2019", + "section": "4.11.3", + "table": "Table 4-32", + "page": "240" + }, + "conditions": [ + "Source vRd detect threshold, Default USB Type-C Current" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "usb-c-usb2-receptacle-t_vbuson_max", + "parameter": "t_vbuson_max", + "value_kind": "NUMERIC", + "mandatory": "MANDATORY", + "source_type": "PCB", + "source_class": "NORMATIVE", + "value": 275.0, + "unit": "ms", + "source": { + "document": "USB Type-C Cable and Connector Specification", + "organization": "USB 3.0 Promoter Group", + "revision": "Release 2.5, March 2026", + "section": "4.11.2", + "table": "Table 4-32", + "page": "247" + }, + "conditions": [ + "tVBUSON maximum (minimum 0 ms)", + "from Attached.SRC until VBUS reaches the minimum vSafe5V threshold at the source receptacle", + "vSafe5V volt range is USB PD, not restated here" + ], + "value_origin": "SPEC", + "typical": false + }, + { + "id": "usb-c-usb2-receptacle-vsafe5v", + "parameter": "vsafe5v", + "value_kind": "UNKNOWN", + "mandatory": "MANDATORY", + "source_type": "STANDARD", + "source_class": "NORMATIVE", + "value": null, + "unit": null, + "source": null, + "conditions": [], + "value_origin": "SPEC", + "typical": false, + "needed_document": "USB Power Delivery specification vSafe5V (not on file; Type-C CabCon R2.5 names vSafe5V and tVBUSON as the minimum vSafe5V threshold without restating the volt range. Type-C Current charger 4.75\u20135.5 V is not vSafe5V)" + }, { "id": "usb-c-usb2-receptacle-cc_rd_rp", "parameter": "cc_rd_rp", diff --git a/periscope/src/frontend/content/changelog.md b/periscope/src/frontend/content/changelog.md index 6905633..6c155b5 100644 --- a/periscope/src/frontend/content/changelog.md +++ b/periscope/src/frontend/content/changelog.md @@ -2,6 +2,13 @@ What's new in Periscope. +## 2.76.0 — 2026-09-22 — Type-C CabCon R2.0 hole-fill (CC shall-detect; VBUS from R2.5) + +USB Type-C Cable and Connector Specification Release 2.0 (August 2019) fills Source CC shall-detect voltages that R2.5 only illustrates as variance examples (Table 4-32 p.240: vRd 1.50 V, vOPEN 1.65 V, vRa 0.15 V). Type-C Current charger VBUS 4.75–5.5 V no-load / 4.0–5.5 V at 3 A, zOPEN 126 kΩ, tCCDebounce 100–200 ms, and tVBUSON 275 ms stay on newer CabCon R2.5 (Figure 4-39 / Tables 4-30, 4-32, 4-34). Rp/Rd/Ra unchanged. vSafe5V volt range still needs USB PD. + +- [Changed] `protocol_catalog.py` + `catalog.json`. +- [Changed] pytest `tests/pcb/test_protocol_pdf_pack.py`. + ## 2.75.0 — 2026-09-22 — Protocol packs from USB 2.0 Rev 2.0 and Type-C CabCon R2.5 USB 2.0 Base Specification (April 27, 2000) fills LS 1.50 Mb/s, FS 12 Mb/s, HS 480 Mb/s, pull-up/down, VBUS 4.75–5.25 V, LS/FS edges. Cable Z0 90 Ω is `source_type=CABLE`; HS PCB traces *should* 90 Ω is RECOMMENDED PCB — L2 `differential_impedance` stays UNKNOWN so 45/50 Ω fixtures are not treated as Zdiff. Type-C Cable and Connector Specification Release 2.5 fills Rp/Rd/Ra from Tables 4-27/4-28/4-29. VBUS volts still need USB PD vSafe5V. IEEE 802.3 Section One/Three and HDMI Adopter remain missing. diff --git a/periscope/src/frontend/package.json b/periscope/src/frontend/package.json index db6d424..473706a 100644 --- a/periscope/src/frontend/package.json +++ b/periscope/src/frontend/package.json @@ -1,6 +1,6 @@ { "name": "periscope-web", - "version": "2.75.0", + "version": "2.76.0", "private": true, "scripts": { "sync-version": "node scripts/sync-version.mjs", diff --git a/tests/pcb/test_protocol_pdf_pack.py b/tests/pcb/test_protocol_pdf_pack.py index bb8fc94..b88ecf1 100644 --- a/tests/pcb/test_protocol_pdf_pack.py +++ b/tests/pcb/test_protocol_pdf_pack.py @@ -77,6 +77,7 @@ def test_type_c_rp_rd_from_cabcon_r25_vbus_volts_unknown(): _cite_ok(by["rp"]) assert by["rp"].value == 56000.0 assert by["rp"].source.table == "Table 4-27" + assert by["rp"].source.revision == "Release 2.5, March 2026" assert by["rp"].source_type == "CONNECTOR" _cite_ok(by["rd"]) assert by["rd"].value == 5100.0 @@ -84,8 +85,45 @@ def test_type_c_rp_rd_from_cabcon_r25_vbus_volts_unknown(): _cite_ok(by["ra"]) assert by["ra"].value == 800.0 assert by["ra"].source_type == "CABLE" - assert by["voltage"].value_kind == "UNKNOWN" - assert "vSafe5V" in (by["voltage"].needed_document or "") + _cite_ok(by["voltage"]) + assert by["voltage"].value == 4.75 + assert by["voltage"].unit == "V" + assert by["voltage"].source.table == "Figure 4-39" + assert by["voltage"].source.page == "233" + assert "2.5" in by["voltage"].source.revision + assert by["voltage"].source_type == "CABLE" + assert any("not USB PD vSafe5V" in x for x in by["voltage"].conditions) + _cite_ok(by["vbus_requirements"]) + assert by["vbus_requirements"].value == 4.0 + assert by["vbus_requirements"].source.table == "Figure 4-39" + _cite_ok(by["electrical_thresholds"]) + assert by["electrical_thresholds"].value == 1.50 + assert by["electrical_thresholds"].source.table == "Table 4-32" + assert by["electrical_thresholds"].source.page == "240" + assert "August 2019" in by["electrical_thresholds"].source.revision + assert by["electrical_thresholds"].source_type == "PCB" + _cite_ok(by["vopen_source_default"]) + assert by["vopen_source_default"].value == 1.65 + _cite_ok(by["vra_source_default_max"]) + assert by["vra_source_default_max"].value == 0.15 + _cite_ok(by["vrd_detect_threshold_default"]) + assert by["vrd_detect_threshold_default"].value == 1.60 + _cite_ok(by["termination"]) + assert by["termination"].value == 126000.0 + assert by["termination"].source.table == "Table 4-30" + assert "2.5" in by["termination"].source.revision + assert by["termination"].source_type == "CONNECTOR" + _cite_ok(by["timing"]) + assert by["timing"].value == 100.0 + assert by["timing"].source.table == "Table 4-34" + assert "2.5" in by["timing"].source.revision + _cite_ok(by["t_vbuson_max"]) + assert by["t_vbuson_max"].value == 275.0 + assert by["t_vbuson_max"].source.table == "Table 4-32" + assert by["t_vbuson_max"].source.page == "247" + assert "2.5" in by["t_vbuson_max"].source.revision + assert by["vsafe5v"].value_kind == "UNKNOWN" + assert "vSafe5V" in (by["vsafe5v"].needed_document or "") _cite_ok(by["gnd_ir_drop_cable"]) assert by["gnd_ir_drop_cable"].value == 250.0 assert by["gnd_ir_drop_cable"].source_type == "CABLE"