CodingBox Documentation

Specification revisions & version bytes

Specifications are living documents. A module declares which revision its memory map follows, and a host parses the map according to the revision it knows. Most of the time the two agree well enough; when they do not, a byte gets read as something it is not. This page lists the version bytes, how to decode them, and — roughly — what each generation added, so that you can tell whether a field you are looking at even exists for the module in front of you.

Where the version is declared

FamilyByteEncoding
SFF-8472 (SFP)A0h byte 94enumerated code (table below)
SFF-8636 (QSFP)byte 1enumerated code (table below)
CMISbyte 1major nibble . minor nibble (50h = 5.0)
MIS (SFP-DD)byte 1as CMIS
INF-8077i (XFP)nonethe identifier 06h implies INF-8077i rev 4.x

SFF-8472 — byte 94

ValueRevisionNotable additions, roughly
00hnot specifiedpre-diagnostic modules; identity only
01h9.3first digital diagnostics: A2h thresholds, monitors, flags
02h9.5clarifications, optional laser temperature / TEC monitors
03h10.2SFP+ era: rate select, linear receiver option, byte 93 enhanced options
04h10.4soft rate select per SFF-8431, power level 2, application select per SFF-8079
05h11.010G copper (DAC) coding — cable technology bits, attenuation in 60–61
06h11.3extended options, tunable transmitter option, 16GFC speed codes
07h11.4paged A2h memory (byte 64 bit 4), SFF-8690 tunable page 02h
08h12.0byte 36 extended specification compliance via SFF-8024; 25G/100G-era codes
09h12.4power level 3 (2.0 W), FC speed 2 in byte 62, PAM4 encoding code, alignment with SFF-8024

Rule of thumb: a module claiming 08h or 09h must have byte 36 meaningful (or zero) and the ×250 Mb/s rate in byte 66 when byte 12 = FFh; a module claiming 03h or below has no byte 36 semantics at all — hosts ignore it.

SFF-8636 — byte 1

ValueMap followsNotable additions
00hnot specified (SFF-8436 rev 4.8 or earlier)original QSFP+ map
01hSFF-8436 rev 4.8 or earlier
02hSFF-8436 rev 4.8 with bytes 186–189 per SFF-8636wavelength and tolerance fields
03hSFF-8636 rev 1.3 or earlierfirst SFF-8636
04hrev 1.4
05hrev 1.5
06hrev 2.0QSFP28 / 100G: byte 192 extended compliance, power classes 5–7, CDR control and LOL flags
07hrev 2.5, 2.6, 2.7pages 20h–21h, Tx-disable fast mode, more Table 4-4 codes
08hrev 2.8, 2.9, 2.10power class 8 and byte 107 max power, 200G (QSFP56) codes, PAM4 encoding

Hosts that predate rev 2.0 will not look at byte 192 — a 100G module in a 40G-era switch is "unknown" for that reason alone, whatever the vendor block says.

CMIS — byte 1

ValueVersionNotable changes
30h3.0 (2018, QSFP-DD MSA)first common model: lower/upper pages, applications, module and data-path state machines, CDB
40h4.0 (2019)staged control sets, VDM pages 20h–2Fh, extended application descriptors, clearer durations
41h4.1corrections and clarifications
50h5.0 (2021, OIF)banks up to 32 lanes, refined data-path and lane-flag model, expanded VDM observables, diagnostic pages 13h–14h
51h–53h5.1, 5.2, 5.3incremental: additional VDM types, coherent (ZR) monitoring hooks, firmware-management refinements

A CMIS 5.x module in a host that implements 4.0 usually works for the basic flow (state machine, application select) but the host will not read newer VDM pages; a 3.0-only host may fail to bring up a 5.x module at all — CMIS issues. MIS versions track CMIS: MIS.

Compatibility rules

  • Newer module, older host — unknown codes decode as unknown; a higher byte 94 / byte 1 value is normally tolerated. Problems start when the host needs a field that only exists in the new revision (byte 192, applications).
  • Older module, newer host — fine; hosts keep backward parsing.
  • Claimed revision inconsistent with content — the real trap. Declaring 12.x with an empty byte 66 while byte 12 = FFh gives a host "0 Gb/s"; declaring rev 2.0+ with garbage in byte 192 gives unknown type. When coding, set the revision byte to match the fields you actually use.
  • SFF-8024 has no version byte in the module; the host's table revision decides which codes it can name.

Other documents and their cadence

DocumentCurrent generationNotes
SFF-8024rev 4.x, revised several times a yearnew identifiers, connectors and interface IDs land here first
INF-8077irev 4.5 (2005)XFP; stable, no further revisions expected — XFP
SFF-8690 / SFF-TA-10041.xtunable maps — Tunable maps
SFF-8079 / SFF-80891.xrate/application select — Rate select
Hardware specs (SFF-8431, SFF-8679, QSFP-DD HW, OSFP)see catalogSFP, QSFP hardware families

Document numbers and titles: MSA specification catalog.

In CodingBox

CodingBox reads the revision byte first and applies the matching field definitions, so fields that do not exist for the declared revision are shown as reserved rather than mis-labelled. The EEPROM editor lets you set the revision byte together with the fields it governs.