CodingBox Documentation

NIC tools and diagnostics: reading a module from the server

A server has no show interface transceiver, but it has the same information one layer down: the NIC driver reads the module EEPROM and exposes it through ethtool, vendor utilities and, on Windows and ESXi, through their own commands. This page lists the tools per OS and vendor, what each shows (identity, DDM, FEC counters, link state, PCIe), and how to interpret the output when a link is down or errors accumulate.

Linux: ethtool

CommandShows
ethtool eth0link state, speed, duplex, auto-negotiation, supported/advertised modes, port type (FIBRE/DA)
ethtool -m eth0 (--module-info)decoded EEPROM: identifier, vendor, PN, SN, date, compliance, wavelength, lengths; DDM (temperature, Vcc, bias, Tx/Rx power, thresholds, alarm flags) if the module has it
ethtool -m eth0 raw on hex onraw A0h (and A2h) dump for byte-level comparison (Memory map)
ethtool -m eth0 page 0x11 … (newer)CMIS pages on 400G+ modules
ethtool -i eth0driver, version, firmware/NVM version, bus address
ethtool -S eth0statistics incl. CRC errors, FEC corrected/uncorrected on some drivers
ethtool --show-fec eth0 / --set-fec eth0 encoding rsFEC mode configured and active
ethtool -s eth0 speed 25000 duplex full autoneg offforce speed
ethtool -p eth0 5blink port LED to identify the port
ethtool --show-priv-flags eth0driver-specific flags (e.g. link-down-on-close)

Other Linux sources: dmesg filtered for sfp, module and link (driver messages about module qualification), lspci -vv -s <addr> (PCIe link width/speed under LnkSta), ip -s link show eth0 (counters), /sys/class/net/eth0/ (carrier, speed).

Vendor tools

VendorToolKey uses
Nvidia / Mellanoxmlxlink -d <pci> -m -e -cmodule info and DDM (-m), eye/BER and FEC (-e, -c), link partner; mlxlink … --fec_override, --speeds
Nvidia / Mellanoxmlxconfig -d <pci> q / setport type (IB/ETH), link type, KEEP_ETH_LINK_UP, FEC override, breakout
Nvidia / Mellanoxmst status, mlxfwmanagerdevice list, firmware
Nvidia / Mellanoxibstat, ibportstate, iblinkinfoInfiniBand port state, width, speed (IB fabric)
Intelethtool -mprimary; Intel has no dedicated module dump tool
Intelnvmupdate64e, epct64eNVM firmware update; port configuration (E810 port options, e.g. 2×100G vs 4×25G)
Inteldmesgixgbe/i40e/ice: unsupported module messages (Optics compatibility)
Broadcombnxtnvm, niccliNVM, port settings, FEC/AN, transceiver info
Marvellqedctl
AMD Solarflaresfupdate, sfbootfirmware, port modes
Chelsiocxgbtool

Windows

CommandShows
Get-NetAdapterlink state, speed
Get-NetAdapterAdvancedProperty -Name "Ethernet 2"speed/duplex, FEC mode, jumbo — settable with Set-NetAdapterAdvancedProperty
Get-NetAdapterHardwareInfoPCIe slot, link width/speed
Get-NetAdapterStatisticscounters
Intel PROSet: Get-IntelNetAdapter, Get-IntelNetAdapterSettingIntel-specific settings; module info in Device Manager → Link Speed tab
Nvidia WinOF-2: mlx5cmd -Stat, mlxlink (Windows build)module info and link diagnostics
Event Viewer → Systemdriver messages about unsupported modules

Windows drivers rarely expose DDM; use vendor tools or read the module on the bench.

VMware ESXi

CommandShows
esxcli network nic list / get -n vmnic0link, speed, driver, firmware
esxcli network nic stats get -n vmnic0counters
esxcli system module parameters list -m ixgben / set -m ixgben -p "…"driver parameters where supported
esxcli intnet … (Intel plugin), esxcli mellanox … / mlxlink (Nvidia plugin)vendor diagnostics incl. module info
vmkernel.log"unsupported module", link flaps
esxcli hardware pci listPCIe link status

Reading the output

ObservationMeaningNext
ethtool -m: "Cannot get module EEPROM information: Operation not supported"driver does not expose it, port has no module, or module I²C not answeringcheck dmesg, reseat, try another port (Read & write errors)
Identity readable, Link detected: no, Rx power normalspeed/FEC/AN mismatchethtool --show-fec, compare with switch (FEC & AN)
Rx power −40 dBm / "-inf"no lightfibre, far end, polarity (No link)
Bias and Tx power fine, Rx marginaldirty connector, long linkclean, budget (Rx power & budget)
FEC uncorrectable counters risinglink at the edgeDDM levels, cable class, temperature (VDM & FEC metrics)
Temperature > 70 °C in a 1U serverairflowreposition, OCP slot (Ports & PCIe)
LnkSta: Speed 8GT/s, Width x8 on a 2×100G cardPCIe bottleneckslot/bifurcation
dmesg: unsupported moduledriver whitelistOptics compatibility on NICs

Monitoring from the server

  • ethtool -m output is parseable; a cron job or a node exporter with the ethtool collector exports DDM to Prometheus-style monitoring (Monitoring).
  • Nvidia mlxlink JSON output (--json) and Intel ethtool -S FEC counters make good pre-failure signals (Link reliability & monitoring).
  • Poll intervals of 30–60 s are enough; DDM itself updates every second at best.

In CodingBox

ethtool -m raw on hex on and CodingBox read the same bytes: when a module behaves differently on a NIC and on the bench, compare the two dumps field by field — a driver that rewrites nothing will show identical data, and any difference points at the module's own dynamic pages or at a reading error (Check transceiver, Reading DDM with tools).