Package Details: smfc 3.4.0-1

Git Clone URL: https://aur.archlinux.org/smfc.git (read-only, click to copy)
Package Base: smfc
Description: Supermicro Fan Control
Upstream URL: https://github.com/petersulyok/smfc
Keywords: control fan fancontrol ipmi pwm supermicro
Licenses: GPL3
Submitter: ewout
Maintainer: ewout
Last Packager: ewout
Votes: 3
Popularity: 0.54
First Submitted: 2022-12-28 23:11 (UTC)
Last Updated: 2024-01-03 17:53 (UTC)

Latest Comments

a1678991 commented on 2024-07-14 10:18 (UTC) (edited on 2024-07-16 16:49 (UTC) by a1678991)

Update: ipmitool-1.8.19-4 fixes this problem.

In my configuration, smfc-3.4.0-1 seems to be incompatible with ipmitool-1.8.19-3.

Unless I downgrade to ipmitool-1.8.19-2, I get the following error when starting smfc and the fans are not controlled.

smfc.service[8099]: Logging module was initialized with:
smfc.service[8099]:    log_level = 3
smfc.service[8099]:    log_output = 2
smfc.service[8099]: Command line arguments:
smfc.service[8099]:    original arguments: /opt/smfc/smfc.py -c /opt/smfc/smfc.conf -l 3
smfc.service[8099]:    parsed config file = /opt/smfc/smfc.conf
smfc.service[8099]:    parsed log level = 3
smfc.service[8099]:    parsed log output = 2
smfc.service[8099]: Ipmi module was initialized with:
smfc.service[8099]:    command = /usr/bin/ipmitool
smfc.service[8099]:    fan_mode_delay = 5
smfc.service[8099]:    fan_level_delay = 2
smfc.service[8099]:    swapped_zones = False
smfc.py[8099]: Traceback (most recent call last):
smfc.py[8099]:   File "/opt/smfc/smfc.py", line 1070, in <module>
smfc.py[8099]:     service.run()
smfc.py[8099]:   File "/opt/smfc/smfc.py", line 1023, in run
smfc.py[8099]:     old_mode = self.ipmi.get_fan_mode()
smfc.py[8099]:                ^^^^^^^^^^^^^^^^^^^^^^^^
smfc.py[8099]:   File "/opt/smfc/smfc.py", line 222, in get_fan_mode
smfc.py[8099]:     raise RuntimeError(r.stderr)
smfc.py[8099]: RuntimeError: Failed to initialize the OEM info dictionary
smfc.service[8099]: smfc terminated: all fans are switched back to the 100% speed.
systemd[1]: smfc.service: Main process exited, code=exited, status=1/FAILURE

ewout commented on 2023-04-17 22:32 (UTC) (edited on 2023-04-17 22:45 (UTC) by ewout)

@a1678991 Done! Created the pacman-hook-reload-modules AUR package and this package now depends on that.

ewout commented on 2023-04-17 19:16 (UTC)

@a1678991 Ideally this should be handled using an alpm/pacman hook, i'll create another AUR package for that and depend on it!

a1678991 commented on 2023-04-17 18:46 (UTC)

@ewout Thank you for the update. I have installed the smfc 2.3.1-2 in my environment and confirmed that the kernel module settings have been added and it works fine after reboot.

However, I think the same error may occur if a user installs smfc and then starts the smfc service without ever rebooting. This is because installing the package creates a configuration file, but does nothing itself. Running systemctl restart systemd-modules-load.service after installation or just reboot the system will load the modules listed in the /usr/lib/modules-load.d/smfc.conf file. If the user starts/restarts the service after these, smfc will work correctly.

Since most of the problems should have been solved, it is not clear if this should be addressed with a few tricks. For example, create a systemd unit to load the module.

ewout commented on 2023-04-17 10:27 (UTC)

@a1678991 Done. /usr/lib/modules-load.d/smfc.conf is now included.

ewout commented on 2023-04-17 10:15 (UTC)

@a1678991 Good catch. Will do. Thanks for reporting!

a1678991 commented on 2023-04-17 05:14 (UTC) (edited on 2023-04-17 05:17 (UTC) by a1678991)

Hello. I have an error when I enable the HDD temperature setting. It was resolved by modprobe drivetemp in my environment, so you may need to include the module loading settings in your package.

smfc2.3.1-1

systemd[1]: Started Super Micro Fan Control.
smfc.py[1470173]: Traceback (most recent call last):
smfc.py[1470173]:   File "/opt/smfc/smfc.py", line 933, in <module>
smfc.py[1470173]:     main()
smfc.py[1470173]:   File "/opt/smfc/smfc.py", line 909, in main
smfc.py[1470173]:     my_hd_zone = HdZone(my_log, my_ipmi, my_config)
smfc.py[1470173]:   File "/opt/smfc/smfc.py", line 662, in __init__
smfc.py[1470173]:     super().__init__(
smfc.py[1470173]:   File "/opt/smfc/smfc.py", line 378, in __init__
smfc.py[1470173]:     self.build_hwmon_path(hwmon_path)
smfc.py[1470173]:   File "/opt/smfc/smfc.py", line 744, in build_hwmon_path
smfc.py[1470173]:     raise ValueError(self.ERROR_MSG_FILE_IO.format(path))
smfc.py[1470173]: ValueError: Cannot read file (/sys/class/scsi_disk/10:0:3:0/device/hwmon/hwmon*/temp1_input).
systemd[1]: smfc.service: Main process exited, code=exited, status=1/FAILURE

$sudo modprobe drivetemp

systemd[1]: Started Super Micro Fan Control.
smfc.service[2511014]: CPU zone: new level > 30.0C > [T:30.0C/L:20%]
smfc.service[2511014]: HD zone: new level > 28.8C > [T:26.25C/L:32%]

$uname -rvmo 6.1.24-1-lts #1 SMP PREEMPT_DYNAMIC Thu, 13 Apr 2023 17:22:35 +0000 x86_64 GNU/Linux