petersulyok / asrock_z390_taichi

Lm-sensors configuration for ASRock Z390 Taichi motherboards on Linux
4 stars 0 forks source link

Asrock B650E Taichi #1

Closed JurgenCruz closed 1 year ago

JurgenCruz commented 1 year ago

Hi,

I have the B650E Taichi Motherboard and I cannot see the fans with lm-sensors. I was wondering if you could point me in the right direction on how to contribute so I can get the config for this motherboard as well.

Thanks.

petersulyok commented 1 year ago

Hi,

Based on this page it seems that this motherboard uses Nuvoton NCT6796D-S Super IO chip.

Try to use sensor-detect command to setup lm-sensors and usually the nct6775 kernel driver should support this SIO chip. To see any results (temperatures, voltages, fans) you should load that kernel module as well. I hope it helps. Cheers,

Peter

petersulyok commented 1 year ago

An additional comment: you can check the exact SIO chip on the motherboard yourself but you have to remove the cover for that.

JurgenCruz commented 1 year ago

Thanks! small problem though. it gives me an error: modprobe: ERROR: could not insert 'nct6775': No such device

any idea or suggestion?

petersulyok commented 1 year ago

You can ask the author of nct6775 module, Guenter Roeck [linux@roeck-us.net](mailto:linux%40roeck-us.net), if this SIO chip is supported at all, the -S tag was not mentioned in the module documentation, it could be a new variant.

petersulyok commented 1 year ago

Any progress on this?

JurgenCruz commented 1 year ago

I asked the author. But after the initial response saying that they didn't know if the driver supported the -S variant and asking me for the output of sensors-detect, no more replies from them :cry:

petersulyok commented 1 year ago

You can send him the output of the sensor-detect and the error message on loading of the module.

JurgenCruz commented 1 year ago

I did send the output of sensor-detect, and the errors when loading the module. They also asked me if dmesg had any output but there wasn't any.

petersulyok commented 1 year ago

If can you see such a line in the output of sensor-detect:

Found unknown chip with ID 0xd352

then you can force the module to be loaded with this ID (your ID could be different) in /etc/modules.conf:

options nct6775 force_id=0xd352

BTW, which kernel do you use? I assume a newer kernel would be needed for this.

JurgenCruz commented 1 year ago

Here is the output for sensors-detect:

# sensors-detect version 3.6.0+git # System: ASRock B650E Taichi [Default string] # Kernel: 6.3.1-arch1-1 x86_64 # Processor: AMD Ryzen 9 7900X 12-Core Processor (25/97/2)

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):
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 AMD Family 19h 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 unknown chip with ID 0xd802 (logical device B has address 0x290, could be sensors) Probing for Super-I/O at 0x4e/0x4f Trying family `National Semiconductor/ITE'... No Trying family `SMSC'... No Trying family `VIA/Winbond/Nuvoton/Fintek'... Yes Found unknown chip with ID 0xd441

Some systems (mainly servers) implement IPMI, a set of common interfaces through which system health data may be retrieved, amongst other things. We first try to get the information from SMBIOS. If we don't find it there, we have to read from arbitrary I/O ports to probe for such interfaces. This is normally safe. Do you want to scan for IPMI interfaces? (YES/no):
Probing for `IPMI BMC KCS' at 0xca0... No Probing for `IPMI BMC SMIC' at 0xca8... No

Some hardware monitoring chips are accessible through the ISA I/O ports. We have to write to arbitrary I/O ports to probe them. This is usually safe though. Yes, you do have ISA I/O ports even if you do not have any ISA slots! Do you want to scan the ISA I/O ports? (YES/no):
Probing for `National Semiconductor LM78' at 0x290... No Probing for `National Semiconductor LM79' at 0x290... No Probing for `Winbond W83781D' at 0x290... No Probing for `Winbond W83782D' at 0x290... No

Lastly, we can probe the I2C/SMBus adapters for connected hardware monitoring devices. This is the most risky part, and while it works reasonably well on most systems, it has been reported to cause trouble on some systems. Do you want to probe the I2C/SMBus adapters now? (YES/no):
Using driver `i2c-piix4' for device 0000:00:14.0: AMD KERNCZ SMBus

Next adapter: SMBus PIIX4 adapter port 0 at 0b00 (i2c-0) Do you want to scan it? (YES/no/selectively):
Client found at address 0x49 Probing for `National Semiconductor LM75'... No Probing for `National Semiconductor LM75A'... No Probing for `Dallas Semiconductor DS75'... No Probing for `National Semiconductor LM77'... No Probing for `Analog Devices ADT7410/ADT7420'... No Probing for `Maxim MAX6642'... No Probing for `Texas Instruments TMP435'... No Probing for `National Semiconductor LM73'... No Probing for `National Semiconductor LM92'... No Probing for `National Semiconductor LM76'... No Probing for `Maxim MAX6633/MAX6634/MAX6635'... No Probing for `NXP/Philips SA56004'... No Probing for `SMSC EMC1023'... No Probing for `SMSC EMC1043'... No Probing for `SMSC EMC1053'... No Probing for `SMSC EMC1063'... No Client found at address 0x4b Probing for `National Semiconductor LM75'... No Probing for `National Semiconductor LM75A'... No Probing for `Dallas Semiconductor DS75'... No Probing for `National Semiconductor LM77'... No Probing for `Analog Devices ADT7410/ADT7420'... No Probing for `Analog Devices ADT7411'... No Probing for `Maxim MAX6642'... No Probing for `Texas Instruments TMP435'... No Probing for `National Semiconductor LM92'... No Probing for `National Semiconductor LM76'... No Probing for `Maxim MAX6633/MAX6634/MAX6635'... No Probing for `NXP/Philips SA56004'... No Probing for `Analog Devices ADT7481'... No Client found at address 0x51 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Client found at address 0x53 Probing for `Analog Devices ADM1033'... No Probing for `Analog Devices ADM1034'... No Probing for `SPD EEPROM'... No Client found at address 0x73 Probing for `FSC Poseidon I'... No Probing for `FSC Poseidon II'... No Probing for `FSC Scylla'... No Probing for `FSC Hermes'... No Probing for `FSC Heimdal'... No Probing for `FSC Heracles'... No Probing for `FSC Hades'... No Probing for `FSC Syleus'... No Probing for `FTS Teutates'... No

Next adapter: SMBus PIIX4 adapter port 2 at 0b00 (i2c-1) Do you want to scan it? (YES/no/selectively):

Next adapter: SMBus PIIX4 adapter port 1 at 0b20 (i2c-2) Do you want to scan it? (YES/no/selectively):

Next adapter: AMDGPU SMU 0 (i2c-3) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU SMU 1 (i2c-4) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM i2c hw bus 0 (i2c-5) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM i2c hw bus 1 (i2c-6) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM i2c hw bus 2 (i2c-7) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM i2c hw bus 3 (i2c-8) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM aux hw bus 0 (i2c-9) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM aux hw bus 1 (i2c-10) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM aux hw bus 2 (i2c-11) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM i2c hw bus 0 (i2c-12) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM i2c hw bus 1 (i2c-13) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM i2c hw bus 2 (i2c-14) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM i2c hw bus 3 (i2c-15) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM aux hw bus 1 (i2c-16) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM aux hw bus 2 (i2c-17) Do you want to scan it? (yes/NO/selectively):

Next adapter: AMDGPU DM aux hw bus 3 (i2c-18) Do you want to scan it? (yes/NO/selectively):

Sorry, no sensors were detected. Either your system has no sensors, or they are not supported, or they are connected to an I2C or SMBus adapter that is not supported. If you find out what chips are on your board, check https://hwmon.wiki.kernel.org/device_support_status for driver status.

I see 2 IDs, which one should I use?

My linux kernel is linux 6.3.2.arch1-1

petersulyok commented 1 year ago

Your SIO chip is here:

Found unknown chip with ID 0xd441

You may try to force load it:

options nct6775 force_id=0xd441

JurgenCruz commented 1 year ago

I tried doing sudo modprobe nct6775 force_id=0xd441 but I get:

modprobe: ERROR: could not insert 'nct6775': No such device

Tried the same with 0xd802 but same error. Do you think if I do it with the config file instead it will work?

JurgenCruz commented 1 year ago

I read in arch wiki something about acpi_enforce_resources=lax. Do I need this? and if so, how do I add this kernel flag?

JurgenCruz commented 1 year ago

Found this thread:

https://lore.kernel.org/linux-hwmon/CAAd0S9B=n9feFQSYT3vaRg0MBSHLy9rngcJFRRWkPsj4o0zDmg@mail.gmail.com/

And it's continuation:

https://lore.kernel.org/linux-hwmon/b31ed9ec-3bd5-e032-ea03-b116ece4dac3@posteo.de/

seems like someone is also trying to make it work, but not sure what is missing.

petersulyok commented 1 year ago

No clue if acpi_enforce_resources=lax is needed or not. Read this wiki page about how to add this kernel parameter to grub config.

I would try to load the kernel module first. More info here: https://wiki.archlinux.org/title/Kernel_module you have to load nct6775 module with this option options nct6775 force_id=0xd441. Then you can check the logs.

JurgenCruz commented 1 year ago

So I created a file in /etc/modules-load.d/nct6775.conf with the contents:

nct6775

Then, I created a file in /etc/modprobe.d/nct6775.conf with the contents:

options nct6775 force_id=0xd441

I then rebooted and tried a dmesg | grep -i "nct6775" but found nothing.

BTW, I'm not using grub, I'm using systemd-boot with dracut. But from what I read, it is not super safe to use that kernel flag.

petersulyok commented 1 year ago

Does not sound great. I do not have any experience with dracut. Any meaningful output from sensors?

It would be nice to understand if the kernel module was loaded or not. You can also check this way:

# journalctl -b|grep nct67

petersulyok commented 1 year ago

BTW, you can also load the module this way:

sudo modprobe nct6775 force_id=0xd441

JurgenCruz commented 1 year ago

sensors does not see the device we want. her is the output:

amdgpu-pci-0300
Adapter: PCI adapter
vddgfx:      850.00 mV 
fan1:           0 RPM  (min =    0 RPM, max = 3300 RPM)
edge:         +33.0°C  (crit = +100.0°C, hyst = -273.1°C)
                       (emerg = +105.0°C)
junction:     +37.0°C  (crit = +110.0°C, hyst = -273.1°C)
                       (emerg = +115.0°C)
mem:          +36.0°C  (crit = +100.0°C, hyst = -273.1°C)
                       (emerg = +105.0°C)
PPT:          38.00 W  (cap = 303.00 W)

k10temp-pci-00c3
Adapter: PCI adapter
Tctl:         +44.9°C  
Tccd1:        +34.8°C  
Tccd2:        +34.6°C  

nvme-pci-4700
Adapter: PCI adapter
Composite:    +40.9°C  

amdgpu-pci-5000
Adapter: PCI adapter
vddgfx:        1.34 V  
vddnb:         1.15 V  
edge:         +40.0°C  
PPT:          45.22 W  

iwlwifi_1-virtual-0
Adapter: Virtual device
temp1:        +28.0°C  

nvme-pci-4f00
Adapter: PCI adapter
Composite:    +35.9°C  (low  = -273.1°C, high = +81.8°C)
                       (crit = +84.8°C)
Sensor 1:     +35.9°C  (low  = -273.1°C, high = +65261.8°C)
Sensor 2:     +41.9°C  (low  = -273.1°C, high = +65261.8°C)

The journal returned this:

May 15 12:33:32 systemd-modules-load[736]: Failed to insert module 'nct6775': No such device
May 15 12:39:24 dbus-daemon[1333]: [system] Activating via systemd: service name='org.freedesktop.home1' unit='dbus-org.freedesktop.home1.service' requested by ':1.95' (uid=0 pid=3498 comm="sudo modprobe --verbose nct6775 force_id=0xd441")
May 15 12:39:24 sudo[3498]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/modprobe --verbose nct6775 force_id=0xd441
May 15 12:39:30 dbus-daemon[1333]: [system] Activating via systemd: service name='org.freedesktop.home1' unit='dbus-org.freedesktop.home1.service' requested by ':1.96' (uid=0 pid=3501 comm="sudo modprobe --verbose nct6775 force_id=0xd802")
May 15 12:39:30 sudo[3501]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/modprobe --verbose nct6775 force_id=0xd802

Not sure if these are my manual attempts though.

JurgenCruz commented 1 year ago

BTW, you can also load the module this way:

sudo modprobe nct6775 force_id=0xd441

Yeah, that was the first thing I tried. it gives me the same error "No such device". That is when I found about the kernel flag, but not sure I want to run it with that flag.

petersulyok commented 1 year ago

I've got two things in my mind.

  1. We may have a wrong assumption (based on the link I found) that this is a Nuvoton NCT6796D-S chip. Here is a kernel patch, and the ID of the NCT6796D-S chip is 0xd800.
  2. I found this code which tries to support a SIO chip with the ID 0xd441, called NCT6686D. It is supported by a different kernel module nct6687.

I think the one only way to identify your Nuvoton chip is if your remove the cooling covers and you will read the exact number on the chip.

JurgenCruz commented 1 year ago

I did the same thing the person in the patch did: Looked in the Mobo's manual. In the manual, in page 11 it has the block diagram:

https://download.asrock.com/Manual/B650E%20Taichi_English.pdf

And it says it is using both!

SIO NCT6796D-S and SIO NCT6686D. Not sure what to do with this information though.

petersulyok commented 1 year ago

If you see my motherboard (Asrock Z390 Taichi) it also employs two SIO chips.

In your case the situation is similar. Maybe your mobo has too many fan connectors and Asrock added a side SIO chip. Unfortunately the kernel modules cannot identify them properly today. I also had to wait sometime while the linux kernel was able to identify these SIO chips.

JurgenCruz commented 1 year ago

I guess that is all I can do today. Thanks for the help.