IPMI fan speed control on ASRock Rack EP2C602-4L/D16 / Megarac SP

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

e97

Active Member
Jun 3, 2015
323
193
43
Other ASRock Rack motherboards can change the fan speed via ipmi raw commands:

Code:
ipmitool raw ...
see Fan speed control on C2750D4I/C2550D4I Asrock boards

The option to set the fan speed 10% - 100%, in 10% increments is available in the BIOS, so I'm thinking it can be set via IPMI for the ASRock Rack EP2C602-4L/D16 .

If the ipmi raw command is found, then its possible to set the fan speed based on a temperature sensor reading via script.

I've contacted ASRock Rack support and they are responsive, waiting to hear back from the relevant department / BIOS engineers.

In the meantime, does anyone know how to find dump ipmi raw values?

If thats possible, changing the fan speed values in the BIOS and matching them up to values in the IPMI dump will make this straightforward. Not to mention this is generic method capable of providing a similar solution on any IPMI capable motherboard with PWM fan control.
 

e97

Active Member
Jun 3, 2015
323
193
43
ASRock Rack support got back to me with a custom BMC firmware which solved my spurious CPU temp sensor (would hit 101 F about 2x and hour trigger an alert and fan speed increase) but had some other issues, including ipmi losing the 2nd CPU_AP1 temp sensor, although appears in OS.

Luckily, I found this: Fan Speed Control Trouble on Asrock E3C226D2I which solves the problem of setting the fan speeds.


To get the current setting of all fans:

Code:
$ ipmitool raw 0x3a 0x02

RAW REQ (channel=0x0 netfn=0x3a lun=0x0 cmd=0x2 data_len=0)
RAW RSP (6 bytes)
 01 64 3c 3c 3c 3c

$ ipmitool raw 0x3a 0x12

RAW REQ (channel=0x0 netfn=0x3a lun=0x0 cmd=0x12 data_len=0)
RAW RSP (4 bytes)
 01 3c 3c 3c

To set the fan speed:

Code:
ipmitool raw 0x3a 0x01 CPU_1_MANUAL CPU_1 REAR_1 FRONT_1 FRONT_2 UNKNOWN
ipmitool raw 0x3a 0x11 CPU_2_MANUAL CPU_2 UNKNOWN UNKNOWN
Auto speed can only be set for the CPU_1 and CPU_2 by setting CPU_#_MANUAL to 0
in which case the CPU_1 value is ignored. To set manual mode, set to 1. Same as the BIOS options.


PWM Value: 0x00 -> smart fan mode (only for CPU fans)

0x01 - 0x64 -> manual fan mode(1%-100%)


0x00 is off / minimal

ex: So for 30% speed on all fans and CPU_1 to auto speed:

Code:
ipmitool raw 0x3a 0x01 0 1e 1e 1e 1e 1e


CPU_2 can be controlled in the same way through another command, 0x3a 0x11 , which also controls two additional fans:

Code:
ipmitool raw 0x3a 0x11 0 1e 1e 1e
Theres also an IPMI raw command to set the CPU temperature and fan speed set points but I havent tested it
 
Last edited:
  • Like
Reactions: tinfoil3d

dreamsin

Active Member
Oct 31, 2018
137
77
28
I just did some testing, so:

Code:
Ipmitool raw 0x3a 0x11 CPU_2_OVERRIDE CPU_2 REAR_2 FRONT_4

ipmitool raw 0x3a 0x01 CPU_1_OVERRIDE CPU_1 REAR_1 FRONT_1 FRONT_2 FRONT_3
is the mapping for all of the fans.
 
  • Like
Reactions: DaveInTexas and e97