Jump to content
dmacias

[Plugin] IPMI for unRAID 6.1+

1348 posts in this topic Last Reply

Recommended Posts

Okay I hacked around the source code of the fan tools all day and got a working version of it for this board
Happy to clean it up and submit a patch to the github page. Will have to wait till this weekend though when I have some time just a few different things required for this board.
I'd appreciate any help. What does this command print out?
dmidecode -qt2|awk -F: '/^\tProduct Name:/ {print $2}'

If it's the board model, id like to add it to an array for future use with similar models. Then I just have to add a model name to the array to compare and implement the necessary raw commands. Unless there's an better way to differentiate this model from other ASRock models. I'm not sure what your hack was. If you just hard-coded a json array with everything. But I'd prefer using the ipmi2json script to build this json array. Reason being that bmc firmware updates sometimes change ipmi fan names and sometimes there's different names between different models even though they use the same ipmi raw commands. If prefer building the json array matching each location in the raw command to each fan it corresponds to. Thanks for any help and for figuring out the ipmi commands.

Share this post


Link to post
11 hours ago, dmacias said:

I'd appreciate any help. What does this command print out?


dmidecode -qt2|awk -F: '/^\tProduct Name:/ {print $2}'
 

If it's the board model, id like to add it to an array for future use with similar models. Then I just have to add a model name to the array to compare and implement the necessary raw commands. Unless there's an better way to differentiate this model from other ASRock models. I'm not sure what your hack was. If you just hard-coded a json array with everything. But I'd prefer using the ipmi2json script to build this json array. Reason being that bmc firmware updates sometimes change ipmi fan names and sometimes there's different names between different models even though they use the same ipmi raw commands. If prefer building the json array matching each location in the raw command to each fan it corresponds to. Thanks for any help and for figuring out the ipmi commands.

FWIW, I was being facetious when I said "hacked" around, was meaning that I dug into the code and figured out a way to do it just not clean yet.

 

This is the result of that command by the way:

 

root@tower:~# dmidecode -qt2|awk -F: '/^\tProduct Name:/ {print $2}'
 X570D4U

 

So, I made the ipmi2json script generate the correct json object and then modified the ipmifan tool as well to run with the correct commands.

There are some caveats and changes to the way this board needs to run.

 

1. Fan needs to be put in "manual" mode before the values will actually work. So thats an extra step that needs to take place. In the below I just put ALL the fans in manual mode.

$manual_cmd = "ipmi-raw 00 3a d8 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 2>&1 >/dev/null;";

2. It uses different hex codes for setting manual and auto commands.

$auto_cmd = "ipmi-raw 00 3a d8 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2>&1 >/dev/null;";

3. The minimum value for all fan values are now 20% which equals 14 in the hex code, for instance, if I were to only want to change the fan value of the first fan to full speed, it would look like this, even if you aren't using the fans they must be set like this:

ipmi-raw 00 3a d6 64 14 14 14 14 14 14 14 14 14 14 14 14 14 14 14

 

So my "hack" was just shoving them in the code to see it all work. Obviously that wouldn't fly with the current ASRock boards and would actually break the implementation of the existing boards. I'm thinking we might need an extra key in the array to indicate some of this stuff, not sure. I'd look to you for what you reckon? First time looking at PHP in like 10 years, so I'm sure you'd do a better job than me. But hopefully thats enough to go on :)

 

Let me know if you need anything else.

 

Some extra commands you might care about too.

 

Get the fan duty for all fans while in manual mode:

$ ipmi-raw 00 3a d7
 24 32 32 14 14 14 14 14 14 14 14 14 14 14 14 14

Get the fan control mode:

$ ipmi-raw 00 3a db
 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01

Clean all fans (reset to defaults):

ipmi-raw 00 3a dc

 

P.S. In bash a semicolon or an ampersand are command terminators, so some of the commands where you do this is gonna give a syntax error:

$cmd   .= "ipmi-raw $raw $full $fanopts 2>&1 >/dev/null &; ";

Just remove the semi-colon after the ampersands and you're good to go 👍

Edited by cakes044
Added some extra ipmi-raw commands that might be useful.

Share this post


Link to post

Hi Guys! i have been fighting with my Supermicro X9DRi-LN4F+ for a couple days now and finally got IPMITool to work after a bios and firmware update. i tried to follow the instructions on the first page here setting my lower thresholds down around 100-200 for my noctua fans and turning the fan mode to full speed on the motherboard to run this pluggin. unfortunately right now the fans still run full speed all the time and if i change the fan mode it goes back to cycling from low rpm to max speed every few seconds. any help would be greatly appreciated. :)

 

i think my main issue might be that i cant get the virtual machine overide to work. it defaults to no and if i change it to yes everything is greyed out and i cant fill it in. then i hit apply and it goes back to "no" on the setting. I'll attach a picture for reference

 

If i could get the fan speed minimum and maximum settings to work in the fan control section that would be my greatest desire. i currently have it set based on cpu temp with max fan speed 80% and min 35%. they are definitely going full speed...

virtual machine overide.JPG

Edited by Kvo1087
new information

Share this post


Link to post
1 hour ago, Kvo1087 said:

Hi Guys! i have been fighting with my Supermicro X9DRi-LN4F+ for a couple days now and finally got IPMITool to work after a bios and firmware update. i tried to follow the instructions on the first page here setting my lower thresholds down around 100-200 for my noctua fans and turning the fan mode to full speed on the motherboard to run this pluggin. unfortunately right now the fans still run full speed all the time and if i change the fan mode it goes back to cycling from low rpm to max speed every few seconds. any help would be greatly appreciated. :)

 

i think my main issue might be that i cant get the virtual machine overide to work. it defaults to no and if i change it to yes everything is greyed out and i cant fill it in. then i hit apply and it goes back to "no" on the setting. I'll attach a picture for reference

 

If i could get the fan speed minimum and maximum settings to work in the fan control section that would be my greatest desire. i currently have it set based on cpu temp with max fan speed 80% and min 35%. they are definitely going full speed...

virtual machine overide.JPG

I have this same motherboard; ...that's curious why everything is grayed out...I had to specify a network connection and have it register "connection successful" before even attempting to do anything else... here's a screenshot of my settings.

 

image.thumb.png.aa9e2afec9d694083082d6a94821c43f.png

Share this post


Link to post

Does anyone else have problems with fan controls only working when in GUI on x10sll-f board? I have linked my FANA speed to HDD temps and for some reason fan speed is being adjusted only if I'm in the web GUI. When I leave the page or close/minimise the window fan speed gets stuck on its last value, as soon as I refresh the page fan speed adjusts itself. Otherwise the plugin works brilliantly, but this one thing ruins everything...

Share this post


Link to post

Hey guys I got the Virtual Machine override turned on and it was able to connect successfully but my fans are still running at full speed all the time. Fan control is on and i have the max and min fan speed % set but it is like the settings are applied to the board at all. am i missing something?

Share this post


Link to post

Hi, I added the FRNT_FAN1 to my ASRock E3C226D2I. Configured that FRNT_FAN1. But I have issues:
- that fan is always marked in red but (Fan is not configured!)

- advanced view cannot be activated anymore on the Fan Settings section of IPMI fan Control page

- FRNT_FAN1 is spinning at 500rpm now - no mater what HDD temp.

noMoreAdvanced.thumb.png.4626113fc49fdd570f86f9ae4e2df510.png

This setup with only REAR_FAN1 and CPU_FAN1 had run ok for many months, but the third FRNT_FAN1.
I read at the start of this thread, that adding a fan requires reconfiguration - so I am not sure that I did as was implied here. 

Any help, op perhaps better "guidance" is more than welcome - as am rather a newbie in this field of expertise.
Kind regards and Thanks in advance..

 

Share this post


Link to post

So, I almost solved it myself:
- went in the bios and put all fans to smart

- reconfigured in IPMI settings within unraid

as a result, this time the "(fan is not configured!)" notification has gone and the FRNT_FAN1 speed got controlled.

 

The last thing not working is the "Advanced View".  I have seen it working before the FRNT_FAN1 was installed.

Kind regards and thanks in advance for pointing me to where I can get that working too.

 

Share this post


Link to post

Quick question from someone who may have installed this blindly 🤦‍♂️. I’m running a SuperMicro machine and after reading the first post I’m now aware there may be fan speed issues. I’m travelling for work right now so I audibly cannot check fan noise to see if the fans are maxed out. What should my fan speeds look like?
 

My three mid-case/backplane fans are running at ~2900 RPM. The two rear fans are both at 2625 RPM. CPU load has been under 10% for the last 20 mins. Before that it had been steady at 40% for a few hours. 
 

As I’m unsure of the fan models and don’t have a RPM point of reference from before installing this plugin, can anyone shed some light on if my fans are at Max?

 

Also, does the fan issue go away if you uninstall the plugin?

Share this post


Link to post

Running this on Unraid 6.9.0-Beta30.


It seems like it's polling the drive temperatures from the drives that i specifically unchecked on the 'Hard Drives to Poll:' settings. I have removed 4 disks from there that are around 34degrees *C. All other drives are around 17*C. But the IPMIplugin sees the HDD temp as 34*C.

Any tips on how to force it to not count those drives temperatures?

Share this post


Link to post
On 11/1/2020 at 4:03 AM, DavisNL said:

Quick question from someone who may have installed this blindly 🤦‍♂️. I’m running a SuperMicro machine and after reading the first post I’m now aware there may be fan speed issues. I’m travelling for work right now so I audibly cannot check fan noise to see if the fans are maxed out. What should my fan speeds look like?
 

My three mid-case/backplane fans are running at ~2900 RPM. The two rear fans are both at 2625 RPM. CPU load has been under 10% for the last 20 mins. Before that it had been steady at 40% for a few hours. 
 

As I’m unsure of the fan models and don’t have a RPM point of reference from before installing this plugin, can anyone shed some light on if my fans are at Max?

 

Also, does the fan issue go away if you uninstall the plugin?

What Supermicro chassis? Should be able to figure out the fan model with just that.

Share this post


Link to post
On 10/28/2020 at 9:49 PM, Leptosoma said:

--SNIP--

Lucky you!
I don't even have the Configure button!
image.thumb.png.a0aac2fd64aea69201194e3c71f28108.png

(Dell Poweredge R720)

Edited by Keexrean

Share this post


Link to post

Hello,

 

I have an ASROCK x470D4U board.

 

I have installed and configured the plugin (sensors etc work), but it appears temperature control doesn't. The raw commands do work, so that's not the issue.

 

board.json:

{
    "ASRock": {
        "raw": "00 3a 01",
        "auto": "00 00 00 00 00 00 00 00",
        "full": "64 64 64 64 64 64 64 64",
        "fans": {
            "FAN1": "01",
            "FAN2": "01",
            "FAN3": "01",
            "FAN4": "01",
            "FAN5": "01",
            "FAN_POS6": "01",
            "FAN_POS7": "01",
            "FAN_POS8": "01"
        }
    }
}

 

I do see this error for fan6 (not attached): Warning: array_key_exists() expects parameter 2 to be array, null given in /usr/local/emhttp/plugins/ipmi/include/ipmi_helpers.php on line 367

 

Edit 1: Above error seems unrelated and can be removed by editing boards.json and renaming "FAN_POS6" to "FAN6"

Edited by markswift
Update

Share this post


Link to post

Okay, upon activating debug it seems the issue is caused by a wrong RAW command being sent?

 

I see: 2020-11-12 19:07:19 ipmi-raw 00 3a 01 00 00 44 44 44 44 00 -h '192.168.1.11' -u 'admin' -p 'xxx' --session-timeout=5000 --retransmission-timeout=1000 2>&1

 

Shouldn't the command include another '00' @dmacias? Would love to get this working, my rack sounds like a jet turbine :D

Edit: reinstalled to test, no luck, debug log below:

Sleep 60 seconds.
Highest temp is 33ºC

DECLARED VARIABLES:
Array
(
    [debug] => 1
    [prog] => ipmifan
    [lockfile] => /var/run/ipmifan.pid
    [log] => /var/log/ipmifan
    [service] => /usr/local/emhttp/plugins/ipmi/scripts/ipmifan
    [usage] => 
Process settings in ipmi plugin fan config.
Control fans based on config values and [options].

Usage: ipmifan [options]

  -a, --auto       set fans to auto
      --full       set fans to full speed
  -q, --quiet      suppress all messages
      --debug      turn on debugging
      --daemon     run in the background
      --help       display this help and exit
      --quit       stop daemon if running
      --version    output version information and exit


    [shortopts] => adfq
    [longopts] => Array
        (
            [0] => auto
            [1] => daemon
            [2] => debug
            [3] => full
            [4] => help
            [5] => quit
            [6] => quiet
            [7] => version
        )

    [args] => Array
        (
            [debug] => 
        )

    [arga] => 
    [argf] => 
    [argq] => 
    [daemon] => 
    [quit] => 
    [raw] => 00 3a 01
    [board_json] => Array
        (
            [ASRock] => Array
                (
                    [raw] => 00 3a 01
                    [auto] => 00 00 00 00 00 00 00 00
                    [full] => 64 64 64 64 64 64 64 64
                    [fans] => Array
                        (
                            [FAN1] => 01
                            [FAN2] => 01
                            [FAN3] => 01
                            [FAN4] => 01
                            [FAN5] => 01
                            [FAN_POS6] => 01
                            [FAN_POS7] => 01
                            [FAN_POS8] => 01
                        )

                )

        )

    [board] => ASRock
    [board_file_status] => 1
    [msg] => Fan:Temp, FAN2(66%):HDD Temp(33°C)
    [MD5] => 6ff1b3c3d1dd1140c6d895d739d64c7f
    [fancfg_file] => /boot/config/plugins/ipmi/fan.cfg
    [hdd_temp] => 33
    [sensors] => Array
        (
            [10] => Array
                (
                    [ID] => 10
                    [Name] => MB Temp
                    [Type] => Temperature
                    [Reading] => 35.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [11] => Array
                (
                    [ID] => 11
                    [Name] => Card side Temp
                    [Type] => Temperature
                    [Reading] => 37.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [12] => Array
                (
                    [ID] => 12
                    [Name] => CPU Temp
                    [Type] => Temperature
                    [Reading] => 43.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [13] => Array
                (
                    [ID] => 13
                    [Name] => DDR4_A2_Temp
                    [Type] => Temperature
                    [Reading] => 39.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [14] => Array
                (
                    [ID] => 14
                    [Name] => DDR4_A1_Temp
                    [Type] => Temperature
                    [Reading] => 40.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [15] => Array
                (
                    [ID] => 15
                    [Name] => DDR4_B2_Temp
                    [Type] => Temperature
                    [Reading] => 40.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [16] => Array
                (
                    [ID] => 16
                    [Name] => DDR4_B1_Temp
                    [Type] => Temperature
                    [Reading] => 40.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [17] => Array
                (
                    [ID] => 17
                    [Name] => FAN1
                    [Type] => Fan
                    [Reading] => 1000.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [18] => Array
                (
                    [ID] => 18
                    [Name] => FAN2
                    [Type] => Fan
                    [Reading] => 600.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [19] => Array
                (
                    [ID] => 19
                    [Name] => FAN3
                    [Type] => Fan
                    [Reading] => 500.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [20] => Array
                (
                    [ID] => 20
                    [Name] => FAN4
                    [Type] => Fan
                    [Reading] => 800.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [21] => Array
                (
                    [ID] => 21
                    [Name] => FAN5
                    [Type] => Fan
                    [Reading] => 1900.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [22] => Array
                (
                    [ID] => 22
                    [Name] => FAN6
                    [Type] => Fan
                    [Reading] => N/A
                    [Units] => RPM
                    [Event] => N/A
                )

            [99] => Array
                (
                    [ID] => 99
                    [Name] => HDD Temperature
                    [Type] => Temperature
                    [Reading] =>  33
                    [Units] => C
                    [Event] => Ok
                )

        )

    [ipmipoll] => 6
    [fanpoll] => 6
    [hddpoll] => 6
    [fan_count] => 8
    [hdd_count] => 60
    [curent_hex] => 
    [current_hex2] => 
    [i] => 1
    [board0] => ASRock
    [fans] => Array
        (
            [FAN1] => 01
            [FAN2] => 01
            [FAN3] => 01
            [FAN4] => 01
            [FAN5] => 01
            [FAN_POS6] => 01
            [FAN_POS7] => 01
            [FAN_POS8] => 01
        )

    [hex] =>  00 00 40 00 00 00 00 00 00
    [cmd] => 
    [exec] => 
    [value] => 01
    [fan] => FAN_POS8
    [temp] => 
    [fancfg] => Array
        (
            [FANCONTROL] => disable
            [FANPOLL] => 6
            [FANIP] => 192.168.1.11
            [HDDPOLL] => 6
            [HDDIGNORE] => 
            [HARDDRIVES] => enable
            [FAN_FAN1] => 17
            [TEMP_FAN1] => 0
            [FAN_FAN2] => 18
            [TEMP_FAN2] => 99
            [TEMPHI_FAN2] => 40
            [TEMPLO_FAN2] => 20
            [FANMAX_FAN2] => 64
            [FANMIN_FAN2] => 1
            [FAN_FAN3] => 19
            [TEMP_FAN3] => 0
            [FAN_FAN4] => 20
            [TEMP_FAN4] => 0
            [FAN_FAN5] => 21
            [TEMP_FAN5] => 0
            [FAN_FAN6] => 22
            [TEMP_FAN6] => 0
        )

    [templo] => 20
    [temphi] => 40
    [fanmin] => 1
    [fanmax] => 64
    [range] => 64
    [reading] => 33
    [name] => HDD Temperature
    [pct] => 66
    [pwm] => 00
    [cmd_count] => 0
    [cmd_str] => ipmi-raw 00 3a 01 00 00 40 00 00 00 00 00 00 -h '192.168.1.11' -u 'admin' -p 'admin' --session-timeout=5000 --retransmission-timeout=1000 2>&1
    [fanopts] => -h '192.168.1.11' -u 'admin' -p 'admin' --session-timeout=5000 --retransmission-timeout=1000
    [current_hex] =>  00 00 40 00 00 00 00 00 00
    [time1] => 1605221273
    [MD5_new] => 6ff1b3c3d1dd1140c6d895d739d64c7f
    [plg_path] => /boot/config/plugins/ipmi
    [cfg_file] => /boot/config/plugins/ipmi/ipmi.cfg
    [cfg] => Array
        (
            [IPMISELD] => disable
            [IPMIPOLL] => 180
            [NETWORK] => enable
            [LOCAL] => disable
            [IPADDR] => 192.168.1.11
            [USER] => admin
            [PASSWORD] => YWRtaW4=
            [DISP_SENSOR1] => 0
            [DISP_SENSOR2] => 0
            [LOADCFG] => disable
            [IGNORE] => 
            [DIGNORE] => 
            [DASH] => enable
            [DEVIGNORE] => 
            [DEVS] => enable
            [OVERRIDE] => enable
            [OBOARD] => ASRock
            [OCOUNT] => 0
            [OMODEL] => 9
        )

    [netsvc] => enable
    [ipaddr] => 192.168.1.11
    [user] => admin
    [password] => YWRtaW4=
    [override] => enable
    [oboard] => ASRock
    [omodel] => 9
    [ocount] => 0
    [ignore] => 
    [dignore] => 
    [devignore] => 
    [devs] => enable
    [ipmi] => 
    [netopts] => --always-prefix -h '192.168.1.11' -u 'admin' -p 'admin' --session-timeout=5000 --retransmission-timeout=1000
    [fanctrl] => disable
    [hddignore] => 
    [harddrives] => enable
    [fanip] => 192.168.1.11
    [board_file] => /boot/config/plugins/ipmi/board.json
    [boards] => Array
        (
            [ASRock] => 
            [ASRockRack] => 
            [Dell] => 
            [Supermicro] => 
        )

    [board_status] => 1
)

 

Edited by markswift

Share this post


Link to post
On 11/13/2020 at 3:15 AM, markswift said:

Okay, upon activating debug it seems the issue is caused by a wrong RAW command being sent?

 

I see: 2020-11-12 19:07:19 ipmi-raw 00 3a 01 00 00 44 44 44 44 00 -h '192.168.1.11' -u 'admin' -p 'xxx' --session-timeout=5000 --retransmission-timeout=1000 2>&1

 

Shouldn't the command include another '00' @dmacias? Would love to get this working, my rack sounds like a jet turbine :D

Edit: reinstalled to test, no luck, debug log below:


Sleep 60 seconds.
Highest temp is 33ºC

DECLARED VARIABLES:
Array
(
    [debug] => 1
    [prog] => ipmifan
    [lockfile] => /var/run/ipmifan.pid
    [log] => /var/log/ipmifan
    [service] => /usr/local/emhttp/plugins/ipmi/scripts/ipmifan
    [usage] => 
Process settings in ipmi plugin fan config.
Control fans based on config values and [options].

Usage: ipmifan [options]

  -a, --auto       set fans to auto
      --full       set fans to full speed
  -q, --quiet      suppress all messages
      --debug      turn on debugging
      --daemon     run in the background
      --help       display this help and exit
      --quit       stop daemon if running
      --version    output version information and exit


    [shortopts] => adfq
    [longopts] => Array
        (
            [0] => auto
            [1] => daemon
            [2] => debug
            [3] => full
            [4] => help
            [5] => quit
            [6] => quiet
            [7] => version
        )

    [args] => Array
        (
            [debug] => 
        )

    [arga] => 
    [argf] => 
    [argq] => 
    [daemon] => 
    [quit] => 
    [raw] => 00 3a 01
    [board_json] => Array
        (
            [ASRock] => Array
                (
                    [raw] => 00 3a 01
                    [auto] => 00 00 00 00 00 00 00 00
                    [full] => 64 64 64 64 64 64 64 64
                    [fans] => Array
                        (
                            [FAN1] => 01
                            [FAN2] => 01
                            [FAN3] => 01
                            [FAN4] => 01
                            [FAN5] => 01
                            [FAN_POS6] => 01
                            [FAN_POS7] => 01
                            [FAN_POS8] => 01
                        )

                )

        )

    [board] => ASRock
    [board_file_status] => 1
    [msg] => Fan:Temp, FAN2(66%):HDD Temp(33°C)
    [MD5] => 6ff1b3c3d1dd1140c6d895d739d64c7f
    [fancfg_file] => /boot/config/plugins/ipmi/fan.cfg
    [hdd_temp] => 33
    [sensors] => Array
        (
            [10] => Array
                (
                    [ID] => 10
                    [Name] => MB Temp
                    [Type] => Temperature
                    [Reading] => 35.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [11] => Array
                (
                    [ID] => 11
                    [Name] => Card side Temp
                    [Type] => Temperature
                    [Reading] => 37.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [12] => Array
                (
                    [ID] => 12
                    [Name] => CPU Temp
                    [Type] => Temperature
                    [Reading] => 43.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [13] => Array
                (
                    [ID] => 13
                    [Name] => DDR4_A2_Temp
                    [Type] => Temperature
                    [Reading] => 39.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [14] => Array
                (
                    [ID] => 14
                    [Name] => DDR4_A1_Temp
                    [Type] => Temperature
                    [Reading] => 40.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [15] => Array
                (
                    [ID] => 15
                    [Name] => DDR4_B2_Temp
                    [Type] => Temperature
                    [Reading] => 40.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [16] => Array
                (
                    [ID] => 16
                    [Name] => DDR4_B1_Temp
                    [Type] => Temperature
                    [Reading] => 40.00
                    [Units] => C
                    [Event] => 'OK'
                )

            [17] => Array
                (
                    [ID] => 17
                    [Name] => FAN1
                    [Type] => Fan
                    [Reading] => 1000.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [18] => Array
                (
                    [ID] => 18
                    [Name] => FAN2
                    [Type] => Fan
                    [Reading] => 600.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [19] => Array
                (
                    [ID] => 19
                    [Name] => FAN3
                    [Type] => Fan
                    [Reading] => 500.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [20] => Array
                (
                    [ID] => 20
                    [Name] => FAN4
                    [Type] => Fan
                    [Reading] => 800.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [21] => Array
                (
                    [ID] => 21
                    [Name] => FAN5
                    [Type] => Fan
                    [Reading] => 1900.00
                    [Units] => RPM
                    [Event] => 'OK'
                )

            [22] => Array
                (
                    [ID] => 22
                    [Name] => FAN6
                    [Type] => Fan
                    [Reading] => N/A
                    [Units] => RPM
                    [Event] => N/A
                )

            [99] => Array
                (
                    [ID] => 99
                    [Name] => HDD Temperature
                    [Type] => Temperature
                    [Reading] =>  33
                    [Units] => C
                    [Event] => Ok
                )

        )

    [ipmipoll] => 6
    [fanpoll] => 6
    [hddpoll] => 6
    [fan_count] => 8
    [hdd_count] => 60
    [curent_hex] => 
    [current_hex2] => 
    [i] => 1
    [board0] => ASRock
    [fans] => Array
        (
            [FAN1] => 01
            [FAN2] => 01
            [FAN3] => 01
            [FAN4] => 01
            [FAN5] => 01
            [FAN_POS6] => 01
            [FAN_POS7] => 01
            [FAN_POS8] => 01
        )

    [hex] =>  00 00 40 00 00 00 00 00 00
    [cmd] => 
    [exec] => 
    [value] => 01
    [fan] => FAN_POS8
    [temp] => 
    [fancfg] => Array
        (
            [FANCONTROL] => disable
            [FANPOLL] => 6
            [FANIP] => 192.168.1.11
            [HDDPOLL] => 6
            [HDDIGNORE] => 
            [HARDDRIVES] => enable
            [FAN_FAN1] => 17
            [TEMP_FAN1] => 0
            [FAN_FAN2] => 18
            [TEMP_FAN2] => 99
            [TEMPHI_FAN2] => 40
            [TEMPLO_FAN2] => 20
            [FANMAX_FAN2] => 64
            [FANMIN_FAN2] => 1
            [FAN_FAN3] => 19
            [TEMP_FAN3] => 0
            [FAN_FAN4] => 20
            [TEMP_FAN4] => 0
            [FAN_FAN5] => 21
            [TEMP_FAN5] => 0
            [FAN_FAN6] => 22
            [TEMP_FAN6] => 0
        )

    [templo] => 20
    [temphi] => 40
    [fanmin] => 1
    [fanmax] => 64
    [range] => 64
    [reading] => 33
    [name] => HDD Temperature
    [pct] => 66
    [pwm] => 00
    [cmd_count] => 0
    [cmd_str] => ipmi-raw 00 3a 01 00 00 40 00 00 00 00 00 00 -h '192.168.1.11' -u 'admin' -p 'admin' --session-timeout=5000 --retransmission-timeout=1000 2>&1
    [fanopts] => -h '192.168.1.11' -u 'admin' -p 'admin' --session-timeout=5000 --retransmission-timeout=1000
    [current_hex] =>  00 00 40 00 00 00 00 00 00
    [time1] => 1605221273
    [MD5_new] => 6ff1b3c3d1dd1140c6d895d739d64c7f
    [plg_path] => /boot/config/plugins/ipmi
    [cfg_file] => /boot/config/plugins/ipmi/ipmi.cfg
    [cfg] => Array
        (
            [IPMISELD] => disable
            [IPMIPOLL] => 180
            [NETWORK] => enable
            [LOCAL] => disable
            [IPADDR] => 192.168.1.11
            [USER] => admin
            [PASSWORD] => YWRtaW4=
            [DISP_SENSOR1] => 0
            [DISP_SENSOR2] => 0
            [LOADCFG] => disable
            [IGNORE] => 
            [DIGNORE] => 
            [DASH] => enable
            [DEVIGNORE] => 
            [DEVS] => enable
            [OVERRIDE] => enable
            [OBOARD] => ASRock
            [OCOUNT] => 0
            [OMODEL] => 9
        )

    [netsvc] => enable
    [ipaddr] => 192.168.1.11
    [user] => admin
    [password] => YWRtaW4=
    [override] => enable
    [oboard] => ASRock
    [omodel] => 9
    [ocount] => 0
    [ignore] => 
    [dignore] => 
    [devignore] => 
    [devs] => enable
    [ipmi] => 
    [netopts] => --always-prefix -h '192.168.1.11' -u 'admin' -p 'admin' --session-timeout=5000 --retransmission-timeout=1000
    [fanctrl] => disable
    [hddignore] => 
    [harddrives] => enable
    [fanip] => 192.168.1.11
    [board_file] => /boot/config/plugins/ipmi/board.json
    [boards] => Array
        (
            [ASRock] => 
            [ASRockRack] => 
            [Dell] => 
            [Supermicro] => 
        )

    [board_status] => 1
)

 

check your bios setup,  I believe the fan control setting in bios should be smartfan, I using the same board and plugin works without issue

Share this post


Link to post
6 hours ago, trott said:

check your bios setup,  I believe the fan control setting in bios should be smartfan, I using the same board and plugin works without issue

Hi,

 

I've already checked that - no luck sadly :(

 

I'm wondering if it's related the config / layout of my fans, as it did work briefly when they were attached to other headers. I tried to swap them back, but no luck... Tried a clean install too.

 

Is there a chance you could share your board.json so I can compare it? Thanks in advance.

 

To summarise:

 

Config runs and I hear the fans ramping up, RPM is correct for each.

Running in debug shows an incorrect raw command (unless I'm interpreting it wrongly).

IPMI shows correct percentages, but no fan control happens.

BIOS is set to smart fan, for all fans.

Screenshot 2020-11-14 at 11.24.35.png

Edited by markswift

Share this post


Link to post

Hey guys,

 

I checked through some of the recent pages and enjoy the changes to the dashboard view, but just have a quick question. The IPMI section in the left box keeps moving from the bottom (where I drag it) and resets to the top. None of the other sections move. Is this a known issue or is it something on my end (browser settings, etc)? - I do not have the browser set to clear cookies/site data on exit.

 

Thanks in advance!

Share this post


Link to post

Hi all,

 

Well, following my previous posts (above), I've been trying to get this working for over a week with no luck.

 

I even bought a new fan to populate header_6 to see if that made a difference - it didn't.

 

If anyone has any ideas why it might not be working with my board (but is for others), I'd love some help!

 

It's strange that the configuration ramps up the fans and recognises everythign correctly, but auto / temp control doesn't work :(

Edited by markswift

Share this post


Link to post

I'm currently trying to get the IPMI plugin to work with my ASRock Rack EP2C612 WS dual socket motherboard (bios v2.50).  It sees the correct fan speeds, but when I hit configure the fan speeds don't change and it doesn't find any fans connected.  I've tried changing the bios setting from auto to manual, leaving each can on smart fan mode while in manual. Neither option allowed the IPMI plugin to work.  This is trying to use the native local connection, not over the network connection.

Any thoughts or tips to debug?

 

Edit: I tried the IPMI commands manually and they don't work/return an error so I submitted a support ticket to Asrock Rack support.  I'll update when I hear back about the correct IPMI commands.

@dmacias I ran the dmidecode command and the result is:

root@UnraidHost:/boot/config/plugins/ipmi# dmidecode -qt2|awk -F: '/^\tProduct Name:/ {print $2}'
 EP2C612 WS

So:
EP2C612 WS

Edited by Gunny
Contacted support

Share this post


Link to post

Got a reply from support and got it figured out.  To directly control the fans you use:

                                    cpu1  cpu2  REA1 ???? FNT1  FNT2 FNT3 FNT4
ipmitool raw 0x3a 0x01 0x00 0x00 0x00 0x00 0x20 0x00 0x00 0x00 (0x00 is auto, 0x64 is max like normal)

so its missing the first 0x00 that this tool uses.

 

I would guess that the ???? should be a Rear2 fan is the motherboard had one.

In terms of names, I'm seeing:

CPU1_FAN1

CPU2_FAN1

REAR_FAN1

FRNT_FAN1

FRNT_FAN2

FRNT_FAN3

FRNT_FAN4
 

Running the commands I did notice sometimes a valid command would return an error (most often if I sent a bad command right before), but if you retry a few times it will end up going through and controlling the fan correctly.

Again this is for the EP2C612 WS, I'm currently trying to figure out how to manually edit the json and cfg files to make this plugin work for my board command configuration

 

Here is an example output of a valid command failing:

root@UnraidHost:/boot/config/plugins# ipmitool raw 0x3a 0x01 0x01 0x00 0x00 0x00 0x35 0x00 0x00 0x00 #worked

root@UnraidHost:/boot/config/plugins# ipmitool raw 0x3a 0x01 0x01 0x00 0x00 0x00 0x35 0x00 0x00 0x00 #failed
Unable to send RAW command (channel=0x0 netfn=0x3a lun=0x0 cmd=0x1 rsp=0xc1): Invalid command
root@UnraidHost:/boot/config/plugins# ipmitool raw 0x3a 0x01 0x01 0x00 0x00 0x00 0x35 0x00 0x00 0x00 #worked

root@UnraidHost:/boot/config/plugins# 

And another type of failure:

root@UnraidHost:/boot/config/plugins# ipmitool raw 0x3a 0x01 0x64 0x00 0x00 0x00 0x35 0x00 0x00 0x00 #worked

root@UnraidHost:/boot/config/plugins# ipmitool raw 0x3a 0x01 0x00 0x00 0x00 0x00 0x35 0x00 0x00 0x00 #failed
Get Device ID command failed: 0xd6 Cannot execute command, command disabled
Unable to send RAW command (channel=0x0 netfn=0x3a lun=0x0 cmd=0x1 rsp=0xc1): Invalid command
root@UnraidHost:/boot/config/plugins# ipmitool raw 0x3a 0x01 0x00 0x00 0x00 0x00 0x35 0x00 0x00 0x00 #worked

root@UnraidHost:/boot/config/plugins# 

 

Edited by Gunny

Share this post


Link to post

I was able to get the ipmi2json to run properly by changing this line https://github.com/dmacias72/IPMI-unRAID/blob/60361056d4f75c6829f4ff590be6da0b49c2dfab/source/ipmi/usr/local/emhttp/plugins/ipmi/scripts/ipmi2json#L153 to if(TRUE) so it would try all 8 fan slots

The resulting board config is

{
    "ASRockRack": {
        "raw": "00 3a 01",
        "auto": "00 00 00 00 00 00 00 00",
        "full": "64 64 64 64 64 64 64 64",
        "fans": {
            "CPU1_FAN1": "01",
            "CPU2_FAN1": "01",
            "FAN_POS2": "01",
            "FAN_POS3": "01",
            "FRNT_FAN1": "01",
            "FAN_POS5": "01",
            "FAN_POS6": "01",
            "FAN_POS7": "01"
        }
    },
    "ASRockRack1": {
        "raw": "00 3a 11",
        "auto": "00 00 00 00",
        "full": "01 64 64 64",
        "fans": {
            "FRNT_FAN1": "11"
        }
    }
}

but I don't think the second board, ASRockRack1 is needed

 

In order to get ipmifan --full and --auto to work I had to remove the ; after the & on lines 208 and 232

https://github.com/dmacias72/IPMI-unRAID/blob/60361056d4f75c6829f4ff590be6da0b49c2dfab/source/ipmi/usr/local/emhttp/plugins/ipmi/scripts/ipmifan#L208

https://github.com/dmacias72/IPMI-unRAID/blob/60361056d4f75c6829f4ff590be6da0b49c2dfab/source/ipmi/usr/local/emhttp/plugins/ipmi/scripts/ipmifan#L232

 

Still working on getting the main loop of the ipmifan to see whats wrong.

Share this post


Link to post

I was finally able to get ipmifan working on my system.  the asrock hex to pwm routine kept adding an additional 01, so I added a switch based on the motherboard name.  @dmacias want me to open a PR?

ipmi2json ipmifan

Edited by Gunny

Share this post


Link to post

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...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.