Supermicro X9 fan controll

Notice: Page may contain affiliate links for which we may earn a small commission through services like Amazon Affiliates or Skimlinks.

nekocentral

New Member
May 18, 2021
13
2
3
Good day all,

I recently got an Supermicro server with an X9DRW-3TF+ mainboard I'm trying to get power over the fan control but the Nuvoton WPCM450 is not accepting any raw fan control commands except setting thresholds, and the profile, when i directly try to control it i get the following error Unable to send RAW command (channel=0x0 netfn=0x30 lun=0x0 cmd=0x91 rsp=0x82): Unknown (0x82)

Does anyone have some tips?
 

Rain

Active Member
May 13, 2013
276
124
43
Supermicro Boards can be weird & picky when it comes to fan control. Before trying to control the speed, set the fans to "Full Speed" in either the BIOS or IPMI. Otherwise, the raw commands won't do anything in my experience.

Assuming you're on Linux, I've also had great luck controlling fans from the hwmon sysfs interface:

Code:
# ls /sys/class/hwmon/hwmon2
device      fan5_input  in11_input  in16_input  in4_input  in9_input    pwm2         pwm4_enable  uevent
fan1_input  fan6_input  in12_input  in1_input   in5_input  name         pwm2_enable  subsystem
fan2_input  fan7_input  in13_input  in20_input  in6_input  power        pwm3         temp1_input
fan3_input  fan8_input  in14_input  in2_input   in7_input  pwm1         pwm3_enable  temp2_input
fan4_input  in10_input  in15_input  in3_input   in8_input  pwm1_enable  pwm4         temp3_input
# echo 1 > /sys/class/hwmon/hwmon2/pwm1_enable
# echo 128 > /sys/class/hwmon/hwmon2/pwm1
Check all available hwmon# directories in /sys/class/hwmon. The value you write to pwm# is from 0 (0%) to 255 (100%).
 

nekocentral

New Member
May 18, 2021
13
2
3
Supermicro Boards can be weird & picky when it comes to fan control. Before trying to control the speed, set the fans to "Full Speed" in either the BIOS or IPMI. Otherwise, the raw commands won't do anything in my experience.

Assuming you're on Linux, I've also had great luck controlling fans from the hwmon sysfs interface:

Code:
# ls /sys/class/hwmon/hwmon2
device      fan5_input  in11_input  in16_input  in4_input  in9_input    pwm2         pwm4_enable  uevent
fan1_input  fan6_input  in12_input  in1_input   in5_input  name         pwm2_enable  subsystem
fan2_input  fan7_input  in13_input  in20_input  in6_input  power        pwm3         temp1_input
fan3_input  fan8_input  in14_input  in2_input   in7_input  pwm1         pwm3_enable  temp2_input
fan4_input  in10_input  in15_input  in3_input   in8_input  pwm1_enable  pwm4         temp3_input
# echo 1 > /sys/class/hwmon/hwmon2/pwm1_enable
# echo 128 > /sys/class/hwmon/hwmon2/pwm1
Check all available hwmon# directories in /sys/class/hwmon. The value you write to pwm# is from 0 (0%) to 255 (100%).
Thank you, I will try this tomorrow as it's almost 12am, I have set them to full speed using ipmi tool and double checked in the ipmi but it just refuses all zone commands so I will try this tomorrow, I'm also replacing the fans on Thursday So that might also fix it eneugh for me.
 

nekocentral

New Member
May 18, 2021
13
2
3
Supermicro Boards can be weird & picky when it comes to fan control. Before trying to control the speed, set the fans to "Full Speed" in either the BIOS or IPMI. Otherwise, the raw commands won't do anything in my experience.

Assuming you're on Linux, I've also had great luck controlling fans from the hwmon sysfs interface:

Code:
# ls /sys/class/hwmon/hwmon2
device      fan5_input  in11_input  in16_input  in4_input  in9_input    pwm2         pwm4_enable  uevent
fan1_input  fan6_input  in12_input  in1_input   in5_input  name         pwm2_enable  subsystem
fan2_input  fan7_input  in13_input  in20_input  in6_input  power        pwm3         temp1_input
fan3_input  fan8_input  in14_input  in2_input   in7_input  pwm1         pwm3_enable  temp2_input
fan4_input  in10_input  in15_input  in3_input   in8_input  pwm1_enable  pwm4         temp3_input
# echo 1 > /sys/class/hwmon/hwmon2/pwm1_enable
# echo 128 > /sys/class/hwmon/hwmon2/pwm1
Check all available hwmon# directories in /sys/class/hwmon. The value you write to pwm# is from 0 (0%) to 255 (100%).
Just checked all hwmon interfaces no fan control

Code:
ls /sys/class/hwmon/hwmon*
/sys/class/hwmon/hwmon0:
device  power      temp1_crit   temp1_label  uevent
name    subsystem  temp1_input  temp1_max

/sys/class/hwmon/hwmon1:
device            temp1_max         temp3_input       temp5_crit
name              temp2_crit        temp3_label       temp5_crit_alarm
power             temp2_crit_alarm  temp3_max         temp5_input
subsystem         temp2_input       temp4_crit        temp5_label
temp1_crit        temp2_label       temp4_crit_alarm  temp5_max
temp1_crit_alarm  temp2_max         temp4_input       uevent
temp1_input       temp3_crit        temp4_label
temp1_label       temp3_crit_alarm  temp4_max

/sys/class/hwmon/hwmon2:
device            temp1_max         temp3_input       temp5_crit
name              temp2_crit        temp3_label       temp5_crit_alarm
power             temp2_crit_alarm  temp3_max         temp5_input
subsystem         temp2_input       temp4_crit        temp5_label
temp1_crit        temp2_label       temp4_crit_alarm  temp5_max
temp1_crit_alarm  temp2_max         temp4_input       uevent
temp1_input       temp3_crit        temp4_label
temp1_label       temp3_crit_alarm  temp4_max

/sys/class/hwmon/hwmon3:
device     name                    temp1_auto_point1_temp_hyst  temp1_input
in0_input  power                   temp1_crit                   temp1_max
in0_label  subsystem               temp1_crit_hyst              temp1_max_hyst
in0_max    temp1_auto_point1_pwm   temp1_emergency              uevent
in0_min    temp1_auto_point1_temp  temp1_emergency_hyst         update_interval
 

EffrafaxOfWug

Radioactive Member
Feb 12, 2015
1,394
511
113
Most motherboards using IPMI don't have a separate fan controller to expose the fan settings back to the OS, so fan control won't be exposed through hwmon and only through IPMI itself. Since everyone seems to use a different fan control implementation in their IPMI OS, there's no standardised way to report it unfortunately.

Quick shufti through the name attribute in sysfs should show what hwmon interfaces you have available:
Code:
effrafax@wug:~$ grep . /sys/class/hwmon/hwmon*/name
/sys/class/hwmon/hwmon0/name:k10temp
/sys/class/hwmon/hwmon1/name:nct6779
/sys/class/hwmon/hwmon2/name:drivetemp
/sys/class/hwmon/hwmon3/name:drivetemp
/sys/class/hwmon/hwmon4/name:drivetemp
/sys/class/hwmon/hwmon5/name:drivetemp
/sys/class/hwmon/hwmon6/name:drivetemp
/sys/class/hwmon/hwmon7/name:drivetemp
/sys/class/hwmon/hwmon8/name:drivetemp
 

nekocentral

New Member
May 18, 2021
13
2
3
will try in a moment, what i really think is wierd is that the IPMI commands that are supposed to work with my specific BMC do not work and error out with unknown, everything is already up to date so i don't get what is wrong. but either way tomorrow i'm replacing the fans with different types that are only 25DB max noise but would have liked it if it had better control like my old X8 board.
 

EffrafaxOfWug

Radioactive Member
Feb 12, 2015
1,394
511
113
I can't speak as to why the commands don't work - perhaps this mobo doesn't use the same X9 stanza as everything else?

Do the regular read commands return valid info?
Code:
# show fan mode
ipmitool raw 0x30 0x45 0x00

# show cpu duty cycle
ipmitool raw 0x30 0x70 0x66 0x00 0x00
 

nekocentral

New Member
May 18, 2021
13
2
3
I can't speak as to why the commands don't work - perhaps this mobo doesn't use the same X9 stanza as everything else?

Do the regular read commands return valid info?
Code:
# show fan mode
ipmitool raw 0x30 0x45 0x00

# show cpu duty cycle
ipmitool raw 0x30 0x70 0x66 0x00 0x00


Code:
root@pve:~# ipmitool raw 0x30 0x45 0x00
 02
root@pve:~# ipmitool raw 0x30 0x70 0x66 0x00 0x00
Unable to send RAW command (channel=0x0 netfn=0x30 lun=0x0 cmd=0x70 rsp=0xcc): Invalid data field in request
 

EffrafaxOfWug

Radioactive Member
Feb 12, 2015
1,394
511
113
Code:
root@pve:~# ipmitool raw 0x30 0x45 0x00
 02
root@pve:~# ipmitool raw 0x30 0x70 0x66 0x00 0x00
Unable to send RAW command (channel=0x0 netfn=0x30 lun=0x0 cmd=0x70 rsp=0xcc): Invalid data field in request
At a guess then, the IPMI on your board supports setting the general fan mode but doesn't support setting duty cycles - unless there's another set of raw values for some X9s I don't know about. It's probably worth a support ticket to SM to verify.
 

Fritz

Well-Known Member
Apr 6, 2015
3,370
1,375
113
69
FWIW, I have a X9DRW-F and it has a different IPMI GUI from any I've ever seen. Maybe they went out of band with this board.

And BTW, the board was super wonky until I updated the BIOS and IPMI firmware.

Screenshot from 2021-05-19 20-35-05.png
 

nekocentral

New Member
May 18, 2021
13
2
3
At a guess then, the IPMI on your board supports setting the general fan mode but doesn't support setting duty cycles - unless there's another set of raw values for some X9s I don't know about. It's probably worth a support ticket to SM to verify.
I guess I have to, I was able to setup the min and max fan speed using the ipmitool so it's really wierd.
 

nekocentral

New Member
May 18, 2021
13
2
3
Update, IPMI and PWM fan control doesn't work so i just swapped fans with once that go max 25DB, best and easiest fix.
 

ziggygt

Member
Jul 23, 2019
62
10
8
I am having the same trouble. I do not understand the "ipmitool raw 0x30 0x70 0x66 0x01 0x00 0x24" command since the error message I get says:
"unable to send RAW command channel=0x00 netfn=0x30 lun=0x0 cmd=0x70 rsp=0xcc
invalid data field in request"

raw <netfn> <cmd> [data]

Network Function Codes:
VAL HEX STRING
==============================================
0 0x00 Chassis
2 0x02 Bridge
4 0x04 SensorEvent
6 0x06 Application
8 0x08 Firmware
10 0x0a Storage
12 0x0c Transport

you can see that my X9DR3-F motherboard does not have a 0x30
Is there a decoder ring for these X9 boards. Where are the raw commands defined? I hope someone else has solved this and willing to share.