How each NOS validates a module
Between "module detected" and "port up" every network OS runs a check on the module's identity. What it compares, what it does when the comparison fails and whether an administrator can override it differ by vendor, platform and release — and that difference is the whole subject of transceiver compatibility. This page lays the behaviours side by side, as documented by the vendors and observed in the field, so a module read on the bench can be judged against the box it is meant for.
What can be checked
| Check | Bytes involved | Who does it |
|---|---|---|
| Checksums CC_BASE / CC_EXT | SFP 63/95, QSFP 191/223, CMIS 222/255 | almost everyone — a failure is invalid EEPROM (Checksums) |
| Identifier / connector / encoding consistency | SFP 0, 2, 11; QSFP 0, 130, 139 | most; unknown types shown as such |
| Compliance codes vs port | SFP 3–10, 36; QSFP 131–138, 192; CMIS applications | most — speed and type not supported (Compliance codes) |
| Vendor name + part number against a list | SFP 20–35, 40–55; QSFP 148–163, 168–183 | strict and semi-strict platforms (Part numbering) |
| Vendor-specific signature | vendor area (SFP 96–127, QSFP 224–255, CMIS custom) | a few OEMs; a hash tied to the serial number |
| Serial number format / date code | SFP 68–91; QSFP 196–219 | rare; support engineers look at them manually |
| Power class vs port | SFP 64; QSFP 129/107; CMIS 200–201 | everyone that implements power management (Power & thermal) |
Behaviour by vendor
Public commands and behaviours as of recent releases; details vary by platform and version.
| Vendor / NOS | Checks | On failure | Override | DDM for third-party |
|---|---|---|---|---|
| Cisco IOS / IOS-XE (Catalyst, ISR) | vendor/PN list and a vendor-specific check; checksums | %PHY-4-UNSUPPORTED_TRANSCEIVER, port errdisabled (gbic-invalid), laser off | service unsupported-transceiver (hidden) + no errdisable detect cause gbic-invalid; not on all platforms; not supported by TAC | shown once accepted; some fields blank |
| Cisco NX-OS (Nexus) | as above, less strict on many DC platforms | often up with a log; strict SKUs errdisable | service unsupported-transceiver | usually shown |
| Cisco IOS-XR | per-platform optics list, power class | unsupported state, port may stay down | limited; platform-dependent | partial |
| Arista EOS | checksums, type consistency | logs unsupported; link comes up | none needed | full |
| Juniper Junos | vendor/PN list for "supported" label, checksums | link usually up; show chassis pic marks unsupported; some EX/QFX platforms withhold DDM or speeds for unknown PNs | none official | full for known PNs, partial for unknown |
| Huawei VRP | vendor/PN; non-Huawei → alarm | link up with recurring phony transceiver alarms; some platforms restrict | transceiver phony-alarm-disable (system view) | full |
| H3C Comware | as VRP | alarm | transceiver phony-alarm-disable | full |
| HPE Aruba AOS-S / AOS-CX | vendor/PN list | unsupported, port down | allow-unsupported-transceiver | full |
| Dell OS10 / OS9 / PowerConnect | checksums; some list checks on older gear | logs; older: errdisable | service unsupported-transceiver (older) | full |
| Extreme EXOS / VOSS | checksums, type | logs, up | — | full |
| Ruckus/Brocade ICX (FastIron) | checksums; optical monitoring only for Brocade PNs on some | up; DDM may be missing | — | partial |
| Brocade FOS (SAN) | Brocade-branded PN and serial required on most Gen 5/6/7 platforms | port Mod_Inv, not enabled | none | Brocade optics only |
| Nvidia/Mellanox (Onyx, Cumulus, IB) | Ethernet: checksums, type; InfiniBand: cable info validated by the fabric manager | Ethernet up with log; IB may run at reduced speed or flag | — | full |
| SONiC / white-box | platform plugin: checksums, CMIS parsing | up; unknown fields shown raw | — | full (plugin-dependent) |
| MikroTik RouterOS / SwOS | none beyond parsing | up | — | full |
| Ubiquiti | none beyond parsing | up | — | full |
| Server NICs (Intel, Broadcom, Mellanox) | driver whitelists on some Intel families | driver refuses to bring the port up | allow_unsupported_sfp=1 module parameter (Intel ixgbe/i40e) | via ethtool -m |
Where a vendor's override exists, it is generally offered as is: the module works, but the vendor does not commit to supporting the combination. Fleet decisions belong with the network owner (Third-party optics).
What "coded for vendor X" has to satisfy
| Platform class | Minimum for acceptance | Also advisable |
|---|---|---|
| Permissive (Arista, SONiC, MikroTik, Extreme…) | valid checksums, consistent type codes | real vendor name and PN — nothing to gain from OEM coding |
| List-checking (Juniper, Aruba, Huawei/H3C, NX-OS on many SKUs) | vendor name and PN exactly as in the platform's list, correct compliance codes for the port | matching PN suffix/grade; realistic serial and date code |
| Signature-checking (Cisco IOS/IOS-XE, some XR) | all of the above plus the vendor-specific area computed for this serial | identity fields consistent with the PN (wavelength, reach, technology) |
| Branded-only (Brocade FOS) | Brocade vendor string and PN family, serial format | — |
How the bench side works: Vendor lock & coding, EEPROM recoding.
Reading the rejection
| Log / status text | Meaning | Next step |
|---|---|---|
unsupported transceiver, Mod_Inv, phony | identity not on the list | override, or code to a listed PN |
invalid EEPROM, checksum error | CC_BASE/CC_EXT wrong | recalculate (Checksums) |
speed and type not supported, unknown media type | compliance codes do not fit the port | fix codes or use another port mode (Speed & rate) |
power class exceeds, stuck in LowPwr | power class vs cage | Power & thermal |
Module not ready, DP state stalls | CMIS bring-up | CMIS issues |
Per-NOS commands to see these states: Verifying optics on a switch.
Changes with software upgrades
Vendors tighten or loosen checks between releases: new signature validation, new supported-optics lists, removed hidden commands, changed DDM handling. A fleet of third-party or coded optics that worked yesterday can be errdisabled after an upgrade (Compatibility matrices & firmware).
In CodingBox
CodingBox shows the exact bytes each check above reads — vendor name, PN, checksums, compliance codes, power class — and the code database holds identities that a given platform class accepts. Verify on a test port after coding; the switch, not the bench, has the last word (Check transceiver).
The server-side counterpart — driver whitelists per NIC vendor, Intel overrides, Windows and ESXi behaviour: Transceiver compatibility on NICs.