CodingBox Documentation

SFF-8472 — SFP diagnostics

SFF-8472, the Diagnostic Monitoring Interface for Optical Transceivers, is the management specification for every SFP-class module: SFP, SFP+, SFP28 and, with extended codes, SFP56. It grew out of the SFP MSA (INF-8074) serial ID block, kept that block byte-for-byte, and added a second memory device with real-time diagnostics. Copper SFPs, PON sticks, tunable DWDM SFP+ and DAC/AOC cable ends all present themselves through this specification. Revision history and the version byte: Specification revisions.

Two memory addresses

The module is read over the two-wire interface at two device addresses:

AddressDeviceContents
A0hserial ID EEPROM (256 bytes, flat)identity: type, connector, compliance codes, rate, lengths, vendor block, options, checksums
A2hdiagnostics (128 bytes + paged upper half)thresholds, calibration constants, live monitors, status/control, flags, user EEPROM, vendor pages

Whether A2h exists at all is declared in A0h byte 92 bit 6. The default bus speed is 100 kHz. Byte-by-byte tables: Memory map quick reference.

A0h — identity in five blocks

BytesBlockWhat lives there
0–2Typeidentifier (03h = SFP family, SFF-8024), extended identifier (04h = MOD_DEF 4, serial ID present), connector code
3–10Compliance codesbit fields for 10G Ethernet, InfiniBand, ESCON, SONET, 1G Ethernet, Fibre Channel length / technology / media / speed — decoded in Compliance codes
11–19Signal & reachencoding (11), nominal bit rate ×100 Mb/s (12), rate identifier for RS0/RS1 (13, see rate select), link lengths: SMF km (14), SMF ×100 m (15), OM2 ×10 m (16), OM1 ×10 m (17), OM4 ×10 m or copper metres (18), OM3 ×10 m (19)
20–63Vendor & checksumvendor name (20–35), extended compliance code from SFF-8024 (36), IEEE OUI (37–39), part number (40–55), revision (56–59), wavelength in nm or cable compliance/attenuation for copper (60–61), Fibre Channel speed 2 (62), CC_BASE (63) — see Vendor fields
64–95Extended IDoptions (64–65), max/min bit-rate margin % (66–67) or, when byte 12 = FFh, byte 66 is the rate in ×250 Mb/s, serial number (68–83), date code (84–91), diagnostic type (92), enhanced options (93), SFF-8472 compliance revision (94), CC_EXT (95)
96–127Vendor specificfree for the manufacturer; often holds configuration or a signature
128–255Reservedreserved for SFF-8079 application-select tables

Options bytes 64–65

Byte.bitMeaning when set
64.5high power level declaration — level 3 (up to 2.0 W)
64.4paging implemented — A2h byte 127 selects upper pages
64.3retimer or CDR present
64.2cooled transmitter
64.1power level 2 (up to 1.5 W); clear = level 1 (1.0 W)
64.0linear receiver output (for example 10GBASE-LRM)
65.7receiver decision threshold implemented
65.6tunable transmitter — see tunable maps
65.5RATE_SELECT implemented
65.4TX_DISABLE implemented
65.3TX_FAULT implemented
65.2LOS signal is inverted
65.1LOS implemented

Byte 92 — diagnostic monitoring type

BitMeaning
6digital diagnostics (A2h) implemented
5internally calibrated — A2h monitors are already in physical units
4externally calibrated — host must apply the constants at A2h 56–91
3received power measurement: 1 = average power, 0 = OMA
2address change sequence required before A2h access (legacy)

Exactly one of bits 5 and 4 should be set when bit 6 is set. What each mode means for the numbers you see: Calibration.

Byte 93 — enhanced options

Bit 7 alarm/warning flags implemented · 6 soft TX_DISABLE control · 5 soft TX_FAULT monitor · 4 soft RX_LOS monitor · 3 soft RATE_SELECT · 2 application select per SFF-8079 · 1 soft rate select per SFF-8431.

A2h — diagnostics in nine blocks

BytesBlockNotes
0–39Alarm & warning thresholdsfive monitors × (high alarm, low alarm, high warning, low warning), 2 bytes each, same format as the live value — thresholds & alarms
40–55Optional thresholdslaser temperature and TEC current (cooled/tunable modules)
56–91Calibration constantsRx_PWR(4..0) as 32-bit floats, Tx_I / Tx_PWR / T / V slope and offset; meaningful only when byte 92 bit 4 is set
92–94Reserved
95CC_DMIchecksum of A2h bytes 0–94 — Checksums
96–105Real-time monitorstemperature (96–97), Vcc (98–99), Tx bias (100–101), Tx power (102–103), Rx power (104–105)
106–109Optional monitorslaser temperature, TEC current
110–118Status & controlbyte 110 (below), alarm flags 112–113, warning flags 116–117, extended status/control 118 (soft RS1, power level state and select)
119–126Vendor specificin practice the password entry area on many controller-based modules (123–126) — see write-protection types
127Page selectpresent when A0h byte 64 bit 4 is set
128–255Upper pagespage 00h/01h: user EEPROM (128–247) and vendor control (248–255); page 02h: control functions, home of the SFF-8690 tunable registers; other pages vendor specific

Monitor formats

MonitorFormatUnit
Temperaturesigned 16-bit1/256 °C
Vccunsigned 16-bit100 µV
Tx biasunsigned 16-bit2 µA
Tx power, Rx powerunsigned 16-bit0.1 µW (convert to dBm: 10·log10(µW/1000))

Conversions and worked examples: Units & conversions.

Byte 110 — status/control

BitMeaningAccess
7TX_DISABLE pin stateread
6soft TX_DISABLEread/write (if byte 93 bit 6)
5RS1 pin stateread
4RS0 pin state (rate select)read
3soft RS0 selectread/write
2TX_FAULT stateread
1RX_LOS stateread
0data not ready (1 while monitors are still initialising)read

Copper and cable specifics

For passive and active copper (DAC), bytes 60–61 do not hold a wavelength: for passive cable byte 60 flags SFF-8431 Appendix E compliance; for active cable bits mark FC-PI-4 / SFF-8431 limiting or linear compliance. Byte 8 bits 2–3 mark passive/active cable technology and byte 18 carries the length in metres. Details: Copper Ethernet & DAC.

What hosts actually read

A typical switch reads A0h bytes 0–95 on insertion, verifies CC_BASE and CC_EXT, decodes the identifier, connector, compliance codes and rate, matches the vendor block against its policy, and only then polls A2h for DDM — usually every few seconds. The full sequence and its timings: What the host does. Mismatches between these fields and the real optics are the root of most speed & rate and vendor-lock tickets.

In CodingBox

CodingBox reads both A0h and A2h (including paged A2h when declared), labels every field of the tables above in the EEPROM editor, recalculates CC_BASE, CC_EXT and CC_DMI on write, applies internal or external calibration on the DDM screen and shows the decoded identity on Check transceiver.

Byte-by-byte and bit-by-bit tables of both devices: A0h register map, A2h register map.