# FS SFP-10G-T-100 transport reference — transcription Transcribed (visually, tables intact) from the FS-provided 4-page `10GBase-T Coper SFP Registers Operation's Reference for BCM84891.pdf` (an ODM document — PDF metadata titles it "ABCU-5710RZ / ABCU-5700RZ"). ## 1. Serial ID memory (A0h) Standard SFP MSA serial ID at I2C A0h. Notable factory values (the module is honest about copper — cf. ../README.md): | Addr | Field | Value | Meaning | |---|---|---|---| | 0 | Identifier | 03 | SFP | | 1 | Ext. identifier | 04 | MOD4 | | 2 | Connector | 21 | Copper pigtail (the shipped unit reads 22 = RJ45) | | 3–10 | Transceiver | 02 00 00 00 00 08 00 00 | 10G Base-XFI to copper / SGMII to copper | | 11 | Encoding | 00 | 64B/66B (or 8B/10B) | | 12 | BR, nominal | 67 | 10.3125 GBd | | 18 | Length (copper) | 64 | 100 m; 30 m minimum in-spec copper length | | 20–35 | Vendor name | "OEM " | shipped unit reads "FS" | | 40–55 | Vendor PN | "10GBase-T C100m" | shipped unit reads "SFP-10G-T-100" | | 64–65 | Options | 00 12 | TX_DISABLE and RX_LOS implemented (shipped: 00 1A) | | 92 | Diag monitoring | 00 | **no A2h DOM implemented** | | 93 | Enhanced options | 00 | | | 94 | SFF-8472 compliance | 00 | digital diagnostics not included | | 96–127 | Vendor specific | all 00 | | ## 2–3. SMI (I2C→MDIO) protocol for the PHY, with timing The PHY is a 2-wire device at 8-bit address **0xAC write / 0xAD read** (`1010110x`). Clause-45 access frames: **Write (one I2C frame, 6 bytes):** `S [0xAC] [000+DEVAD] [Reg_H] [Reg_L] [Data_H] [Data_L] P` **Read (two I2C frames):** `S [0xAC] [001+DEVAD] [Reg_H] [Reg_L] P` → **delay > 1 ms** → `S [0xAD] [Data_H] [Data_L] P` Bit-level example diagrams confirm: every byte is slave-ACKed except the final read data byte, which the master **NAKs** before STOP. Worked examples: write 0x55AA to 1.0xA820; read 0x8542 from 1.0x0003. ## 4. PHY MMD map Clause-45 MMDs behind the bridge: | DEVAD | Block | |---|---| | 1 | 10GBASE-T PMA/PMD | | 3 | 10GBASE-T PCS; XFI_M (XGMII) block also on DEVAD 3 | | 7 | AN; SGMII block and 10/100/1000BASE-T PCS/PMA/PMD at 7.0xFFE0–0xFFFF | | 30 | Top level (user-defined) | Side blocks: JTAG, SPI, BSC, PLL/clock, LED controller. ## 5. Reference access commands and 10G bring-up sequence The ODM's host-side primitives are exactly our `sff_i2c` ops: `Write_XGPHY_Register 0xAC [000+DEVAD] RegH RegL DataH DataL` and `Read_XGPHY_Register 0xAC [001+DEVAD] RegH RegL, >1 ms, 0xAD DataH DataL`. Reference sequence "set PHY to work in 10GBE rate" (write in order): | Frame | Register = value | Meaning | |---|---|---| | AC 01 00 00 20 40 | 1.0 = 0x2040 | PMA control: 10G speed select | | AC 01 00 07 00 09 | 1.7 = 0x0009 | PMA control 2: 10GBASE-T type | | AC 07 00 10 10 01 | 7.16 = 0x1001 | AN advertisement | | AC 07 00 20 10 03 | 7.32 = 0x1003 | 10GBASE-T AN control | | AC 07 00 3C 00 08 | 7.60 = 0x0008 | **EEE advertisement — advertises 10GBASE-T EEE** | | AC 07 00 40 00 00 | 7.64 = 0x0000 | | | AC 07 80 00 00 10 | 7.0x8000 = 0x0010 | vendor AN register | | AC 07 00 00 B2 00 | 7.0 = 0xB200 | AN control: enable + restart | The EEE-advertisement line means the reference bring-up (and possibly the module firmware's own defaults) leaves 10GBASE-T EEE negotiable — verify and disable for measurement runs (see the probe results in README.md).