CodingBox Documentation

SFF-8472 A2h register map

The diagnostics device at two-wire address A2h holds everything that changes while an SFP-class module runs: alarm and warning thresholds, calibration constants, live monitors, status and control bits, latched flags, user EEPROM and the vendor pages. This page lists the lower 128 bytes byte by byte and the upper-page layout, compiled against SFF-8472 Rev 12.4. Narrative: SFF-8472, Thresholds & alarms, Calibration.

Legend: rsvd = reserved · opt = optional, implemented only if the corresponding A0h option bit is set · all 16-bit values are big-endian (lower byte address = MSB).

Monitor formats (used by thresholds, monitors and constants)

MonitorFormatLSBRange
Temperaturesigned 16-bit two's complement1/256 °C−128 … +128 °C
Vccunsigned 16-bit100 µV0 … 6.55 V
Tx biasunsigned 16-bit2 µA0 … 131 mA
Tx power / Rx powerunsigned 16-bit0.1 µW0 … 6.55 mW (−40 … +8.2 dBm)
Laser temperature (opt)signed 16-bit1/256 °Cas temperature
TEC current (opt)signed 16-bit0.1 mA±3.2 A; positive = heating

Alarm and warning thresholds — bytes 0–55

BytesFieldBytesField
0–1Temperature high alarm2–3Temperature low alarm
4–5Temperature high warning6–7Temperature low warning
8–9Vcc high alarm10–11Vcc low alarm
12–13Vcc high warning14–15Vcc low warning
16–17Tx bias high alarm18–19Tx bias low alarm
20–21Tx bias high warning22–23Tx bias low warning
24–25Tx power high alarm26–27Tx power low alarm
28–29Tx power high warning30–31Tx power low warning
32–33Rx power high alarm34–35Rx power low alarm
36–37Rx power high warning38–39Rx power low warning
40–41Laser temp / wavelength high alarm (opt)42–43… low alarm (opt)
44–45… high warning (opt)46–47… low warning (opt)
48–49TEC current high alarm (opt)50–51TEC current low alarm (opt)
52–53TEC current high warning (opt)54–55TEC current low warning (opt)

Thresholds use the same format as the monitor they bound; on externally calibrated modules they are in raw units, to be converted with the constants below.

External calibration constants — bytes 56–91

Present and meaningful only when A0h byte 92 bit 4 (externally calibrated) is set.

BytesConstantFormatUsed as
56–59Rx_PWR(4)IEEE-754 single floatRx_power = Σ Rx_PWR(i) × raw^i, i = 4…0
60–63Rx_PWR(3)float(typically 0)
64–67Rx_PWR(2)float(typically 0)
68–71Rx_PWR(1)floatslope (typically 1.0 for internal-like behaviour)
72–75Rx_PWR(0)floatoffset
76–77Tx_I(slope)unsigned 16-bit, LSB 1/256Tx_bias = slope × raw + offset
78–79Tx_I(offset)signed 16-bit
80–81Tx_PWR(slope)unsigned 16-bit, LSB 1/256Tx_power = slope × raw + offset
82–83Tx_PWR(offset)signed 16-bit
84–85T(slope)unsigned 16-bit, LSB 1/256Temperature = slope × raw + offset
86–87T(offset)signed 16-bit
88–89V(slope)unsigned 16-bit, LSB 1/256Vcc = slope × raw + offset
90–91V(offset)signed 16-bit
92–94rsvd
95CC_DMI(Σ bytes 0–94) mod 256Checksums

Real-time monitors — bytes 96–109

BytesMonitorNotes
96–97Temperaturemodule internal
98–99Vccsupply inside the module
100–101Tx biaslaser bias current
102–103Tx powerfrom the monitor photodiode
104–105Rx poweraverage (A0h 92.3 = 1) or OMA
106–107Laser temperature or wavelength (opt)temperature format, or wavelength in 0.05 nm units for tunable modules per SFF-8690
108–109TEC current (opt)signed, 0.1 mA

Status and control — bytes 110–127

ByteFieldBits
110Status/control7 TX_DISABLE state (pin or soft) · 6 soft TX_DISABLE (R/W, if A0h 93.6) · 5 RS1 state · 4 RS0 / rate-select state · 3 soft RS0 select (R/W, if 93.3) · 2 TX_FAULT state · 1 RX_LOS state · 0 data not ready (1 while monitors initialise)
111rsvdreserved for SFF-8079
112Alarm flags7 temp high · 6 temp low · 5 Vcc high · 4 Vcc low · 3 Tx bias high · 2 Tx bias low · 1 Tx power high · 0 Tx power low
113Alarm flags7 Rx power high · 6 Rx power low · 5 laser temp/wavelength high (opt) · 4 … low (opt) · 3 TEC current high (opt) · 2 TEC current low (opt) · 1–0 rsvd
114Tx input EQ / Rx output emphasis control (opt)bits 7–4 Tx input equalisation level, 3–0 Rx output emphasis level (active cables, SFF-8431); else rsvd
115rsvd
116Warning flagssame layout as byte 112 (temp, Vcc, Tx bias, Tx power high/low)
117Warning flagssame layout as byte 113 (Rx power, laser temp, TEC current)
118Extended status/control7–4 rsvd · 3 soft RS1 select (R/W) · 2 power level operation state (1 = level 2/3 active) · 1 power level select (write 1 to request level 2) · 0 power level 3 select rev 12.3
119–122Vendor specificoften password change area on controller-based modules
123–126Vendor specificoften password entry area (e.g. 00 00 10 11 defaults on some controllers) — Write-protection types
127Page selectselects the upper page (128–255) when A0h byte 64 bit 4 is set; 00h default

Flags in 112–117 are latched: they stay set until read, and the host clears them by reading. Alarm and warning flags are implemented only when A0h byte 93 bit 7 is set.

Upper pages — bytes 128–255 via byte 127

PageBytesContents
00h / 01h128–247User EEPROM — 120 bytes free for the host or vendor (page 01h is an alias of 00h in most implementations)
00h / 01h248–255Vendor control — vendor-specific control functions
02h128–255Control functionsSFF-8690 tunable registers: 128–129 dither control · 130–131 tuning capability flags · 132–133 first frequency THz · 134–135 first frequency GHz ×0.1 · 136–137 last frequency THz · 138–139 … GHz · 140–141 grid spacing GHz ×0.1 · 144–145 channel number set · 146–147 wavelength set ×0.05 nm · 152 Tx dither/wavelength control · 168–169 frequency error GHz ×0.1 · 170–171 wavelength error nm ×0.005 · 172 tuning status (bits: Tx tuning in progress, wavelength unlocked, tuning error) · 173–175 latched status/flags
03h–7Fhreserved
80h–FFhvendor specific

Decoding example

A2h bytes 96–105 read 1A 80 80 E8 1B 58 0F A0 03 E8 on an internally calibrated module: temperature 0x1A80 / 256 = 26.5 °C; Vcc 0x80E8 × 100 µV = 3.300 V; bias 0x1B58 × 2 µA = 14.0 mA; Tx 0x0FA0 × 0.1 µW = 400 µW = −3.98 dBm; Rx 0x03E8 × 0.1 µW = 100 µW = −10.0 dBm. Bytes 110 = 00 → Tx enabled, no fault, no LOS, data ready; 112–117 all 00 → no flags. Step-by-step with tools: Reading DDM with tools.