i2c Utility

NVIDIA ConnectX-5 Adapter Cards Firmware Release Notes v16.35.3502 LTS

The i2c utility provides low level access to the I2C bus on any NVIDIA switch platform, enabling the user to read or write data.

The mst driver must be started prior to running i2c tool.

To start i2c:

  1. Start the mst driver (mst start or mst restart). Note: This step in not required in Windows.

  2. Run i2c with the following command line syntax:


    # i2c [OPTIONS] <device> <cmd> <i2c_addr> <addr> [<data>]



Prints this message.

-a <addr_width>

Sets address width (in bytes) to the specified value. May be 0, 1, 2 or 4. Default: 1.

-d <data_width>

Sets data width (in bytes) to the specified value. May be 1, 2 or 4s. Default is 1.

-x <data_len>

Presents each byte of data as two hexadecimal digits (such as 013C20343B). Note that this option is mutually exclusive with the "-d" option.

The remaining parameters are:


Valid mst device.


Command. May be "r[ead]" or "w[rite]".


I2C slave address.


Address (of length addr_width) inside I2C target device to read/write operation.

Note that the <addr> value is ignored if <addr_witdh> = 0.


Data (bytes of length data_width) to write to target device.


All parameters are interpreted as hexadecimal values.


Read two bytes from address 0 of target I2C slave address 0x56:


# i2c -a 2 -d 2 /dev/mst/mtusb-1 r 0x56 0x00 0000

Write two bytes to the address above then read them:


# i2c -a 2 -d 2 /dev/mst/mtusb-1 w 0x56 0x00 0x1234 # i2c -a 2 -d 2 /dev/mst/mtusb-1 r 0x56 0x00 3412

Read (as separate) 16 bytes in hexadecimal format starting from address 0 of the target device above:


# i2c -a 2 -x 16 /dev/mst/mtusb-1 r 0x56 0x00 12340000000000000000000000000000

The following exit values are returned:

  • 0 - successful completion

  • >0 - an error occurred

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