image image image image image

On This Page

The mlxcables tool allows users to access the cables and do the following:

  • Query the cable and get its IDs
  • Read specific addresses in the EEPROM
    • Read a specific register by its name. Supported registers are received by the tool (depends on the cable type)
    • Dump all the cable EEPROM bytes in RAW format
    • Upgrade the FW image on the cable uC (Only on cables that support ISSU)

mlxcables Synopsis

[-d|--dev <DeviceName>] [-h|--help] [-v|--version] [-q|--query] [--DDM] [-r|--read] [--print_raw] [--dump] [-b|--bytes_line <bytesPerLine>] [-p|--page <pageNum>] [-o|--offset <pageOffset>] [-l|--length <length>] [-a|--address <address>] [-y|--yes] [--no] [--read_reg <Register>] [--read_all_regs] [--show_all_regs] [--customization <Customization_type>]

where:

-d|--dev <DeviceName>Perform operation for specified cable
-h|--helpShow this message and exit
-v|--versionShow the executable version and exit
-q|--queryQuery cable info
--DDM Get cable DDM query
-r|--read  Read from cable
--print_rawPrint bytes in raw format
--dumpDump all cable pages in RAW format
-b|--bytes_line <bytesPerLine>Bytes per line in the raw print (multiples of 4, default: 4)
-p|--page <pageNum> Specific Page number to do the read/write operation
-o|--offset <pageOffset>Specific Page offset
-l|--length <length>Length of the needed data in bytes to read (default: 1 Byte)
-a|--address <address>Address (Replacement for page+offset)
--read_reg <Register>   Read register from cable
--read_all_regsRead all registers from cable
--show_all_regs Show all registers in the cable
--customization <customization_type>

Show cable specific customization

Notes:

  • For QSFP transceivers, the tool reads the address from I2C address of 0x50. For further information, please see spec SFF8636.
  • For SFP transceivers, the tool reads from I2C address 0x50 and names it page 0. When reading from I2C address 0x51 the pages will be read as page <x+1>, for example:
    • I2C address 0x51 page 0 will be referred in the tool as page 1.
    • I2C address 0x51 page 1 will be referred in the tool as page 2. For further information, please see spec SFF8472.

Examples:

To read specific byte/s in the cable pages:

mlxcables -d mt4115_pciconf0_cable_0 -r -p 0 -o 165 -l 3
Page[0].Byte[165] = 0x00
Page[0].Byte[166] = 0x02
Page[0].Byte[167] = 0xc9

Another way to read from a specific page is to use the '--address <ADDR>' flag where ADDR=0x<PAGE><OFFSET>, for example to read the same bytes with -a:

mlxcables -d mt4115_pciconf0_cable_0 -r -a 0x00A5 -l 3
Page[0].Byte[165] = 0x00
Page[0].Byte[166] = 0x02
Page[0].Byte[167] = 0xc9

To read in raw format:

# mlxcables -d mt4115_pciconf0_cable_0 -r -p 0 -o 128 -l 12 --print_raw

128: 0d 8c 23 81
132: 00 00 00 00
136: 00 00 00 05

To control Bytes per line, use -b:

# mlxcables -d mt4115_pciconf0_cable_0 -r -p 0 -o 128 -l 12 --print_raw -b 8
128: 0d 8c 23 81 00 00 00 00
136: 00 00 00 05


To query the cable:

mlxcables -d mt4115_pciconf0_cable_0 -q
Cable name    : mt4115_pciconf0_cable_0
FW version    : 2.2.550
FW Dev ID     : 0x21
FW GW version : Legacy
-------- Cable EEPROM --------
Identifier    : QSFP+ (0dh)
Technology    : 1550 nm DFB (50h)
Compliance    : 40G Active Cable (XLPPI), 100G AOC or 25GAUI C2M AOC. Providing a worst BER of 10^(-12) or below
Wavelength    : 1550 nm
OUI           : 0x0002c9
Vendor        : Mellanox
Serial number : MT1602FT00022
Part number   : MFS1200-E003
Revision      : AB
Temperature   : 54 C
Length        : 3 m

Get the DDM query of the cable:

# mlxcables -d mt4115_pciconf0_cable_0 --DDM
Cable DDM:
----------
Temperature : 37C
Voltage     : 3.3010V
RX Power    : -0.6712dBm
TX Power    : 0.8877dBm
TX Bias     : 6.7500mA
----- Flags -----
Temperature:
  Alarm high   : 0
  Warning high : 0
  Warning low  : 0
  Alarm low    : 0
Voltage:
  Alarm high   : 0
  Warning high : 0
  Warning low  : 0
  Alarm low    : 0
RX/TX Power and TX Bias:
  RX Power alarm high  : 0
  RX Power warning high: 0
  RX Power warning low : 0
  RX Power alarm low   : 0
  TX Power alarm high  : 0
  TX Power warning high: 0
  TX Power warning low : 0
  TX Power alarm low   : 0
  TX Bias alarm high   : 0
  TX Bias warning high : 0
  TX Bias warning low  : 0
  TX Bias alarm low    : 0
----- Thresholds -----
  Temperature high alarm threshold   : 80C
  Temperature high warning threshold : 70C
  Temperature low warning threshold  : 0C
  Temperature low alarm threshold    : -10C

  Voltage high alarm threshold  : 3.5000V
  Voltage high warning threshold: 3.4650V
  Voltage low warning threshold : 3.1350V
  Voltage low alarm threshold   : 3.1000V

  RX Power high alarm threshold : 5.3999dBm
  RX Power high warn threshold  : 2.4000dBm
  RX Power low warn threshold   : -10.3012dBm
  RX Power low alarm threshold  : -13.3068dBm

  TX Power high alarm threshold : 5.3999dBm
  TX Power high warn threshold  : 2.4000dBm
  TX Power low warn threshold   : -8.4013dBm
  TX Power low alarm threshold  : -11.4026dBm

  TX Bias high alarm threshold  : 8.5000mA
  TX Bias high warn threshold   : 8.0000mA
  TX Bias low warn threshold    : 6.0000mA
  TX Bias low alarm threshold   : 5.4920mA


To read by register name:

Get the list of the supported registers.

mlxcables -d mt4115_pciconf0_cable_0 --show_all_regs
Available registers per page:
====================================================
page00_high registers:
====================================================
identifier     |
ext_identifier |
connector_type |
..
..
..
vendor_oui     |
..

Read the register with the register name you choose (e.g. vendor_oui, identifier).

mlxcables -d mt4115_pciconf0_cable_0 --read_reg vendor_oui
vendor_oui = 0x0002c9
mlxcables -d mt4115_pciconf0_cable_0 --read_reg identifier
identifier = 0x0d

To read all the Eeprom of the cable:

mlxcables -d mt4115_pciconf0_cable_0 --read_all_regs
Available registers per page:
====================================================
page00_high registers:
====================================================
identifier | 0x0d
ext_identifier | 0x06
connector_type | 0x02
..
..
..
vendor_oui | 0x0002c9
..

This will print the same tables as "--show_all_regs" but with the data that was read.

To dump all the cable's pages in raw format:

# mlxcables -d mt4115_pciconf0_cable_0 --dump -b 16
+----------------------------------------+
| Page: 0x00 , Offset: 000, Length: 0x80 |
+----------------------------------------+
000: 0d 06 00 f0 00 00 00 00 00 00 00 00 00 00 00 00
016: 00 00 00 00 00 00 29 a7 00 00 80 7d 00 00 00 00
032: 00 00 37 fa 26 2a 33 68 1c 0c b3 f9 b2 76 c2 fc
048: c1 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
064: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
080: 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00
096: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00
112: 00 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+----------------------------------------+
| Page: 0x00 , Offset: 128, Length: 0x80 |
+----------------------------------------+
128: 0d cc 23 81 00 00 00 00 00 00 00 05 ff 00 00 00
144: 00 00 03 50 4d 65 6c 6c 61 6e 6f 78 20 20 20 20
160: 20 20 20 20 1f 00 02 c9 4d 46 53 31 32 30 30 2d
176: 45 30 30 33 20 20 20 20 41 43 79 18 27 10 46 be
192: 18 07 f5 96 4d 54 31 36 31 33 46 54 30 30 36 39
208: 36 20 20 20 31 36 30 32 32 32 00 00 00 00 67 a9
224: 36 30 33 46 4d 41 32 30 33 47 31 34 32 38 20 20
240: 00 00 00 00 00 00 00 00 00 00 01 00 10 00 00 00
+----------------------------------------+
| Page: 0x03 , Offset: 128, Length: 0x80 |
+----------------------------------------+
128: 50 00 f6 00 46 00 00 00 00 00 00 00 00 00 00 00
144: 88 b8 79 18 87 5a 7a 76 00 00 00 00 00 00 00 00
160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
176: 87 71 01 d3 43 e2 03 a5 00 00 00 00 00 00 00 00
192: 87 71 02 d4 43 e2 05 a5 00 00 00 00 00 00 00 00
208: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
224: a7 03 00 00 00 00 00 00 00 00 00 00 77 77 11 11
240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00