Super I/O Chip

Allikas: Imre kasutab arvutit
Redaktsioon seisuga 5. oktoober 2025, kell 23:32 kasutajalt Imre (arutelu | kaastöö) (→‎Tööpõhimõte)
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

TODO

Mõisted

  • MSR (Model-Specific Register)
  • SPI (Serial Peripheral Interface)
  • I2C (Inter-Integrated Circuit)

Tööpõhimõte

Väited

  • nii nagu arvuti koostamisel pööratakse tähelepanu emaplaadil olevate sata või pcie pesade omadustele oleks asjakohane pöörata tähelepanu 'super i/o chip' mudelile (nt selleks, et linux oskaks temaga suhelda, lugeda erinevate andurite temperatuure, ventilaatorite pöördlemise kiirust jms)

Tüüpilise 2023 aasta desktop arvuti plokkskeem võiks olla selline, Gigabyte näites X570 põhise emaplaadi näitel

20251005-amd-x570-chipset-based-computer-block-diagram-gigabyte-01.png

kus

  • super i/o chip antud joonisel on kinnitatud otse cpu külge
  • super i/o chip suhtleb cpu'ga kasutades LPC (low pin count) protokolli
  • juuniselt on näha, et antud juhul kasutatakse tootja ITE seadet
  • käesolev teema on selles mõttes huvitav, et komponentide vahel toimub andmevahetus mitte-pcie, mitte-usb jne st mitte tuntud protokollide abil
  • mitmes tekstis rõhutatakse, et super i/o chip on kinnitatud PCH ehk emaplaadil oleva chipset ehk south bridge külge

Tarkvara paigaldamine

i2c jms teemadega tegelemiseks on abiks süsteemis selline tarkvara

# apt-get install i2c-tools lm-sensors sysfsutils

Nuvoton

Asus 'TUF GAMING B550-PLUS' emaplaat kasutab Nuvoton super i/o kiipi

root@pve-svc-02:~# dmidecode -s baseboard-product-name
TUF GAMING B550-PLUS

i2cdetect väljund

root@pve-svc-02:~# i2cdetect -l
i2c-0	i2c       	Synopsys DesignWare I2C adapter 	I2C adapter
i2c-1	smbus     	SMBus PIIX4 adapter port 0 at 0b00	SMBus adapter
i2c-2	smbus     	SMBus PIIX4 adapter port 2 at 0b00	SMBus adapter
i2c-3	smbus     	SMBus PIIX4 adapter port 1 at 0b20	SMBus adapter
i2c-4	i2c       	nvkm-0000:04:00.0-bus-0000      	I2C adapter
i2c-5	i2c       	nvkm-0000:04:00.0-bus-0001      	I2C adapter
i2c-6	i2c       	nvkm-0000:04:00.0-bus-0002      	I2C adapter

Leidmiseks sobib kasutada utiliiti sensors-detect

root@pve-svc-02:~# sensors-detect
# sensors-detect version 3.6.0
# Board: ASUSTeK COMPUTER INC. TUF GAMING B550-PLUS
# Kernel: 6.8.12-11-pve x86_64
# Processor: AMD Ryzen 5 5500 (25/80/0)

This program will help you determine which kernel modules you need
to load to use lm_sensors most effectively. It is generally safe
and recommended to accept the default answers to all questions,
unless you know what you're doing.

Some south bridges, CPUs or memory controllers contain embedded sensors.
Do you want to scan for them? This is totally safe. (YES/no):
Module cpuid loaded successfully.
Silicon Integrated Systems SIS5595...                       No
VIA VT82C686 Integrated Sensors...                          No
VIA VT8231 Integrated Sensors...                            No
AMD K8 thermal sensors...                                   No
AMD Family 10h thermal sensors...                           No
AMD Family 11h thermal sensors...                           No
AMD Family 12h and 14h thermal sensors...                   No
AMD Family 15h thermal sensors...                           No
AMD Family 16h thermal sensors...                           No
AMD Family 17h thermal sensors...                           No
AMD Family 15h power sensors...                             No
AMD Family 16h power sensors...                             No
Hygon Family 18h thermal sensors...                         No
Intel digital thermal sensor...                             No
Intel AMB FB-DIMM thermal sensor...                         No
Intel 5500/5520/X58 thermal sensor...                       No
VIA C7 thermal sensor...                                    No
VIA Nano thermal sensor...                                  No

Some Super I/O chips contain embedded sensors. We have to write to
standard I/O ports to probe them. This is usually safe.
Do you want to scan for Super I/O sensors? (YES/no):
Probing for Super-I/O at 0x2e/0x2f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               Yes
Found `Nuvoton NCT6798D Super IO Sensors'                   Success!
    (address 0x290, driver `nct6775')
Probing for Super-I/O at 0x4e/0x4f
Trying family `National Semiconductor/ITE'...               No
Trying family `SMSC'...                                     No
Trying family `VIA/Winbond/Nuvoton/Fintek'...               No
Trying family `ITE'...                                      No
..

kus

  • Nuvoton NCT6798D Super IO Sensor - leiti
  • ITE - samuti populaarne aga tagasihoidlikumalt Linux poolt toetatud - ei leitud
  • on natuke ebaselge, kus täpselt Nuvoton chip asub, vist kuidagi SMus PIIX4 adapteri taga
  • Synopsys DesignWare I2C adapter nagu puudub üldse, või ei ole kasutatav

ning kasutamiseks

root@pve-svc-02:~# modprobe nct6775
root@pve-svc-02:~# dmesg -T | tail -n 1
[Sun Oct  5 22:57:44 2025] nct6775: Found NCT6798D or compatible chip at 0x2e:0x290

Ilma nct6775 moodulita tunneb sensors utiliit ära pci seadmetega

root@pve-svc-02:~# lspci | egrep -i "Mell|Nvidia|nvme" | nl
     1	01:00.0 Ethernet controller: Mellanox Technologies MT2894 Family [ConnectX-6 Lx]
     2	01:00.1 Ethernet controller: Mellanox Technologies MT2894 Family [ConnectX-6 Lx]
     3	04:00.0 VGA compatible controller: NVIDIA Corporation G72 [GeForce 7500 LE] (rev a1)
     4	08:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller S4LV008[Pascal]
     5	0b:00.0 Non-Volatile memory controller: Samsung Electronics Co Ltd NVMe SSD Controller S4LV008[Pascal]

ja cpu andurid

root@pve-svc-02:~# sensors
nouveau-pci-0400
Adapter: PCI adapter
temp1:        +51.0°C  (high = +95.0°C, hyst =  +3.0°C)
                       (crit = +130.0°C, hyst =  +2.0°C)
                       (emerg = +135.0°C, hyst =  +5.0°C)

mlx5-pci-0100
Adapter: PCI adapter
asic:         +59.0°C  (crit = +105.0°C, highest = +74.0°C)

nvme-pci-0b00
Adapter: PCI adapter
Composite:    +31.9°C  (low  = -273.1°C, high = +81.8°C)
                       (crit = +84.8°C)
Sensor 1:     +31.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +33.9°C  (low  = -273.1°C, high = +65261.8°C)

k10temp-pci-00c3
Adapter: PCI adapter
Tctl:         +33.0°C

mlx5-pci-0101
Adapter: PCI adapter
asic:         +59.0°C  (crit = +105.0°C, highest = +74.0°C)

nvme-pci-0800
Adapter: PCI adapter
Composite:    +29.9°C  (low  = -273.1°C, high = +81.8°C)
                       (crit = +84.8°C)
Sensor 1:     +29.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +31.9°C  (low  = -273.1°C, high = +65261.8°C)

kus

  • nouveau-pci-0400 - videokaart, pci aadress 04:00.0
  • mlx5-pci-0100 ja 0101 - võrgukaart (Mellanox), pcie aadressid 01:00.0 ja 01:00.1
  • nvem-pci-0b00 ja 0800 - nvme kettad, pcie aadressid 0b:00.0 ja 08:00.0
  • k10temp-pci-00c3 - cpu, virtual pcie aadress

nct6775 abil tuntakse ära lisaks x570 chipset ja super i/o chip endaga jms komponentidega seotud andurid

root@pve-svc-02:~# modprobe nct6775
root@pve-svc-02:~# sensors
nouveau-pci-0400
Adapter: PCI adapter
temp1:        +52.0°C  (high = +95.0°C, hyst =  +3.0°C)
                       (crit = +130.0°C, hyst =  +2.0°C)
                       (emerg = +135.0°C, hyst =  +5.0°C)

mlx5-pci-0100
Adapter: PCI adapter
asic:         +59.0°C  (crit = +105.0°C, highest = +74.0°C)

nvme-pci-0b00
Adapter: PCI adapter
Composite:    +31.9°C  (low  = -273.1°C, high = +81.8°C)
                       (crit = +84.8°C)
Sensor 1:     +31.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +33.9°C  (low  = -273.1°C, high = +65261.8°C)

nct6798-isa-0290
Adapter: ISA adapter
in0:                      616.00 mV (min =  +0.00 V, max =  +1.74 V)
in1:                        1.02 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in2:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in3:                        3.34 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in4:                        1.01 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in5:                      960.00 mV (min =  +0.00 V, max =  +0.00 V)
in6:                      216.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in7:                        3.39 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in8:                        3.26 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in9:                        1.82 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in10:                     704.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in11:                       2.05 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in12:                       1.03 V  (min =  +0.00 V, max =  +0.00 V)  ALARM
in13:                     288.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
in14:                     216.00 mV (min =  +0.00 V, max =  +0.00 V)  ALARM
fan1:                        0 RPM  (min =    0 RPM)
fan2:                      514 RPM  (min =    0 RPM)
fan3:                        0 RPM  (min =    0 RPM)
fan4:                     1275 RPM  (min =    0 RPM)
fan5:                        0 RPM  (min =    0 RPM)
fan6:                        0 RPM  (min =    0 RPM)
fan7:                      497 RPM  (min =    0 RPM)
SYSTIN:                    +28.0°C  (high = +80.0°C, hyst = +75.0°C)
                                    (crit = +125.0°C)  sensor = thermistor
CPUTIN:                    +28.0°C  (high = +80.0°C, hyst = +75.0°C)
                                    (crit = +125.0°C)  sensor = thermistor
AUXTIN0:                   +93.0°C  (high = +80.0°C, hyst = +75.0°C)  ALARM
                                    (crit = +125.0°C)  sensor = thermistor
AUXTIN1:                   +43.0°C  (high = +80.0°C, hyst = +75.0°C)
                                    (crit = +125.0°C)  sensor = thermistor
AUXTIN2:                   -62.0°C  (high = +80.0°C, hyst = +75.0°C)
                                    (crit = +100.0°C)  sensor = thermistor
AUXTIN3:                   +83.0°C  (high = +80.0°C, hyst = +75.0°C)  ALARM
                                    (crit = +100.0°C)  sensor = thermistor
AUXTIN4:                   +28.0°C  (high = +80.0°C, hyst = +75.0°C)
PECI Agent 0 Calibration:  +28.0°C  (high = +80.0°C, hyst = +75.0°C)
PCH_CHIP_CPU_MAX_TEMP:      +0.0°C
PCH_CHIP_TEMP:              +0.0°C
PCH_CPU_TEMP:               +0.0°C
PCH_MCH_TEMP:               +0.0°C
TSI0_TEMP:                 +33.5°C
intrusion0:               ALARM
intrusion1:               ALARM
beep_enable:              disabled

k10temp-pci-00c3
Adapter: PCI adapter
Tctl:         +33.8°C

mlx5-pci-0101
Adapter: PCI adapter
asic:         +59.0°C  (crit = +105.0°C, highest = +74.0°C)

nvme-pci-0800
Adapter: PCI adapter
Composite:    +29.9°C  (low  = -273.1°C, high = +81.8°C)
                       (crit = +84.8°C)
Sensor 1:     +29.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +31.9°C  (low  = -273.1°C, high = +65261.8°C)                                    (crit = +100.0°C)

kus

  • lisandus nct6798-isa-0290 ehk Nuvoton chip
  • Nuvoton on nö pseudo isa siini chip
root@pve-svc-02:~# systool -v -b isa
Bus = "isa"

On natuke ebaselge kus täpselt Nuvoton chip asub, vist kuidagi SMus PIIX4 adapteri taga

root@pve-svc-02:~# systool -v -b i2c
Bus = "i2c"

  Device = "i2c-0"
  Device path = "/sys/devices/platform/AMDI0010:03/i2c-0"
    delete_device       = <store method only>
    name                = "Synopsys DesignWare I2C adapter"
    new_device          = <store method only>
    uevent              =
    waiting_for_supplier= "0"

  Device = "i2c-1"
  Device path = "/sys/devices/pci0000:00/0000:00:14.0/i2c-1"
    delete_device       = <store method only>
    name                = "SMBus PIIX4 adapter port 0 at 0b00"
    new_device          = <store method only>
    uevent              =

  Device = "i2c-2"
  Device path = "/sys/devices/pci0000:00/0000:00:14.0/i2c-2"
    delete_device       = <store method only>
    name                = "SMBus PIIX4 adapter port 2 at 0b00"
    new_device          = <store method only>
    uevent              =

  Device = "i2c-3"
  Device path = "/sys/devices/pci0000:00/0000:00:14.0/i2c-3"
    delete_device       = <store method only>
    name                = "SMBus PIIX4 adapter port 1 at 0b20"
    new_device          = <store method only>
    uevent              =

  Device = "i2c-4"
  Device path = "/sys/devices/pci0000:00/0000:00:02.1/0000:02:00.2/0000:03:00.0/0000:04:00.0/i2c-4"
    delete_device       = <store method only>
    name                = "nvkm-0000:04:00.0-bus-0000"
    new_device          = <store method only>
    uevent              =

  Device = "i2c-5"
  Device path = "/sys/devices/pci0000:00/0000:00:02.1/0000:02:00.2/0000:03:00.0/0000:04:00.0/i2c-5"
    delete_device       = <store method only>
    name                = "nvkm-0000:04:00.0-bus-0001"
    new_device          = <store method only>
    uevent              =

  Device = "i2c-6"
  Device path = "/sys/devices/pci0000:00/0000:00:02.1/0000:02:00.2/0000:03:00.0/0000:04:00.0/i2c-6"
    delete_device       = <store method only>
    name                = "nvkm-0000:04:00.0-bus-0002"
    new_device          = <store method only>
    uevent              =

Kasulikud lisamaterjalid