CodingBox Documentation

CMIS lower page register map

The lower 128 bytes of a CMIS module (QSFP-DD, OSFP, QSFP112, SFP-DD with CMIS…) are always visible and carry the module-level runtime interface: identifier and CMIS version, module state, flags and masks, module monitors, global controls, CDB status, media type, the first eight application descriptors, password entry and the bank/page selectors. This page lists them byte by byte and bit by bit, compiled against CMIS 5.x with 4.x differences noted. Narrative: CMIS; upper pages in CMIS upper pages map; per-lane pages in CMIS lane pages map.

Legend: rsvd = reserved · custom = vendor specific · flags are latched, cleared on read; a mask bit = 1 suppresses the flag's contribution to IntL.

Identification and state — bytes 0–7

ByteFieldBits / values
0IdentifierSFF-8024 Table 4-1: 18h QSFP-DD · 19h OSFP · 1Eh QSFP+/28/56 with CMIS · 1Fh SFP-DD with CMIS · 20h SFP+ with CMIS (SFP112) · 21h OSFP-XD
1CMIS revision7–4 major · 3–0 minor: 30h = 3.0 · 40h = 4.0 · 41h = 4.1 · 50h = 5.0 · 51h–53h = 5.1–5.3
2Memory characteristics7 MemoryModel (1 = flat, no paging) · 6 SteppedConfigOnly (1 = data-path config must be applied lane by lane) · 5–4 rsvd · 3–2 MciMaxSpeed: 00 = 400 kHz · 01 = 1 MHz · 1–0 rsvd
3Module state7–4 rsvd · 3–1 ModuleState: 001 ModuleLowPwr · 010 ModulePwrUp · 011 ModuleReady · 100 ModulePwrDn · 101 ModuleFault · 0 InterruptDeasserted (1 = no interrupt pending)
4Bank 0 flag summaryone bit per flag group present in bank 0 lane pages (data-path state changed, Tx/Rx flags, alarms) — read to know which bank to inspect
5Bank 1 flag summaryas byte 4 for lanes 9–16
6Bank 2 flag summarylanes 17–24
7Bank 3 flag summarylanes 25–32

Module flags — bytes 8–11

ByteFieldBits
8Module-level flags7–5 rsvd · 4 CdbCmdComplete2 · 3 CdbCmdComplete1 · 2 DataPathFirmwareFault · 1 ModuleFirmwareFault · 0 ModuleStateChanged
9Temperature / Vcc flags7 Vcc low warning · 6 Vcc high warning · 5 Vcc low alarm · 4 Vcc high alarm · 3 temp low warning · 2 temp high warning · 1 temp low alarm · 0 temp high alarm
10Aux1 / Aux2 flags7 Aux2 low warning · 6 Aux2 high warning · 5 Aux2 low alarm · 4 Aux2 high alarm · 3 Aux1 low warning · 2 Aux1 high warning · 1 Aux1 low alarm · 0 Aux1 high alarm
11Aux3 / custom flags7–4 custom monitor low warning / high warning / low alarm / high alarm · 3 Aux3 low warning · 2 Aux3 high warning · 1 Aux3 low alarm · 0 Aux3 high alarm
12–13rsvd

Module monitors — bytes 14–25

BytesMonitorFormat
14–15Temperaturesigned 16-bit, 1/256 °C
16–17Vccunsigned 16-bit, 100 µV
18–19Aux1TEC current (signed, % of max ×100/32767) or laser temperature (1/256 °C) — type advertised in page 01h
20–21Aux2laser temperature or TEC current
22–23Aux3laser temperature or additional supply voltage (100 µV)
24–25Custom monitorvendor defined

Global controls and masks — bytes 26–36

ByteFieldBits
26Module global controlsCMIS 5.x: 7 rsvd · 6 LowPwrAllowRequestHW (1 = the LPMode pin may request low power) · 5 SquelchMethodSelect (0 = OMA squelch, 1 = Pave) · 4 LowPwrRequestSW (1 = request low power) · 3 SoftwareReset · 2–0 rsvd · 4.x: 6 = LowPwr (software low-power request) · 4 = ForceLowPwr · 5 and 3 as above
27Module flag masksmasks for byte 8 (same bit positions)
28Temperature / Vcc masksmasks for byte 9
29Aux1 / Aux2 masksmasks for byte 10
30Aux3 / custom masksmasks for byte 11
31–36rsvd

CDB status and firmware — bytes 37–41

ByteFieldBits / values
37CdbStatus1 (command block 1)7 CdbIsBusy · 6 CdbHasFailed · 5–0 CdbCommandResult: while busy — 01h capturing command, 02h checking, 03h executing; on success — 01h success, 02h no response? ; on failure — 01h unknown command, 02h parameter out of range, 03h length error, 04h checksum error, 05h password error, 06h not enabled, 07h abort? … (see CMIS Table 8-20)
38CdbStatus2 (command block 2)same layout
39Module active firmware — majorrunning image version
40Module active firmware — minor
41ModuleFaultCause00h no fault · 01h TEC runaway · 02h data memory corrupted · 03h program memory corrupted · 04h–1Fh rsvd · 20h–FFh custom
42–63rsvd
64–84rsvd / customper revision

Media type and applications — bytes 85–117

ByteFieldContents
85MediaType00h undefined · 01h MMF (SFF-8024 Table 4-6) · 02h SMF (4-7) · 03h passive copper (4-8) · 04h active cable (4-9) · 05h BASE-T (4-10) · 06h–3Fh rsvd · 40h–8Fh custom
86–89Application descriptor 1byte 86 HostInterfaceID (SFF-8024 Table 4-5) · 87 MediaInterfaceID (table per byte 85) · 88 bits 7–4 HostLaneCount, 3–0 MediaLaneCount · 89 HostLaneAssignmentOptions — bit n = 1: lane n+1 may be the first lane of this application's data path
90–93Application descriptor 2same layout
94–97Application descriptor 3
98–101Application descriptor 4
102–105Application descriptor 5
106–109Application descriptor 6
110–113Application descriptor 7
114–117Application descriptor 8

An FFh in a descriptor's first byte terminates the list. Descriptors 9–15 continue on page 01h bytes 223–250; their media-lane assignment options are on page 01h 176–190. Example: 12 1C 84 01 = 400GAUI-8 C2M ↔ 400GBASE-DR4, 8 host lanes / 4 media lanes, starting on host lane 1; 0E 14 21 55 = 100GAUI-2 ↔ 100GBASE-DR, 2/1 lanes, may start on lanes 1, 3, 5, 7 (4 × 100G breakout).

Passwords and selectors — bytes 118–127

ByteFieldContents
118–121Password change entryvendor defined
122–125Password entryvendor defined — Write-protection types
126BankSelect00h bank 0 (lanes 1–8) · 01h bank 1 (9–16) · 02h bank 2 · 03h bank 3; applies to banked pages 10h–3Fh
127PageSelect00h identity · 01h advertising · 02h thresholds · 04h laser capabilities · 10h lane control · 11h lane status · 12h tunable control · 13h–14h diagnostics · 20h–2Fh VDM · 9Fh CDB · A0h–AFh CDB EPL · 80h–8Fh… custom

Reading a QSFP-DD lower page in practice

  1. Byte 0 = 18h, byte 1 = 50h → QSFP-DD, CMIS 5.0; byte 2 bit 7 = 0 → paged memory.
  2. Byte 3 = 03h → ModuleLowPwr (001 in bits 3–1, interrupt deasserted) — normal right after insertion; 07h → ModuleReady.
  3. Byte 85 = 02h → SMF media table; bytes 86–89 → the first application (e.g. DR4).
  4. Bytes 8–11 → any module flag set? Read twice to clear history.
  5. Bytes 14–17 → temperature and Vcc.
  6. To leave low power in 5.x: clear byte 26 bit 4 (LowPwrRequestSW) and ensure the LPMode pin is low or bit 6 is 0; then wait for byte 3 to reach 07h.