CodingBox Documentation

What the host does: discovery, validation, bring-up

The specifications describe the module's side — pins, memory, states. This page describes the host's side: the sequence a switch, router or NIC runs from the moment a module is inserted until traffic flows, with the pins, bytes and timings each step uses. Knowing it turns "the port says unsupported" into "the host stopped at step 4", and explains why a module that is perfect on the bench can still fail in a port.

Low-speed signals by form factor

Form factorPresenceReset / powerInterrupt / faultOther
SFP / SFP+ / SFP28MOD_ABS (low = present)— (TX_DISABLE gates the laser)TX_FAULT, RX_LOSRS0, RS1 rate select
XFPMod_ABSP_Down/RSTInterrupt, Mod_NR (not ready), RX_LOSTX_DIS, Mod_DeSel
QSFP+ / QSFP28ModPrsLResetL, LPModeIntLModSelL
QSFP-DDModPrsLResetL, LPModeIntLModSelL
OSFPPRSnRSTn, LPWnINT— (no select pin, one bus per port)
SFP-DDmodule absent as SFPlow-power requestinterruptrate select as SFP

Pin functions and pinouts per family: SFP hardware, QSFP hardware, XFP.

The sequence

#StepSFP (SFF-8472)QSFP (SFF-8636)CMISFailure looks like
1DetectMOD_ABS goes low; debounceModPrsL lowModPrsL / PRSn lowport stays empty; module "not detected"
2Power & wait3.3 V is always on; wait t_init 300 mspower on with LPMode high (class 1 only); wait t_init 2 s or poll Data_Not_Readysame; wait for module state to leave MgmtInit (≤ 2 s)reads return FFh / 00h; identity blank
3Identifyread A0h 0–95; byte 0 = 03h selects the SFF-8472 parserread 0–127 and upper 00h; byte 0 = 0Dh/11h, byte 1 revisionread lower page and upper 00h; byte 0 = 18h/19h…, byte 1 CMIS versionunknown module type
4ValidateCC_BASE, CC_EXT; identifier/connector/encoding consistencyCC_BASE, CC_EXTpage 00h checksuminvalid EEPROM, checksum errorChecksums
5Decode typecompliance bytes 3–10, 36; rate byte 12/66; lengths; wavelengthbytes 131–138, 192; 140/222media type 85, application descriptorsspeed and type not supportedCompliance codes
6Policyvendor name/PN (and possibly signature) against the compatibility tablesamesameunsupported transceiver, errdisable — Vendor lock
7Power classbyte 64 level bits vs port budgetbyte 129 class; write byte 93 to release low power / enable classes 5–8byte 200 class vs port; deassert LPMode or clear LowPwrRequestSW → module PwrUp → Readyheld in low power, power exceedsPower & thermal
8ConfigureRS0/RS1 or soft rate select; host-side speed, FEC, SGMII/1000BASE-XCDR on/off (98), rate select (87–88), breakout lanes on the hostpick AppSel/DataPathID in staged control set → ApplyDPInit → data path Init → InitializedLOL, FEC mismatch, breakout refused — Speed & rate
9Enable TxTX_DISABLE pin low or soft bit clear (A2h 110.6)byte 86 = 00hpage 10h byte 130 = 00h → DPTxTurnOn → DPActivatedfar end sees −40 dBm — No link checklist
10LinkPHY/MAC sees signal; AN/link training on DACsame per lanesame per data pathlink down with good levels
11Monitorpoll A2h monitors and flags every few seconds; TX_FAULT / RX_LOS pinsIntL → read flags 3–21; poll monitorsIntL → module flags + page 11h lane flags; VDMalarms, flaps — DDM levels, Link flapping
12RemoveMOD_ABS high → tear downModPrsL highModPrsL highstale state if debounce misses

Steps 3–6 happen in low power for QSFP and CMIS modules: the host validates before it spends power on optics. That is why a locked or mis-coded module never lights its laser, and why the far end reads −40 dBm on a module that is electrically fine.

Timings the host waits for

WaitSFPQSFPCMIS
Management ready after insertion300 ms2 s≤ 2 s (MgmtInit) then state LowPwr
After releasing low poweruntil Data_Not_Ready clearsuntil module state Ready (max duration advertised in page 01h)
Data path initadvertised per step (nibble code: < 1 ms … < 50 min)
Tx enable to lightt_on ≤ 1 mston_txdis 100 ms / toff 400 msDPTxTurnOn duration advertised
Flag to interruptton_IntL 200 msas hardware spec

Bus-level timings (t_WR, clock stretch): Two-wire interface.

Policy points where hosts differ

  • Whitelist strictness — from "vendor name only" to signed vendor-specific blocks.
  • What happens on rejection — port disabled, laser off, or link allowed with a log entry (Third-party optics).
  • CMIS depth — full application/data-path control vs "release LPMode and hope" (CMIS issues).
  • FEC and speed defaults — derived from compliance codes or configured statically.
  • DDM polling — interval, whether thresholds trigger port shutdown, whether external calibration is applied (Calibration).

Per-vendor CLI to see where the host stopped: Verifying optics on switches.

How a programmer differs from a host

A programmer such as CodingBox runs steps 1–5 and 11 but no policy: it reads everything the module exposes, including vendor areas and password bytes, keeps CMIS modules in low power unless asked otherwise, and never enables the laser by itself. That is why a module can look healthy on the bench and still fail in a port — the bench has no step 6.

In CodingBox

Check transceiver shows the result of steps 3–5 as a host would see them — type, rate, checksums, power class — and flags inconsistencies before the module reaches a port; DDM covers step 11 with live monitors and flags.