Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PLUGIN] IPMI for 6.11+

Featured Replies

  • Author
46 minutes ago, spl147 said:

i like the HDD icon, any chance to expand this? cpu icon for cpu temp, a fan instead of the rpm gauge for fan speed?

 

the ability to label the sensors would also be great

Fan should be easy, Temps may be more of an issue or now to work out type.

 

Can you provide some examples of types of labels?

  • 2 weeks later...
  • Replies 783
  • Views 91.1k
  • Created
  • Last Reply

Top Posters In This Topic

Most Popular Posts

  • I have released 2023.12.02, If you have tested the Dev release you may need to update the Fans section as I have changed name to FAN123456 for All for Dell systems   - Add FAN Control suppor

  • Yes on my to-do list now 7.2 is out. But am also working on next.

  • garrett hamonic
    garrett hamonic

    I have been using IPMI tools for quite some time and for some reason it stopped working but wont allow me to enter new username or password. How do I go about this?

Posted Images

Are we able to edit the title of the dashboard from 'IPMI' to something a bit more descriptive i.e. 'Server Name' ?

I use the IPMI plugin to monitor a remote IPMI server so would be good to either change the title or add a description that includes the remote IPMI IP or can be edited to include whatever we want.

image.png.094befcd93f1efcf04cf4dbede1a7fff.png

  • 2 weeks later...

I have a problem. Unfortunately, only 4 out of 8 fans can be controlled. See the picture. Can someone help me? I'm pretty new to this.

With this script, I can control all fans, but it's unfortunately inconvenient.

 

 

#!/bin/bash
#arrayStarted=true
#clearLog=true
#noParity=false

# SuperMicro IPMI Auto(-ish) Fan Control
#
# This script checks current CPU package temps and drive temps, then updates 
# fan duty cycles based on adjustable thresholds. It was designed for Unraid,
# but should be adaptable to your linux flavor of choice with some knowhow
# 
# This requires "ipmitool" to be installed on your system
# Unraid users can install this through the "NerdPack GUI" plugin
#
# It is HIGHLY recommended to set this script to run on a cron schedule
# to be most effective (e.g. "*/5 * * * *" for every 5 minutes)
# Choose "Custom" scheduling in User Scripts to set a cron schedule
#
####################
# VERY IMPORTANT: SuperMicro boards -REQUIRE- the fan mode be set to "Full Speed Mode"
# for ipmitool to be able to control fan speeds. It is therefore recommended to use the 
# companion script I've included in this repository (ipmi_fans_startup.sh) to force this 
# mode on startup. If you try to put the required command at the beginning of this script, 
# then your fans will ramp to max speed for a second every single time this script runs.
# That will cause a bunch of annoying sound level changes and prematurely wear out fans.
# You can use "User Scripts" to run the companion script 'At Startup of Array'
####################

##### HOW TO CONFIGURE FOR YOUR SYSTEM
#
# Guide to navigate (line prefixes):
#
# ##### - Section header, documentation/explanation
# ###   - Variable to configure will be below
# ##    - Example configuration line(s)
#


##### TEMPERATURE THRESHOLDS
#
# These are the thresholds for when fan speed should change (in degrees Celsius)
# CPU Thresholds will change both fan zones. Drive thresholds will only change the
# peripheral fan zone, and ONLY if at a higher threshold than the CPU threshold.
#
### CPU TEMP THRESHOLDS
temp_thresh_cpu_hot1=65
temp_thresh_cpu_hot2=70
temp_thresh_cpu_hot3=75
temp_thresh_cpu_crit=80
#
### DRIVE TEMP THRESHOLDS
temp_thresh_drive_hot1=45
temp_thresh_drive_hot2=48
temp_thresh_drive_hot3=51
temp_thresh_drive_crit=55


##### FAN DUTY CYCLES
#
# Fan Zones on SuperMicro boards are based on the Motherboard's fan header labels
# The CPU Fan Zone (FAN1, FAN2, etc.) and Peripheral Fan Zone (FANA, FANB, etc.).
# Duty cycles are declared per zone so you can tune them for different noise levels.
# BOTH zones will get set every time this script is run.
#
# SuperMicro IPMI fan duty cycles are set with a value between '0x00'-'0x64'
## EXAMPLES: 0x00 = 0% duty cycle, 0x32 = 50%, 0x64 = 100%
# NOTE: 'cool' cycles are for when temperatures are below 'hot1' thresholds
#
### CPU FAN ZONE DUTY CYCLES 
fan_cpu_zone_cool='0x04'
fan_cpu_zone_hot1='0x08'
fan_cpu_zone_hot2='0x16'
fan_cpu_zone_hot3='0x20'
fan_cpu_zone_crit='0x28'
#
### PERIPHERAL FAN ZONE DUTY CYCLES 
fan_peri_zone_cool='0x04'
fan_peri_zone_hot1='0x08'
fan_peri_zone_hot2='0x16'
fan_peri_zone_hot3='0x20'
fan_peri_zone_crit='0x28'


##### DRIVES SELECTION
# 
# This will pull in all of your drives (excluding Unassigned Devices)
# It will NOT spin up drives that are spun down.
# 
# The script only supports a single set of tempoerature thresholds for all drives, so
# I personally exclude my NVME cache drive because it always runs hotter then standard 
# HDDs, but never gets dangerously hot for NVME.
#
# NOTE: If you are not using Unraid, you will need to completely rewrite how this script 
# grabs drive temps. Unraid already stores these values within an .ini file for the web 
# interface to pull, and that is where I am parsing from to avoid spinning up the drives.
#
### DRIVES TO IGNORE
## example: list_drives_ignored=("disk1" "parity" "parity2" "flash")
## to include all drives, just set this line to: list_drives_ignored=()
list_drives_ignored=("flash" "cache_nvme")


##### CPU PACKAGE TEMPERATURE SENSORS 
#
# I'm assuming the stock configuration will work with any SuperMicro system with up to 4 CPU 
# sockets (I have a 2-CPU Intel board myself). However, I'm providing the steps to modify the 
# sensor variables just in case, especially since I only have one system to test on.
#
# Open a console and run "sensors -j" and inspect the JSON output. 
# You need to find each CPU's JSON name (i.e. "coretemp-isa-0000") 
#    -AND- it's corresponding Package temp name (i.e. "Package id 0")
#    and replace them in the cpu#temp variable(s) below
#
# To add MORE than 4 CPU sensors, you must add additional cpu#temp variables below 
#    and also add the new variables into the cputemps array below the list
#
## example: cpu0temp=$(sensors -j | jq '. | {temp1_input: ."coretemp-isa-0000"."Package id 0".temp1_input}' | awk 'match($0,/\"temp1_input\": ([0-9]+)/,a){print a[1]}')
cpu0temp=$(sensors -j | jq '. | {temp1_input: ."coretemp-isa-0000"."Package id 0".temp1_input}' | awk 'match($0,/"temp1_input": ([0-9]+)/,a){print a[1]}')
cpu1temp=$(sensors -j | jq '. | {temp1_input: ."coretemp-isa-0001"."Package id 1".temp1_input}' | awk 'match($0,/"temp1_input": ([0-9]+)/,a){print a[1]}')
cpu2temp=$(sensors -j | jq '. | {temp1_input: ."coretemp-isa-0002"."Package id 2".temp1_input}' | awk 'match($0,/"temp1_input": ([0-9]+)/,a){print a[1]}')
cpu3temp=$(sensors -j | jq '. | {temp1_input: ."coretemp-isa-0003"."Package id 3".temp1_input}' | awk 'match($0,/"temp1_input": ([0-9]+)/,a){print a[1]}')
#
cputemps=($cpu0temp $cpu1temp $cpu2temp $cpu3temp)


#####################################################################
###  YOU DO NOT NEED TO MODIFY BELOW THIS IF YOU ARE USING UNRAID ###
#####################################################################
get_max_number() {
    printf "%s\n" "$@" | sort -gr | head -n1
}

# Gets the maximum CPU package temp
echo "CPU temps found: " ${cputemps[@]}
maxcputemp="$(get_max_number ${cputemps[@]})"
echo "Max CPU Package temp determined: " $maxcputemp

# Get CPU temperature threshold
if [[ $maxcputemp -ge $temp_thresh_cpu_hot1 ]]
then
  if [[ $maxcputemp -ge $temp_thresh_cpu_hot2 ]]
  then
    if [[ $maxcputemp -ge $temp_thresh_cpu_hot3 ]]
    then
      if [[ $maxcputemp -ge $temp_thresh_cpu_crit ]]
      then
        echo "ABOVE CRITICAL CPU TEMPERATURE THRESHOLD: " $temp_thresh_cpu_crit
        found_cpu_threshold=4
      else
        echo "Above HOT3 CPU temperature threshold: " $temp_thresh_cpu_hot3
        found_cpu_threshold=3
      fi
    else
      echo "Above HOT2 CPU temperature threshold: " $temp_thresh_cpu_hot2
      found_cpu_threshold=2
    fi
  else
    echo "Above HOT1 CPU temperature threshold: " $temp_thresh_cpu_hot1
    found_cpu_threshold=1
  fi
else
  echo "All CPUs are below " $temp_thresh_cpu_hot1 " degree HOT1 temperature threshold."
  found_cpu_threshold=0
fi

# Gets list of disks (excluding list_drives_ignored) and their temperatures
# This parsing of the ini file is a modified version of a script 
# posted by user Joseph Trice-Rolph on the Unraid forums
declare -a list_drive_names
while IFS='= ' read var val
do
  if [[ $var == \[*] ]]
  then
    section=${var:2:-2}
	#echo ${section}
	if [[ ! " ${list_drives_ignored[@]} " =~ " ${section} " ]]; then
      list_drive_names+=($section)
      eval declare -A ${section}_data
	fi
  elif [[ $val ]]
  then
    if [[ $var == "temp" ]]
    then
      eval ${section}_data[temperature]=$val
    fi 
    eval ${section}_data[$var]=$val
  fi
done < /var/local/emhttp/disks.ini
echo "Found the following potential drives: " ${list_drive_names[*]}
echo "NOTE: It is normal for this to show the max number of array disks Unraid will support. Please do not open an issue for this."
# Checks drive temperatures
for drive in "${list_drive_names[@]}"
do
  checkedtemp=0
  temp=${drive}_data[temperature]
  if [[ ${!temp} =~ ^[0-9]+$ ]]
  then
    checkedtemp=${!temp}
  else
    checkedtemp="spundown or not present"
  fi
  # If you want to see the output for each drive, you can uncommon the next line
  #echo $drive - temperature = $checkedtemp
  if ! [[ $checkedtemp == 0 ]] | [[ $checkedtemp == "spundown or not present" ]]
  then
    list_drives_temps+=($checkedtemp)
  fi
done
echo "Active drive temps found: " ${list_drives_temps[*]}
maxdisktemp="$(get_max_number ${list_drives_temps[@]})"
echo "Max drive temp determined: " $maxdisktemp

# Get disk temperature threshold
if [[ $maxdisktemp -ge $temp_thresh_drive_hot1 ]]
then
  if [[ $maxdisktemp -ge $temp_thresh_drive_hot2 ]]
  then
    if [[ $maxdisktemp -ge $temp_thresh_drive_hot3 ]]
    then
      if [[ $maxdisktemp -ge $temp_thresh_drive_crit ]]
      then
        echo "ABOVE CRITICAL DISK TEMPERATURE THRESHOLD: " $temp_thresh_drive_crit
        found_disk_threshold=4
      else
        echo "Above HOT3 disk temperature threshold: " $temp_thresh_drive_hot3
        found_disk_threshold=3
      fi
    else
      echo "Above HOT2 disk temperature threshold: " $temp_thresh_drive_hot2
      found_disk_threshold=2
    fi
  else
    echo "Above HOT1 disk temperature threshold: " $temp_thresh_drive_hot1
    found_disk_threshold=1
  fi
else
  echo "All disks are all below " $temp_thresh_drive_hot1 " degree HOT1 temperature threshold."
  found_disk_threshold=0
fi

# Determine the fan speeds to set
# CPU zone speed is always determined by CPU threshold
new_cpu_fan_speed=$found_cpu_threshold
# Peripheral zone gets set to the greater of the thresholds found
new_peri_fan_speed="$(get_max_number $found_cpu_threshold $found_disk_threshold)"

# Apply the fan speeds
if [[ $new_cpu_fan_speed == 4 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x00 $fan_cpu_zone_crit; fi
if [[ $new_cpu_fan_speed == 3 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x00 $fan_cpu_zone_hot3; fi
if [[ $new_cpu_fan_speed == 2 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x00 $fan_cpu_zone_hot2; fi
if [[ $new_cpu_fan_speed == 1 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x00 $fan_cpu_zone_hot1; fi
if [[ $new_cpu_fan_speed == 0 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x00 $fan_cpu_zone_cool; fi
sleep 1
if [[ $new_peri_fan_speed == 4 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x01 $fan_peri_zone_crit; fi
if [[ $new_peri_fan_speed == 3 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x01 $fan_peri_zone_hot3; fi
if [[ $new_peri_fan_speed == 2 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x01 $fan_peri_zone_hot2; fi
if [[ $new_peri_fan_speed == 1 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x01 $fan_peri_zone_hot1; fi
if [[ $new_peri_fan_speed == 0 ]]; then ipmitool raw 0x30 0x70 0x66 0x01 0x01 $fan_peri_zone_cool; fi

 

Screenshot 2025-03-08 125638.png

Screenshot 2025-03-08 131511.png

Screenshot 2025-03-08 131629.png

Screenshot 2025-03-08 131705.png

Screenshot 2025-03-08 131823.png

Edited by Denis06061986

Not sure what changed in thelasy week or so but I'm hacing to stop and start the fsn controller maybe 3-5 times a day to get my fans to stop spinning at max speed. 

 

Nothing in the ipmifan logs or in the syslogs. I thought it was my BMC failing but I've run the BIOS reset several times and it always restarts fine. 

1 hour ago, Denis06061986 said:

I have a problem. Unfortunately, only 4 out of 8 fans can be controlled. See the picture. Can someone help me? I'm pretty new to this.

Screenshot 2025-03-08 131705.png

 

from this pic, you have not setup fan settings, so ipmi has no idea how or what to control!

 

also this has been covered multiple times. only the first 4 fans are controlled. use splitters

Edited by spl147

1 hour ago, spl147 said:

from this pic, you have not setup fan settings, so ipmi has no idea how or what to control!

 

also this has been covered multiple times. only the first 4 fans are controlled. use splitters

what do you mean by splitter?
I can't make any further settings

4 minutes ago, Denis06061986 said:

what do you mean by splitter?
I can't make any further settings

fan splitter (run multiple fans off 1 header)

 

these settings:

 

 

Screenshot 2025-03-08 at 9.02.44 AM.png

14 minutes ago, spl147 said:

fan splitter (run multiple fans off 1 header)

 

these settings:

 

 

Screenshot 2025-03-08 at 9.02.44 AM.png

Unfortunately I don't have the setting under fan
which unraid version do you have?

1 minute ago, Denis06061986 said:

Unfortunately I don't have the setting under fan
which unraid version do you have?

7.0.1

1 minute ago, spl147 said:

7.0.1

ok with the unraid version I couldn't control anything from the fan, maybe it's related to my board
Supermicro X10DRU-i+ Gen:10

in the settings tab you have network connections set to no correct?

 

2 minutes ago, spl147 said:

in the settings tab you have network connections set to no correct?

 

yes cannot be changed either

1 minute ago, Denis06061986 said:

ok with the unraid version I couldn't control anything from the fan, maybe it's related to my board
Supermicro X10DRU-i+ Gen:10

 

Just now, Denis06061986 said:

yes cannot be changed either

stop fan control to make changes.

31 minutes ago, spl147 said:

 

stop fan control to make changes.

I have but unfortunately I have no access to the IPMI because I bought the server used

Edited by Denis06061986

20 minutes ago, Denis06061986 said:

I have but unfortunately I have no access to the IPMI because I bought the server used

WHAT? what does that have to do with it? you mean the bios? stop the ipmi plugin to make changes to the plugin.

 

you my friend need to do some reading!

3 hours ago, spl147 said:

WHAT? what does that have to do with it? you mean the bios? stop the ipmi plugin to make changes to the plugin.

 

you my friend need to do some reading!

sorry my English isn't exactly the best
I've just managed to get my IBMI access
I then entered the data and now it seems to be working

Screenshot 2025-03-08 212300.png

anyway to control fans and have them adjust based on CPU temp on Dell?  

15 hours ago, antihero412 said:

anyway to control fans and have them adjust based on CPU temp on Dell?  

yea select the cpu as the temp sensor

Hey there,
Unraid 7.0.1 - on a Gigabyte MC12-LE0, I can't seem to make the Fan Control tab to show up in the settings, neither with Network Connection setting disabled or enabled.
Sensors under Display Settings show up as expected and I can set them up to be displayed in the footer.

image.thumb.png.312b545469887ccfb7f42e8994d20faf.png
 

What am I missing?

1 hour ago, icezolation said:

Hey there,
Unraid 7.0.1 - on a Gigabyte MC12-LE0, I can't seem to make the Fan Control tab to show up in the settings, neither with Network Connection setting disabled or enabled.
Sensors under Display Settings show up as expected and I can set them up to be displayed in the footer.

image.thumb.png.312b545469887ccfb7f42e8994d20faf.png
 

What am I missing?

Your board is not supported

First time I added power to the footer and it looks like the font is different?

Unraid 7.

 

image.thumb.png.d90264251f91f6667ecc360c33d31bed.png

  • 2 weeks later...

Hi, 

 

I have an Asrock RomeD8-2T. 

 

I have the IMPI tool setup so that I can see my fans and all my sensors etc, through the IPMI, so when I go to tools the RPM of the fans appears.  

 

I have followed the instructions in an earlier post which provided adjusted scripts to provide access to the fan control on my board.  That user had the same bios and BMC versions.  

 

After a bit more investigation it seems that the current script when i reinstall is the same, so that does not appear to be the issue. 

 

I am however unable to control the fans, and any time i attempt to configure it just fails.  I am able to manually set the fans in the Asrock controller, so the IMPI is able to control the fans. 

 

Any idea on what I might be able to do? 

Edited by Nethwin

Thanks for updating this! When I was first setting up my server I don't think I knew about the original plugin I was using a docker container app and I modified it to take in temp readings from my Nvidia gpu using nvidia-smi. Do you think that can be done with this?

  • Author
2 hours ago, MooseCadets said:

Thanks for updating this! When I was first setting up my server I don't think I knew about the original plugin I was using a docker container app and I modified it to take in temp readings from my Nvidia gpu using nvidia-smi. Do you think that can be done with this?

Just to show in the list of sensors or something else?

  • Author
23 hours ago, Nethwin said:

Hi, 

 

I have an Asrock RomeD8-2T. 

 

I have the IMPI tool setup so that I can see my fans and all my sensors etc, through the IPMI, so when I go to tools the RPM of the fans appears.  

 

I have followed the instructions in an earlier post which provided adjusted scripts to provide access to the fan control on my board.  That user had the same bios and BMC versions.  

 

After a bit more investigation it seems that the current script when i reinstall is the same, so that does not appear to be the issue. 

 

I am however unable to control the fans, and any time i attempt to configure it just fails.  I am able to manually set the fans in the Asrock controller, so the IMPI is able to control the fans. 

 

Any idea on what I might be able to do? 

For Asrock you need to create the board file using ipmi2json. I don't have Asrock MBs so not sure if there are other steps to take. Maybe others can provide guidance. 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.