mlxcables - Cables Tool

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)

Copy
Copied!
            

[-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|--help

Show this message and exit

-v|--version

Show the executable version and exit

-q|--query

Query cable info

--DDM

Get cable DDM query

-r|--read

Read from cable

--print_raw

Print bytes in raw format

--dump

Dump 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_regs

Read 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:

Copy
Copied!
            

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:

Copy
Copied!
            

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:

Copy
Copied!
            

# 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:

Copy
Copied!
            

# 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:

Copy
Copied!
            

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:

Copy
Copied!
            

# 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.

Copy
Copied!
            

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).

Copy
Copied!
            

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:

Copy
Copied!
            

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:

Copy
Copied!
            

# 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

© Copyright 2023, NVIDIA. Last updated on Oct 11, 2023.