CodingBox Documentation

DDM parameters & units

Digital diagnostics are five numbers a module measures about itself. Each is stored as a 16-bit value in module memory with a fixed unit, and the host converts it to °C, volts, milliamps or dBm. Knowing the raw encoding lets you read a dump by hand — and spot a module that reports nonsense.

The five monitors

ParameterWhat it measuresUnit of the raw 16-bit valueRange
Temperaturemodule internal temperaturesigned, 1/256 °C (high byte = whole degrees)−128 … +128 °C
Supply voltage (Vcc)3.3 V rail inside the moduleunsigned, 100 µV0 … 6.55 V
Tx bias currentlaser drive currentunsigned, 2 µA0 … 131 mA
Tx optical powertransmitted light powerunsigned, 0.1 µW0 … 6.5535 mW
Rx optical powerreceived light powerunsigned, 0.1 µW0 … 6.5535 mW

Optional extra monitors (laser temperature, TEC current) exist on some cooled/tunable modules.

Where they live — SFF-8472 (SFP class)

Real-time values are in the A2h block, bytes 96–105, two bytes each, MSB first:

BytesMonitor
96–97Temperature
98–99Vcc
100–101Tx bias
102–103Tx power
104–105Rx power
106–109optional (laser temp / TEC)

Whether DDM exists at all, and how it is calibrated, is declared in A0h byte 92 (Diagnostic Monitoring Type): bit 6 = DDM implemented, bit 5 = internally calibrated, bit 4 = externally calibrated, bit 3 = Rx power reported as average (1) or OMA (0). See Calibration.

For QSFP and CMIS modules the same units apply per lane — see Per-lane diagnostics.

Converting raw values

Temperature  °C  = signed16 / 256          0x1E80 = 7808   → 30.50 °C
Vcc          V   = uint16 × 0.0001         33000           → 3.300 V
Tx bias      mA  = uint16 × 0.002          3000            → 6.00 mA
Power        mW  = uint16 × 0.0001         8000            → 0.800 mW
Power        dBm = 10 · log10(mW)          0.800 mW        → −0.97 dBm

Handy anchors for optical power:

dBmmW / µWRaw (0.1 µW)
+32.0 mW20 000
01.0 mW10 000
−30.5 mW5 000
−10100 µW1 000
−2010 µW100
−301 µW10
−400.1 µW1 (resolution floor)

Because the raw unit is 0.1 µW, DDM cannot resolve anything below −40 dBm; a reading of exactly −40 dBm (raw 0 or 1) means "no light", not a precise measurement. More dB arithmetic and rate/baud tables: Units & conversions.

What each parameter tells you

  • Temperature — rises with ambient and with port density; a module running hot ages its laser faster. Typical operating range 0…70 °C (commercial) or −40…85 °C (industrial).
  • Vcc — should sit near 3.3 V; a low or noisy reading points to the host slot, not the module.
  • Tx bias — the single best ageing indicator: the module raises bias to keep Tx power constant as the laser wears. Trend it (Failures).
  • Tx power — useful when measured; on inexpensive modules it may be a constant written to memory (DDM levels).
  • Rx power — the health of the far end and the fibre: compare against the receiver's sensitivity and against the installation baseline.

In CodingBox

The DDM screen performs these conversions live and plots the values with the module's own thresholds; the EEPROM editor shows the raw bytes 96–105 and byte 92 for verification.