CodingBox Documentation

Speed, rate & mode problems

"It links at 25G but not at 10G." "The 100G port will not break out." "The copper SFP is dead in this switch but fine in that one." These are not optical faults — the light is fine — but disagreements about rate, coding and mode between host and module. They account for a large share of tickets since 25G arrived.

Multi-rate modules

A module lists the rates it supports in its identity block (nominal rate byte 12, compliance codes, extended compliance byte 36 / SFF-8024 Table 4-4). The host reads them and refuses rates that are not declared. Common cases:

SituationWhy it failsFix
10G SFP+ used at 1Gmodule not dual-rate, or host port does not support 1G in an SFP+ cageuse a dual-rate module (declares both), check host capability
25G SFP28 used at 10GCDR locks only to 25G; or host requires a 10G compliance codemodule with 10/25G dual-rate CDR, or enable CDR bypass; code the 10G compliance byte
1G SFP in a 10G-only portsome hosts run SFP+ cages at 10G onlypick a port or platform that supports 1G
100G QSFP28 at 40Grarely supported; different lane rate and FECuse a 40G module

Why the CDR matters: CDR — clock and data recovery.

Breakout

A 4-lane port can become four independent links — only if both host and module allow it.

  • Parallel optics (SR4, PSM4, DR4) and DAC/AOC breakout cables can break out; each lane is a separate fibre pair.
  • WDM optics (LR4, CWDM4, FR4) cannot — the four wavelengths travel on one fibre pair and must terminate in one receiver.
  • The host port must be configured for breakout (e.g. 4×25G) on the switch side; the far ends must run the single-lane rate with matching FEC.
  • CMIS modules advertise supported applications (page 01h); a breakout mode not listed there is not available (CMIS).

FEC and auto-negotiation

At 25G and above, a link with good levels that never trains is nearly always a FEC mismatch: RS-FEC on one end, off on the other. On DAC, auto-negotiation (Clause 73) and link training must be enabled on both ends or both disabled with matching static settings. Full treatment: FEC, auto-negotiation & link training.

Copper SFP modes

A 1000BASE-T SFP has a PHY inside. It talks to the host over either SGMII (with auto-negotiation of the copper side) or plain 1000BASE-X. A module coded for one mode in a port configured for the other links intermittently or not at all — typically "works in vendor A's switch, dead in vendor B's". Some hosts let you set the mode per port; otherwise choose a module matching the platform (Copper Ethernet & DAC).

Rate select

Multi-rate SFP-class modules switch receiver bandwidth via the RS0/RS1 pins or the soft rate-select bits; the module declares the scheme in byte 13. A host that never drives RS on a module that expects it can leave the receiver in the wrong rate group (Rate & application selection).

"Speed and type: not supported"

Hosts that validate identity may accept a module's vendor string yet refuse its rate/type combination — the compliance codes do not include the port's mode, or the extended compliance code for 25G/100G is missing. Coding the correct compliance bytes (and only those the hardware truly supports) resolves it (EEPROM recoding).

Diagnostic sequence

  1. Confirm optical levels are fine (No link checklist steps 3–6).
  2. Read the module's rate codes on the bench: byte 12, compliance codes, extended compliance, rate identifier (Memory map).
  3. Compare host port configuration on both ends: speed, FEC, AN, breakout.
  4. Check CDR/LOL flags: a lane with LOL at the lower rate points at the CDR.
  5. If the hardware supports the rate but the identity does not say so, code it.

In CodingBox

The Check transceiver screen decodes nominal rate, compliance and extended compliance codes, and for CMIS modules lists advertised applications; the EEPROM editor edits the rate and compliance bytes with checksums recalculated. Keep them honest: declaring a rate the optics cannot carry moves the failure from "does not link" to "links with errors".

Bit-by-bit meaning of the rate and type bytes, with typical codings per module type: Compliance codes.