• Welcome to TechPowerUp Forums, Guest! Please check out our forum guidelines for info related to our community.

ASUS Prime X670-P Mainboard Sensor Nuvoton NCT6799D

Joined
Jul 31, 2024
Messages
738 (3.86/day)
Why is that sensor module not loaded on startup? Should not the mainboard sensor be also loaded automatically like the

Windows 11 pro claims for the ASUS X670-P Prime mainboard to be a NCT6799D sensor.

Screenshot 2025-02-03 151739.png


left side of i3wm and the shell: at startup.
right side of i3wm and the shell when i forcefully load the module. the other stuff is same below on the right panel

03-02-2025_15:32:02_screenshot.png



If you have any hints how to output a single line from a config file - let me know - without using two commands and the pipe.

First command output. In my point of view the adress is 0xd800 for the mainboard chip i have - according to windows 11 pro and the windows software
Second command: just updated dmesg output when i forced loaded the module - right panel above - just feedback that it did something
Third command: Just showing that my mainboard is listed in the big mainboard list.
I bought X670-P mainboard but I added later myself the wifi module. I believe these mainbaords are identical, just different names, if they were shipped with or wihtout wifi module from the factory.
Fourth command: just show that i use the 6.13.1 linux kernel with gentoo patches.
Code:
Sienna_Cichlid /home/roman # head -n 89 /usr/src/linux/drivers/hwmon/nct6775-platform.c |tail -1
#define SIO_NCT6799_ID        0xd800
Sienna_Cichlid /home/roman # dmesg |tail -1
[   43.114913] nct6775: Found NCT6796D-S/NCT6799D-R or compatible chip at 0x2e:0x290
Sienna_Cichlid /home/roman # grep PRIME\ X670-P /usr/src/linux/drivers/hwmon/nct6775-platform.c
    "PRIME X670-P",
    "PRIME X670-P WIFI",
Sienna_Cichlid /usr/src # ls -alh linux
lrwxrwxrwx 1 root root 20 Feb  2 22:09 linux -> linux-6.13.1-gentoo/

starting point:

webpages i looked at
https://www.reddit.com/r/linuxhardware/comments/zjqikw

--

Can someone verify this:

I came to the conclusion, these are the sensors from my DRAM (that's why i included that above in the windows screenshot)

Code:
spd5118-i2c-1-53
Adapter: SMBus PIIX4 adapter port 0 at 0b00
temp1:        +40.5°C  (low  =  +0.0°C, high = +55.0°C)
                       (crit low =  +0.0°C, crit = +85.0°C)

spd5118-i2c-1-51
Adapter: SMBus PIIX4 adapter port 0 at 0b00
temp1:        +40.8°C  (low  =  +0.0°C, high = +55.0°C)
                       (crit low =  +0.0°C, crit = +85.0°C)

Regardless of the nonsense value of 12°C. The infrared thermometer claims 22°C. Physically it's impossible to be below that 22°C room temperature.

I just ran this again + a reboot now
Code:
Sienna_Cichlid /home/roman # sensors-detect
# sensors-detect version 3.6.2
# Board: ASUSTeK COMPUTER INC. PRIME X670-P
# Kernel: 6.13.1-gentoo_03_02_2025 x86_64
# Processor: AMD Ryzen 5 7600X 6-Core Processor (25/97/2)

Nope

Just modprobe the module without a hex value also added the sensors.
Code:
Sienna_Cichlid /home/roman # modprobe nct6775
Sienna_Cichlid /home/roman # sensors

--

I'm not happy with that solution. This seems to fix that the module is not loaded. source: https://bbs.archlinux.org/viewtopic.php?id=184814
(I'm well aware of that comment lines start with a # - i kept the code)

Code:
Sienna_Cichlid /home/roman # cat /etc/modules-load.d/nct6775.conf
# Load nct6775.ko at boot
nct6775

The gentoo wiki also misses some important examples https://wiki.gentoo.org/wiki/Lm_sensors

If you use /etc/conf.d/modules to declare which kernel modules to load simply add the necessary kernel modules as shown by sensors-detect to it.

source: https://www.freedesktop.org/software/systemd/man/latest/modules-load.d.html

Description​

systemd-modules-load.service(8) reads files from the above directories which contain kernel modules to load during boot in a static list. Each configuration file is named in the style of /etc/modules-load.d/program.conf. Note that it is usually a better idea to rely on the automatic module loading by PCI IDs, USB IDs, DMI IDs or similar triggers encoded in the kernel modules themselves instead of static configuration like this. In fact, most modern kernel modules are prepared for automatic loading already.

This help page sums it nicely up: Note that it is usually a better idea to rely on the automatic module loading by PCI IDs, USB IDs, DMI IDs or similar triggers encoded in the kernel modules themselves instead of static configuration like this.

--

edit: some modules load themself

Code:
Sienna_Cichlid /home/roman # lsmod
Module                  Size  Used by
nct6775                28672  0
nct6775_core           53248  1 nct6775
hwmon_vid              12288  1 nct6775
iwlmvm                430080  0
amdgpu              10207232  11
spd5118                12288  0
mac80211              663552  1 iwlmvm
libarc4                12288  1 mac80211
sp5100_tco             12288  0
iwlwifi               319488  1 iwlmvm
kvm_amd                94208  0
watchdog               24576  1 sp5100_tco
kvm                   593920  1 kvm_amd
drm_client_lib         12288  1 amdgpu
i2c_algo_bit           12288  1 amdgpu
drm_ttm_helper         12288  2 amdgpu
ttm                    65536  2 amdgpu,drm_ttm_helper
drm_exec               12288  1 amdgpu
i2c_piix4              20480  0
drm_suballoc_helper    12288  1 amdgpu
amdxcp                 12288  1 amdgpu
k10temp                12288  0
cfg80211              438272  3 iwlmvm,iwlwifi,mac80211
i2c_smbus              12288  1 i2c_piix4
drm_buddy              16384  1 amdgpu
rfkill                 24576  3 iwlmvm,cfg80211
gpu_sched              32768  1 amdgpu
drm_display_helper    135168  1 amdgpu
drm_kms_helper        131072  4 drm_display_helper,amdgpu,drm_ttm_helper,drm_client_lib
8250                   28672  0
8250_base              49152  1 8250
serial_mctrl_gpio      12288  2 8250,8250_base
serial_base            49152  3 8250,serial_mctrl_gpio,8250_base
gpio_amdpt             12288  0
i2c_designware_platform    12288  0
gpio_generic           16384  1 gpio_amdpt
i2c_designware_core    28672  1 i2c_designware_platform

edit: this looks like a mess - all three urls are realted to each other
 
Last edited:

AsRock

TPU addict
Joined
Jun 23, 2007
Messages
19,172 (2.98/day)
Location
UK\USA
Processor AMD 3900X \ AMD 7700X
Motherboard ASRock AM4 X570 Pro 4 \ ASUS X670Xe TUF
Cooling D15
Memory Patriot 2x16GB PVS432G320C6K \ G.Skill Flare X5 F5-6000J3238F 2x16GB
Video Card(s) eVga GTX1060 SSC \ XFX RX 6950XT RX-695XATBD9
Storage Sammy 860, MX500, Sabrent Rocket 4 Sammy Evo 980 \ 1xSabrent Rocket 4+, Sammy 2x990 Pro
Display(s) Samsung 1080P \ LG 43UN700
Case Fractal Design Pop Air 2x140mm fans from Torrent \ Fractal Design Torrent 2 SilverStone FHP141x2
Audio Device(s) Yamaha RX-V677 \ Yamaha CX-830+Yamaha MX-630 \Paradigm 7se MKII, Paradigm 5SE MK1 , Blue Yeti
Power Supply Seasonic Prime TX-750 \ Corsair RM1000X Shift
Mouse Steelseries Sensei wireless \ Steelseries Sensei wireless
Keyboard Logitech K120 \ Wooting Two HE
Benchmark Scores Meh benchmarks.
Auxin i believe it's for PSU temp readout if there is one available from the PSU.

But although not 100% sure about it as i do not have a PSU that has this option.
 
Joined
May 10, 2023
Messages
592 (0.93/day)
Location
Brazil
Processor 5950x
Motherboard B550 ProArt
Cooling Fuma 2
Memory 4x32GB 3200MHz Corsair LPX
Video Card(s) 2x RTX 3090
Display(s) LG 42" C2 4k OLED
Power Supply XPG Core Reactor 850W
Software I use Arch btw
Why is that sensor module not loaded on startup?
Because you didn't configure it like so.
If you have any hints how to output a single line from a config file - let me know - without using two commands and the pipe.
Either sed or awk:
Code:
sed -n '89p' yourfilehere.txt
awk 'NR==89' yourfilehere.txt
First command output. In my point of view the adress is 0xd800 for the mainboard chip i have - according to windows 11 pro and the windows software
No, that's the device ID it's programmed by default with. This is used to actually find out which device you have on the bus.
I'm not happy with that solution. This seems to fix that the module is not loaded. source: https://bbs.archlinux.org/viewtopic.php?id=184814
(I'm well aware of that comment lines start with a # - i kept the code)
Why not? That's the recommended way to load external modules.

This help page sums it nicely up: Note that it is usually a better idea to rely on the automatic module loading by PCI IDs, USB IDs, DMI IDs or similar triggers encoded in the kernel modules themselves instead of static configuration like this.

--

edit: some modules load themself
The service responsible for such module loading would be lm_sensors itself.

As per the wiki itself:
This will only work if the modules-load runscript is started, add it to the default runlevel if necessary.

In my system, running `sensors-detect` as root properly generates the mentioned config file, and the systemd service properly loads the module on boot.
 
Top