3. Board Monitoring through I2C SMBus
Here is the telemetry data register memory map that you can use to access information through the I2C commands. The description column describes how the returned register values may be further processed to get the actual values. The units can be Celsius (°C), mA, mV, mW depending on what sensor you read.
Register | Offset | Width | Access | Field | Default Value | Description |
---|---|---|---|---|---|---|
Board Temperature | 0x100 | 32 | RO | [31:0] | 32'h00000000 | TMP411(U65) Register value is signed integer Temperature = register value * 0.5 |
Board Temperature High Warn | 0x104 | 32 | RW | [31:0] | 32'h00000000 | TMP411(U65) Register value is signed integer High Limit = register value * 0.5 |
Board Temperature High Fatal | 0x108 | 32 | RW | [31:0] | 32'h00000000 | TMP411(U65) Register value is signed integer High Critical = register value * 0.5 |
FPGA Core Temperature | 0x110 | 32 | RO | [31:0] | 32'h00000000 | TMP411(U65) Register value is signed integer Temperature = register value * 0.5 |
FPGA Die Temperature High Warn | 0x114 | 32 | RW | [31:0] | 32'h00000000 | TMP411(U65) Register value is signed integer High Limit = register value * 0.5 |
FPGA Die Temperature High Fatal | 0x118 | 32 | RW | [31:0] | 32'h00000000 | TMP411(U65) Register value is signed integer High Critical = register value * 0.5 |
QSFP0 Temperature | 0x11C | 32 | RO | [31:0] | 32'h00000000 | QSFPA(J4) Register value is signed integer Temperature = register value * 0.5 |
QSFP0 Temperature High Fatal | 0x120 | 32 | RW | [31:0] | 32'h00000000 | QSFPA(J4) Register value is signed integer High Alarm = register value * 0.5 |
QSFP0 Temperature High Warn | 0x124 | 32 | RW | [31:0] | 32'h00000000 | QSFPA(J4) Register value is signed integer High Warning = register value * 0.5 |
QSFP0 Voltage | 0x128 | 32 | RO | [31:0] | 32'h00000000 | QSFPA(J4) Voltage(mv) = register value |
QSFP1 Temperature | 0x12C | 32 | RO | [31:0] | 32'h00000000 | QSFPB(J5) Register value is signed integer Temperature = register value * 0.5 |
QSFP1 Temperature High Fatal | 0x130 | 32 | RW | [31:0] | 32'h00000000 | QSFPB(J5) Register value is signed integer High Alarm = register value * 0.5 |
QSFP1 Temperature High Warn | 0x134 | 32 | RW | [31:0] | 32'h00000000 | QSFPB(J5) Register value is signed integer High Warning = register value * 0.5 |
QSFP1 Voltage | 0x138 | 32 | RO | [31:0] | 32'h00000000 | QSFPB(J5) Voltage(mV) = register value |
FPGA Core Voltage | 0x13C | 32 | RO | [31:0] | 32'h00000000 | LTC3884(U44) Voltage(mV) = register value |
FPGA Core Current | 0x140 | 32 | RO | [31:0] | 32'h00000000 | LTC3884(U44) Current(mA) = register value |
12v Backplane Voltage | 0x144 | 32 | RO | [31:0] | 32'h00000000 | Voltage(mV) = register value |
12v Backplane Current | 0x148 | 32 | RO | [31:0] | 32'h00000000 | Current(mA) = register value |
1.2v Voltage | 0x14C | 32 | RO | [31:0] | 32'h00000000 | Voltage(mV) = register value |
12v Aux Voltage | 0x150 | 32 | RO | [31:0] | 32'h00000000 | Voltage(mV) = register value |
12v Aux Current | 0x154 | 32 | RO | [31:0] | 32'h00000000 | Current(mA) = register value |
1.8v Voltage | 0x158 | 32 | RO | [31:0] | 32'h00000000 | Voltage(mV) = register value |
3.3v Voltage | 0x15C | 32 | RO | [31:0] | 32'h00000000 | Voltage(mV) = register value |
Board Power | 0x160 | 32 | RO | [31:0] | 32'h00000000 | Power(mW) = register value |
PKVL A Core Temperature | 0x168 | 32 | RO | [31:0] | 32'h00000000 | PKVL1(U18A) Register value is signed integer Temperature = register value * 0.5 |
PKVL A Serdes Temperature | 0x16C | 32 | RO | [31:0] | 32'h00000000 | PKVL1(U18A) Register value is signed integer Temperature = register value * 0.5 |
PKVL B Core Temperature | 0x170 | 32 | RO | [31:0] | 32'h00000000 | PKVL2(U23A) Register value is signed integer Temperature = register value * 0.5 |
PKVL B Serdes Temperature | 0x174 | 32 | RO | [31:0] | 32'h00000000 | PKVL2(U23A) Register value is signed integer Temperature = register value * 0.5 |
QSFP values are obtained by reading the QSFP module and reporting the read values in the appropriate register. If the QSFP module does not support Digital Diagnostics Monitoring or if the QSFP module is not installed, then ignore values read from QSFP registers.
Use the Intelligent Platform Management Interface (IPMI) tool to read the telemetry data through the I2C bus.
I2C command to read the board temperatures at address 0x100:
-
0x20 is the I2C master bus address of your server that can access PCIe slots directly. This address varies with the server. Please refer to your server datasheet for the correct I2C address of your server.
- 0xBC is the I2C slave address of the Intel® MAX® 10 BMC.
- 4 is the number of read data bytes
- 0x01 0x00 is the register address of the board temperature which is presented in the table.
ipmitool i2c bus=0x20 0xBC 4 0x01 0x00
01110010 00000000 00000000 00000000
The output value in hexidecimal is: 0x72000000
0x72 is 114 in decimal.
To calculate the temperature in Celsius multiply by 0.5: 114 x 0.5 = 57 °C