开篇废话
这玩意夏天实在是太 J8 吵了,所以研究了下如何调整转速。 ~~ 主要看个世界杯都不安宁~~
具体过程不分享了,反正就是有个脚本给 IPMI 发命令,所以你需要 Python、ipmitool 和 lm_sensors。
正文
项目在这里:
https://github.com/makeding/fujitsu-1320-m4-fancontrol
环境
我这里成功的环境是:
- FUJITSU PRIMERGY TX1320 M4
- iRMC S5 Firmware Revision 3.31P (1.00)
- SDR 3.40
其他 iRMC 固件版本、机型不保证可用。
无保证。
依赖
Debian / Ubuntu:
apt install git python3 ipmitool lm-sensors
sensors-detect
NixOS 大概是:
environment.systemPackages = with pkgs; [
python3
ipmitool
lm_sensors
];
确认能看到温度:
sensors
我这台主要看 Mellanox 网卡温度,类似这样:
mlx5-pci-0200
Adapter: PCI adapter
sensor0: +81.0°C (crit = +105.0°C, highest = +81.0°C)
coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +41.0°C (high = +86.0°C, crit = +100.0°C)
手动调速
安装:
git clone https://github.com/makeding/fujitsu-1320-m4-fancontrol.git
cd fujitsu-1320-m4-fancontrol
install -m 0755 irmc_fan.py /usr/local/sbin/irmc_fan.py
install -m 0755 irmc_fan_daemon.py /usr/local/sbin/irmc_fan_daemon.py
常用命令:
# 设成 40%
/usr/local/sbin/irmc_fan.py set 40
# 看当前风扇转速
/usr/local/sbin/irmc_fan.py sdr
# 还原 iRMC 自动控制
/usr/local/sbin/irmc_fan.py clear
简单守护
当然又写了一个小守护,循环跑 sensors,主要盯 mlx5-pci-0200:sensor0,尽量压在 85°C 内,同时看 CPU Package 和 PCH。
手动跑:
/usr/local/sbin/irmc_fan_daemon.py --interval 10
输出大概这样:
2026-06-30 02:04:25 pwm=45% want=45% mlx=81.0C mlx2=81.0C cpu=41.0C pch=59.0C
默认策略:
- mlx5 低于 75°C 时尽量安静
- 接近 85°C 开始明显升速
- 读不到 sensors 时直接升到 70%,避免传感器挂了还低速转
- 升速快、降速慢,避免转速来回抖
如果你的网卡 sensor 名字不一样,可以改参数:
/usr/local/sbin/irmc_fan_daemon.py \
--mlx-chip mlx5-pci-0200 \
--mlx-label sensor0
systemd
简单起一个服务:
[Unit]
Description=Fujitsu iRMC smart fan control
After=multi-user.target
[Service]
Type=simple
ExecStart=/usr/local/sbin/irmc_fan_daemon.py --interval 10 --min-pwm 30 --max-pwm 100
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
保存到:
/etc/systemd/system/irmc-fan-daemon.service
启用:
systemctl daemon-reload
systemctl enable --now irmc-fan-daemon.service
journalctl -u irmc-fan-daemon.service -f
如果脚本放到了别的位置,改一下 ExecStart 里的路径即可。
结尾
这套不走标准 EC 的调整风扇真麻烦,跑了。
完