ASRock Rack X570D4U mainboard: I2C busses

This page describes the I2C busses and connected on-board devices on the ASRock X570D4U mainboard.

I2C bus 0

This bus is connected to the AUX_PANEL1 connector. SMBus alert for this bus is connected to GPIO 52 (G4) named input-aux-smb-alert-n.

DeviceAddressAvailable when host is offDescription
AUX panel SMBus header (AUX_PANEL1)YesStandard 2.54mm header, pinout is in manual

I2C bus 1

This bus is used for controlling on-board devices that are used when the host is on.

DeviceAddressAvailable when host is offDescription
PCA9557 IO expander0x1CNoControls the FAN fault LEDs
Unknown device0x1DNoUnknown
Nuvoton NCT6796D-R SuperIO0x2DNoHost temperature monitoring interface (SuperIO)
Nuvoton W83773G0x4CYesTemperature monitoring interface for 10G NIC (Not installed on base model X570D4U boards)

PCA9557 IO expander

PinDirectionFunction
0OutputFault LED for FAN 4
1OutputFault LED for FAN 5
2OutputFault LED for FAN 1
3OutputUnknown / not connected
4OutputFault LED for FAN 2
5OutputFault LED for FAN 3
6OutputFault LED for FAN 6
7OutputUnknown / not connected

Nuvoton NCT6796D-R SuperIO

This chip can read the CPU and chipset temperatures. It should be possible to use the newly added nct6775-i2c driver to use this device.

Using the NCT6775-I2C driver

The OpenBMC port for the X570D4U already includes the nct6775-i2c driver in it’s kernel, but as the SuperIO device only appears on the bus when the host system is powered on the driver needs to be loaded in and unloaded based on power state changes. This has not been implemented yet.

The driver can be manually loaded in using the following command:

echo "nct6775 0x2d" > /sys/bus/i2c/devices/i2c-1/new_device

If the driver was loaded correctly then you should now be able to find a folder called hwmon in the device folder /sys/bus/i2c/devices/i2c-1/1-002d. This folder will contain a symlink to the hwmon interface for the SuperIO chip. If the folder is missing then your kernel does not include the nct6775-i2c driver.

Directly accessing and reading the temperature registers

Alternatively the temperatures can be read using this shell script, for which no kernel driver is required:

#!/bin/bash
i2cset -y 1 0x2d 0x4e 0x04
while :
do
    TSI0INT=$((16#$(i2cget -y 1 0x2d 0x09 | cut -f2 -dx)))
    TSI0FRC=$(($((16#$(i2cget -y 1 0x2d 0x0a | cut -f2 -dx)))>>5))
    TSI1INT=$((16#$(i2cget -y 1 0x2d 0x0b | cut -f2 -dx)))
    TSI1FRC=$(($((16#$(i2cget -y 1 0x2d 0x0c | cut -f2 -dx)))>>5))
    echo "TSI0_TEMP: $TSI0INT.$TSI0FRC °C / TSI1_TEMP: $TSI1INT.$TSI1FRC °C"
    sleep 0.5
done

Nuvoton W83773G

This device is available on the versions of the X570D4U which include a 10Gbit network adapter. It monitors the temperature of the 10Gbit NIC.

cat /sys/class/hwmon/hwmon0/temp2_input

I2C bus 2

This bus is used for connecting to exernal power supplies with SMBus monitoring support using the PSU_SMB1 connector. SMBus alert for this bus is connected to GPIO 54 (G6) named input-psu-smb-alert-n.

DeviceAddressAvailable when host is offDescription
PSU SMBus header (PSU_SMB1)YesMOLEX 70543-0003 connector, pinout is in manual

I2C bus 3

This bus has an unknown purpose.

DeviceAddressAvailable when host is offDescription
Unknown device0x13YesUnknown
Unknown device0x14NoUnknown
Unknown device0x15NoUnknown

I2C bus 4

This bus is used to connect to expansion cards inserted into the PCI-Express slots of the mainboard.

DeviceAddressAvailable when host is offDescription
NXP PCA9545A I2C bus switch0x70YesBus multiplexer for switching between PCIe slots

NXP PCA9545A I2C bus switch

BusPort
0PCI express 16x slot
1PCI express 8x slot
2Unknown
3PCI express 1x slot

I2C bus 5

This bus is connected to the BMC_SMB_1 connector. The BMC_PRESENT_1_N signal on the BMC_SMB_1 connector is connected to GPIO 132 (Q4) named input-bmc-smb-present-n.

DeviceAddressAvailable when host is offDescription
BMC SMbus header (BMC_SMB_1)YesUnknown connector, pinout is in manual (might be MOLEX 353620550)

I2C bus 7

This bus is used for connecting to the FRU EEPROM and the RAM DIMMs.

DeviceAddressAvailable when host is offDescription
RAM DIMM A1 temperature sensor0x1ANo
RAM DIMM A2 temperature sensor????NoNot tested yet
RAM DIMM B1 temperature sensor0x1BNo
RAM DIMM B2 temperature sensor????NoNot tested yet
Unknown device0x30NoUnknown
Unknown device0x35NoUnknown
Unknown device0x36NoUnknown
RAM DIMM A1 SPD EEPROM0x52No
RAM DIMM A2 SPD EEPROM????NoNot tested yet
RAM DIMM B1 SPD EEPROM0x53No
RAM DIMM B2 SPD EEPROM????NoNot tested yet
FRU EEPROM0x57Yes

I2C bus 8

This bus is connected to the IPMB_1 connector.

DeviceAddressAvailable when host is offDescription
IPMI SMbus header (IPMB_1)YesMOLEX 22035045 connector, pinout is in manual