Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

No fan RPM on some fans on MSI X870 Tomahawk #107

Open
nfp0 opened this issue Oct 25, 2024 · 15 comments
Open

No fan RPM on some fans on MSI X870 Tomahawk #107

nfp0 opened this issue Oct 25, 2024 · 15 comments

Comments

@nfp0
Copy link

nfp0 commented Oct 25, 2024

This module seems to have exposed a lot of values for my MSI X870 Tomahawk motherboard, but some seem to be incorrect.

For example, the CPU Fan RPM is reading correctly, but the System Fan 2 and System Fan 3 should be reporting some RPM value, as I've confirmed they are rotating and the values are reading correctly on the BIOS.
A few temperature sensors also seem to be missing.

Here's the output of sensors after doing a sensors-detect:

nct6687-isa-0a20
Adapter: ISA adapter
+12V:           12.14 V  (min = +12.14 V, max = +12.17 V)
+5V:             5.06 V  (min =  +5.06 V, max =  +5.06 V)
+3.3V:           3.36 V  (min =  +0.00 V, max =  +3.36 V)
CPU Soc:         1.21 V  (min =  +1.21 V, max =  +1.22 V)
CPU Vcore:       1.09 V  (min =  +1.04 V, max =  +1.09 V)
CPU 1P8:         3.36 V  (min =  +3.36 V, max =  +3.36 V)
CPU VDDP:        3.36 V  (min =  +3.36 V, max =  +3.36 V)
DRAM:            1.41 V  (min =  +1.41 V, max =  +1.41 V)
Chipset:       332.00 mV (min =  +0.32 V, max =  +0.34 V)
CPU SA:        702.00 mV (min =  +0.70 V, max =  +0.71 V)
Voltage #2:      1.52 V  (min =  +1.52 V, max =  +1.52 V)
AVCC3:           3.30 V  (min =  +3.30 V, max =  +3.30 V)
AVSB:            3.36 V  (min =  +0.00 V, max =  +3.36 V)
VBat:            2.04 V  (min =  +0.00 V, max =  +2.04 V)
CPU Fan:        414 RPM  (min =  409 RPM, max =  414 RPM)
Pump Fan:         0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #1:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #2:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #3:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #4:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #5:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #6:    0 RPM  (min =    0 RPM, max =    0 RPM)
CPU:            +49.0°C  (low  = +48.0°C, high = +50.0°C)
System:         +45.0°C  (low  = +45.0°C, high = +45.0°C)
VRM MOS:        +46.0°C  (low  = +45.0°C, high = +46.0°C)
PCH:            +43.0°C  (low  = +42.0°C, high = +43.0°C)
CPU Socket:      +0.0°C  (low  =  +0.0°C, high =  +0.0°C)
PCIe x1:         +0.0°C  (low  =  +0.0°C, high =  +0.0°C)
M2_1:            +0.0°C  (low  =  +0.0°C, high =  +0.0°C)
@TheCompGeek
Copy link

TheCompGeek commented Nov 3, 2024

Can confirm as well on an MSI MPG X870E CARBON WIFI board:

nct6687-isa-0a20
Adapter: ISA adapter
+12V:           12.29 V  (min = +12.26 V, max = +12.29 V)
+5V:             5.04 V  (min =  +5.04 V, max =  +5.04 V)
+3.3V:           3.34 V  (min =  +3.34 V, max =  +3.34 V)
CPU Soc:         1.31 V  (min =  +1.31 V, max =  +1.31 V)
CPU Vcore:       1.30 V  (min =  +1.30 V, max =  +1.30 V)
CPU 1P8:         3.34 V  (min =  +3.34 V, max =  +3.34 V)
CPU VDDP:        3.34 V  (min =  +3.34 V, max =  +3.34 V)
DRAM:            1.37 V  (min =  +1.37 V, max =  +1.37 V)
Chipset:         2.04 V  (min =  +2.04 V, max =  +2.04 V)
CPU SA:        422.00 mV (min =  +0.42 V, max =  +0.42 V)
Voltage #2:      1.54 V  (min =  +1.54 V, max =  +1.54 V)
AVCC3:           3.30 V  (min =  +3.30 V, max =  +3.30 V)
AVSB:            3.34 V  (min =  +3.34 V, max =  +3.34 V)
VBat:            2.04 V  (min =  +2.04 V, max =  +2.04 V)
CPU Fan:       1321 RPM  (min = 1320 RPM, max = 1321 RPM)
Pump Fan:         0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #1:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #2:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #3:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #4:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #5:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #6:    0 RPM  (min =    0 RPM, max =    0 RPM)
CPU:            +47.0°C  (low  = +47.0°C, high = +47.0°C)
System:         +49.5°C  (low  = +49.0°C, high = +49.5°C)
VRM MOS:        +38.5°C  (low  = +38.0°C, high = +38.5°C)
PCH:            +48.5°C  (low  = +48.5°C, high = +49.0°C)
CPU Socket:      +0.0°C  (low  =  +0.0°C, high =  +0.0°C)
PCIe x1:        +47.0°C  (low  = +47.0°C, high = +47.0°C)
M2_1:          +216.0°C  (low  = +216.0°C, high = +216.0°C)

@f8lxninja
Copy link

Confirmed on MSI PRO X870-P WIFI:

nct6687-isa-0a20
Adapter: ISA adapter
+12V:           12.22 V  (min = +12.19 V, max = +12.24 V)
+5V:             5.01 V  (min =  +4.98 V, max =  +5.02 V)
+3.3V:           3.34 V  (min =  +2.04 V, max =  +3.34 V)
CPU Soc:         1.31 V  (min =  +1.31 V, max =  +1.31 V)
CPU Vcore:       1.34 V  (min =  +1.32 V, max =  +1.35 V)
CPU 1P8:         3.34 V  (min =  +3.34 V, max =  +3.34 V)
CPU VDDP:        3.34 V  (min =  +3.33 V, max =  +3.34 V)
DRAM:            1.41 V  (min =  +1.41 V, max =  +1.42 V)
Chipset:       346.00 mV (min =  +0.33 V, max =  +0.35 V)
CPU SA:        778.00 mV (min =  +0.78 V, max =  +0.80 V)
Voltage #2:      1.53 V  (min =  +1.53 V, max =  +1.53 V)
AVCC3:           3.32 V  (min =  +3.32 V, max =  +3.33 V)
AVSB:            3.34 V  (min =  +0.00 V, max =  +3.34 V)
VBat:            2.04 V  (min =  +0.00 V, max =  +2.04 V)
CPU Fan:       1612 RPM  (min =    0 RPM, max = 2090 RPM)
Pump Fan:         0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #1:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #2:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #3:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #4:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #5:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #6:    0 RPM  (min =    0 RPM, max =    0 RPM)
CPU:            +53.0°C  (low  = +50.0°C, high = +67.0°C)
System:         +42.5°C  (low  = +41.0°C, high = +42.5°C)
VRM MOS:        +39.5°C  (low  = +38.5°C, high = +41.0°C)
PCH:            +38.5°C  (low  = +37.0°C, high = +38.5°C)
CPU Socket:      +0.0°C  (low  =  +0.0°C, high =  +0.0°C)
PCIe x1:         +0.0°C  (low  =  +0.0°C, high =  +0.0°C)
M2_1:            +0.0°C  (low  =  +0.0°C, high =  +0.0°C)

@demomanca
Copy link

Some of us are attempting to resolve this in the LibreHardwareMonitor project. It appears MSI has used some different pinouts on this motherboard than other implementations, and it doesn't appear to be as simple as "remapping them". Any assistance on this would be appreciated, as it seems to be effecting all the newer MSI boards using this chip (X870 and Z890)

@Fred78290
Copy link
Owner

@demomanca I don't have this motherboard.

@demomanca
Copy link

@demomanca I don't have this motherboard.

Sorry, I should have been clearer, it wasn't so much about that particular board, it was more about how you went about finding the registers etc, or is it a case of (as we have been doing) just trial, error, poke and prod.

@sgoth
Copy link

sgoth commented Jan 29, 2025

I see the same for MSI B850 Tomahawk:

nct6687-isa-0a20
Adapter: ISA adapter
+12V:           12.12 V  (min = +12.10 V, max = +12.12 V)
+5V:             5.06 V  (min =  +5.05 V, max =  +5.06 V)
+3.3V:           3.35 V  (min =  +0.00 V, max =  +3.35 V)
CPU Soc:         1.21 V  (min =  +1.21 V, max =  +1.21 V)
CPU Vcore:       1.22 V  (min =  +1.21 V, max =  +1.23 V)
CPU 1P8:         3.35 V  (min =  +3.34 V, max =  +3.35 V)
CPU VDDP:        3.35 V  (min =  +3.34 V, max =  +3.35 V)
DRAM:            1.36 V  (min =  +1.36 V, max =  +1.36 V)
Chipset:       320.00 mV (min =  +0.31 V, max =  +0.33 V)
CPU SA:        764.00 mV (min =  +0.76 V, max =  +0.77 V)
Voltage #2:      1.54 V  (min =  +1.54 V, max =  +1.54 V)
AVCC3:           3.33 V  (min =  +3.32 V, max =  +3.34 V)
AVSB:            3.35 V  (min =  +0.00 V, max =  +3.35 V)
VBat:            2.05 V  (min =  +0.00 V, max =  +2.05 V)
CPU Fan:        404 RPM  (min =  399 RPM, max =  459 RPM)
Pump Fan:         0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #1:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #2:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #3:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #4:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #5:    0 RPM  (min =    0 RPM, max =    0 RPM)
System Fan #6:    0 RPM  (min =    0 RPM, max =    0 RPM)
CPU:            +43.0°C  (low  = +43.0°C, high = +50.0°C)
System:         +38.5°C  (low  = +38.5°C, high = +41.5°C)
VRM MOS:        +38.5°C  (low  = +38.0°C, high = +39.0°C)
PCH:            +39.0°C  (low  = +39.0°C, high = +39.5°C)
CPU Socket:      +0.0°C  (low  =  +0.0°C, high =  +0.0°C)
PCIe x1:         +0.0°C  (low  =  +0.0°C, high =  +0.0°C)
M2_1:            +0.0°C  (low  =  +0.0°C, high =  +0.0°C)

@Fred78290
Copy link
Owner

I don't have the ability to develop on theses motherboard
so the repository is collaborative.

@demomanca
Copy link

Hi @Fred78290 ,

Pull request for LHM is here LibreHardwareMonitor/LibreHardwareMonitor#1621

You can see what we had to do to get those other fan headers working. Not sure how we manage that here however. Is there a way to define "if this board, then this layout" with this module?

@Fred78290
Copy link
Owner

@demomanca

Thx, I read your changes and I have just changed the number of fans to 16.

I created a branch named 16-fans, could you check on your motherboard that all fans appear?

Before install, remove the running module with rmmod nct6687 followed by make dkms/clean; make dkms/install

Image

@demomanca
Copy link

Thanks @Fred78290 , I'll try and give this a go this week and see if it works.

@SCjona
Copy link

SCjona commented Feb 12, 2025

I have a MSI X870E Carbon with the same issue. I built the module with the 16-fans branch and now my system fans are listed. System Fan #14 is sys_fan_1 header on the mainboard and System Fan #13 is the sys_fan_2 header on the mainboard.

PWM control does not seem to work however for the system fans. it does work for fan 1 and 2 (cpu fan and pump). for the system fans I get cat pwm15_enabled => 0, writing to it has no effect. I also tried changing the NCT6687_NUM_REG_PWM constant to 16, but that did not help.

PWM control values
# output with NUM_REG_PWM set to 16
/sys/devices/platform/nct6687.2592/hwmon/hwmon7 # grep -r . pwm*
pwm1:40
pwm10:0
pwm10_enable:0
pwm11:0
pwm11_enable:0
pwm12:0
pwm12_enable:0
pwm13:99
pwm13_enable:0
pwm14:0
pwm14_enable:0
pwm15:0
pwm15_enable:0
pwm16:0
pwm16_enable:0
pwm1_enable:99
pwm2:48
pwm2_enable:99
pwm3:0
pwm3_enable:99
pwm4:153
pwm4_enable:99
pwm5:0
pwm5_enable:99
pwm6:0
pwm6_enable:99
pwm7:0
pwm7_enable:99
pwm8:0
pwm8_enable:99
pwm9:99
pwm9_enable:0

all control values
/sys/devices/platform/nct6687.2592/hwmon/hwmon7 # grep -r . | sort                                                                                                                                                                                                                                                                                                                                                                                                           
fan10_input:0
fan10_label:System Fan #8
fan10_max:0
fan10_min:0
fan11_input:0
fan11_label:System Fan #9
fan11_max:0
fan11_min:0
fan12_input:0
fan12_label:System Fan #10
fan12_max:0
fan12_min:0
fan13_input:0
fan13_label:System Fan #11
fan13_max:0
fan13_min:0
fan14_input:0
fan14_label:System Fan #12
fan14_max:0
fan14_min:0
fan15_input:246
fan15_label:System Fan #13
fan15_max:274
fan15_min:246
fan16_input:1090
fan16_label:System Fan #14
fan16_max:1109
fan16_min:1048
fan1_input:545
fan1_label:CPU Fan
fan1_max:575
fan1_min:545
fan2_input:1275
fan2_label:Pump Fan
fan2_max:1366
fan2_min:1235
fan3_input:0
fan3_label:System Fan #1
fan3_max:0
fan3_min:0
fan4_input:0
fan4_label:System Fan #2
fan4_max:0
fan4_min:0
fan5_input:0
fan5_label:System Fan #3
fan5_max:0
fan5_min:0
fan6_input:0
fan6_label:System Fan #4
fan6_max:0
fan6_min:0
fan7_input:0
fan7_label:System Fan #5
fan7_max:0
fan7_min:0
fan8_input:0
fan8_label:System Fan #6
fan8_max:0
fan8_min:0
fan9_input:0
fan9_label:System Fan #7
fan9_max:0
fan9_min:0
in0_input:12000
in0_label:+12V
in0_max:12024
in0_min:12000
in10_input:1526
in10_label:Voltage #2
in10_max:1526
in10_min:1526
in11_input:3280
in11_label:AVCC3
in11_max:3280
in11_min:3276
in12_input:3328
in12_label:AVSB
in12_max:3336
in12_min:3328
in13_input:2044
in13_label:VBat
in13_max:2044
in13_min:2044
in1_input:5030
in1_label:+5V
in1_max:5030
in1_min:5030
in2_input:3332
in2_label:+3.3V
in2_max:3336
in2_min:3332
in3_input:1302
in3_label:CPU Soc
in3_max:1304
in3_min:1302
in4_input:1272
in4_label:CPU Vcore
in4_max:1308
in4_min:1262
in5_input:3332
in5_label:CPU 1P8
in5_max:3332
in5_min:3332
in6_input:3332
in6_label:CPU VDDP
in6_max:3332
in6_min:3332
in7_input:1376
in7_label:DRAM
in7_max:1376
in7_min:1376
in8_input:2038
in8_label:Chipset
in8_max:2038
in8_min:2038
in9_input:454
in9_label:CPU SA
in9_max:454
in9_min:444
name:nct6687
power/control:auto
power/runtime_active_time:0
power/runtime_status:unsupported
power/runtime_suspended_time:0
pwm10:0
pwm10_enable:0
pwm11:0
pwm11_enable:0
pwm12:0
pwm12_enable:0
pwm13:99
pwm13_enable:0
pwm14:0
pwm1:42
pwm14_enable:0
pwm15:0
pwm15_enable:0
pwm16:0
pwm16_enable:0
pwm1_enable:99
pwm2:54
pwm2_enable:99
pwm3:0
pwm3_enable:99
pwm4:153
pwm4_enable:99
pwm5:0
pwm5_enable:99
pwm6:0
pwm6_enable:99
pwm7:0
pwm7_enable:99
pwm8:0
pwm8_enable:99
pwm9:99
pwm9_enable:0
temp1_input:51000
temp1_label:CPU
temp1_max:59000
temp1_min:47000
temp2_input:52500
temp2_label:System
temp2_max:53000
temp2_min:52500
temp3_input:52500
temp3_label:VRM MOS
temp3_max:52500
temp3_min:52000
temp4_input:53500
temp4_label:PCH
temp4_max:53500
temp4_min:53000
temp5_input:0
temp5_label:CPU Socket
temp5_max:0
temp5_min:0
temp6_input:53000
temp6_label:PCIe x1
temp6_max:53000
temp6_min:52500
temp7_input:216000
temp7_label:M2_1
temp7_max:216000
temp7_min:216000

@Fred78290
Copy link
Owner

@SCjona

Could try by changing in file nct6687d.c:1665

#define NCT6687_REG_PWM(x) ((x) < 8 ? (0x160 + (x)) : (0xE00 + (x)))

inplace of

#define NCT6687_REG_PWM(x) (0x160 + (x))

@SCjona
Copy link

SCjona commented Feb 12, 2025

@Fred78290 that change seems to help, but writing to the pwm_enable values still has no effect. also the fan number and pwm number probably isn't a 1:1 match (i assume those with a pwm value are valid fans in my system as there are 8 non zero values and 8 fan headers on my mainboard)

PWM values
pwm1:41
pwm10:184
pwm10_enable:99
pwm11:184
pwm11_enable:99
pwm12:184
pwm12_enable:99
pwm13:184
pwm13_enable:99
pwm14:184
pwm14_enable:99
pwm15:0
pwm15_enable:99
pwm16:0
pwm16_enable:99
pwm1_enable:99
pwm2:49
pwm2_enable:99
pwm3:0
pwm3_enable:99
pwm4:153
pwm4_enable:99
pwm5:0
pwm5_enable:99
pwm6:0
pwm6_enable:99
pwm7:0
pwm7_enable:99
pwm8:0
pwm8_enable:99
pwm9:0
pwm9_enable:99

@demomanca
Copy link

PWM control does not seem to work however for the system fans. it does work for fan 1 and 2 (cpu fan and pump). for the system fans I get cat pwm15_enabled => 0, writing to it has no effect. I also tried changing the NCT6687_NUM_REG_PWM constant to 16, but that did not help.

Yeah, we haven't worked out the PWM control signal points for those fans yet. MSI and Nuvoton won't tell us where the register is. :(

@sgoth
Copy link

sgoth commented Feb 15, 2025

System Fan #14 is sys_fan_1 header on the mainboard

Can confirm that working for MSI B850 Tomahawk too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants