Per-lane diagnostics: QSFP & CMIS
A four- or eight-lane module has one temperature and one supply — but four or eight lasers and receivers, each with its own bias, Tx power and Rx power. Diagnostics for QSFP-class and CMIS modules are therefore organised per lane, and the classic hidden fault is a single lane degrading while the module total looks fine.
SFF-8636 (QSFP+, QSFP28)
Everything sits at one two-wire address with paged memory (SFF-8636). Units are the same as SFF-8472.
Lower page — live values and flags
| Bytes | Contents |
|---|---|
| 3 | Tx LOS (bits 7–4) / Rx LOS (bits 3–0) per lane |
| 4 | Tx adaptive-EQ fault / Tx fault per lane |
| 5 | Tx LOL / Rx LOL per lane — see CDR |
| 6–7 | temperature and Vcc alarm/warning flags |
| 9–14 | per-lane Rx power, Tx bias and Tx power alarm/warning flags |
| 22–23 | module temperature |
| 26–27 | module Vcc |
| 34–41 | Rx power, lanes 1–4 (2 bytes each) |
| 42–49 | Tx bias, lanes 1–4 |
| 50–57 | Tx power, lanes 1–4 |
Upper page 03h — thresholds: module (temperature, Vcc) at bytes 128–175, channel (Rx power, Tx bias, Tx power) at 176–223. Whether Tx power monitoring is implemented at all is advertised in upper page 00h byte 220 — many 40G modules report Rx only.
CMIS (QSFP-DD, OSFP, QSFP112, SFP-DD)
CMIS separates module-level and lane-level data and scales to eight lanes (banks for more):
| Location | Contents |
|---|---|
| Lower page bytes 8–13 | module-level flags |
| Lower page bytes 14–25 | module monitors: temperature (14–15), Vcc (16–17), aux 1–3 |
| Page 02h | module and lane thresholds |
| Page 11h bytes 134–153 | lane flags (LOS, LOL, Tx fault, power/bias alarms) |
| Page 11h bytes 154–169 | Tx power, lanes 1–8 |
| Page 11h bytes 170–185 | Tx bias, lanes 1–8 (with a scaling factor advertised on page 01h) |
| Page 11h bytes 186–201 | Rx power, lanes 1–8 |
Which monitors exist is advertised on page 01h (byte 160 for Tx bias/power/Rx power, temperature and Vcc), so a host — or CodingBox — knows which fields to trust.
Versatile Diagnostics Monitoring (VDM)
CMIS adds an optional layer beyond analogue monitors: VDM on pages 20h–2Fh (descriptors on 20h–27h, samples on 28h–2Fh). Observables are advertised per module and can include:
- pre-FEC bit error ratio and FEC error count per lane, host and media side;
- SNR of the electrical (host) and optical (media) interfaces;
- laser temperature and other module-specific values;
- flags with their own thresholds.
Pre-FEC BER is the earliest warning on a PAM4 link: it climbs long before FEC stops correcting, while Rx power may still look normal. On 400G/800G fabrics it is the metric to trend (AI clusters).
Reading multi-lane data correctly
- Compare lanes with each other. One lane 3 dB below its siblings is a fault, even if all four are "in range".
- Check bias per lane — one laser ageing faster than the others shows up here first.
- Mind breakout. A 4×25G module broken out into four links: a bad lane means one of the four links is bad, not "the module is 25% worse".
- LOL/LOS are per lane too; a single-lane LOL on a multi-lane link is a CDR or input-signal problem on that lane.
In CodingBox
The DDM screen shows Rx power, Tx power and bias per lane with per-lane thresholds, and logs them over time — the view that catches the single-lane failure LACP hides (Failures). For CMIS modules the EEPROM editor exposes page 11h and the module state alongside.