富士通 PRIMERGY TX1320 M4 调整风扇转速

开篇废话

这玩意夏天实在是太 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 的调整风扇真麻烦,跑了。