风扇&散热 设置手动模式显示操作失败

web端设置手动模式后显示操作失败;
通过命令ipmcset -d fanmode -v 1显示报错:
The request failed due to an internal service error. The service is still operational.
Request failed.

设置过程中app.log没有抓到什么明显报错,参考论坛其他帖子认为是coolingconfig对象加载失败导致的,该问题如何继续定位?有没有什么解决办法?

答案内容由AI生成,仅供参考:

:pushpin: 补充建议

:red_question_mark: 为什么 SmartCoolingState 很重要?

  • SmartCoolingState 控制是否启用智能调速。
  • 若为 "Disabled",某些系统将禁止切换至手动模式或忽略设置。
  • 推荐设置为:
    "SmartCoolingState": "Enabled"
    
    即便使用手动模式,保持智能模式开启有助于系统兼容性。

:counterclockwise_arrows_button: 设置风扇手动模式的标准命令

# 设置为手动模式(mode=1),超时时间可选(单位:秒)
ipmcset -d fanmode -v 1 30

# 查看当前风扇信息
ipmget -d faninfo

参数说明:

  • -v 0: 自动模式
  • -v 1: 手动模式
  • -v 2: 混合模式
  • timeout: 可选,超时后自动恢复自动模式

:toolbox: 总结:故障处理清单

步骤 操作 目标
1 systemctl status cooling.service 检查服务是否失败
2 journalctl -u cooling 查看具体失败原因
3 检查 CoolingConfig.json 是否存在/格式正确 排除配置文件问题
4 systemctl status hica.service 确认依赖服务存在
5 修复或重装 hica 组件 解决资源缺失问题
6 重启 hicacooling 服务 恢复风扇管理功能
7 使用 ipmget -d faninfo 验证 确认模式设置成功

:green_circle: 最终结论:该问题是 CoolingConfig 配置对象加载失败 → 导致 cooling.service 启动失败 → 引发所有风扇控制命令失效 的典型表现。请优先修复配置文件和 hica 依赖服务

点击此处查看详细分析解答

风扇手动模式设置失败问题分析与解决方案

根据您描述的问题,在 web 端或通过命令行 ipmcset -d fanmode -v 1 设置风扇手动模式时出现“内部服务错误”(internal service error),且初步怀疑是 CoolingConfig 对象加载失败所致。以下是基于上下文信息的系统化定位思路和可行解决方案


:magnifying_glass_tilted_left: 问题核心定位

:white_check_mark: 已知关键线索

  1. 错误现象

    • Web 界面设置手动模式 → 操作失败。
    • 命令行执行:ipmcset -d fanmode -v 1 → 返回:
      The request failed due to an internal service error. The service is still operational.
      Request failed.
      
    • app.log 无明显报错。
  2. 重要线索来自论坛讨论

    CoolingConfig对象加载失败导致的”(来源:用户 WH11003,参考 ID:2)

  3. 系统服务状态关联性

    • cooling.service 依赖 CoolingConfig 配置对象。
    • CoolingConfig 加载失败 → cooling.service 启动失败 → 风扇控制功能不可用。
  4. 知识图谱支持

    • CoolingConfig 是现代 BMC 架构中核心的全局散热配置组件
    • cooling.service 失败的原因正是 CoolingConfig 加载失败
    • ipmcset -d fanmode 命令底层依赖 cooling.service 服务正常运行。

:puzzle_piece: 故障链推理(Failure Chain)

CoolingConfig 加载失败
        ↓
cooling.service 启动失败(Result: resources)
        ↓
风扇控制模块(Cooling Mgmt)无法初始化
        ↓
ipmcset -d fanmode / Web 界面设置均报 “内部服务错误”

即:根本原因在于 CoolingConfig 对象未能正确加载,导致整个冷却管理系统不可用


:hammer_and_wrench: 定位步骤(如何确认?)

请按以下顺序进行排查:

Step 1:检查 cooling.service 状态

systemctl status cooling.service

:white_check_mark: 预期结果
如果服务失败,会显示类似:

× cooling.service - cooling service
     Active: failed (Result: resources) since ...

:warning: 这是 CoolingConfig 加载失败的强信号。


Step 2:确认 CoolingConfig 是否存在并可读

查询配置对象路径(适用于 BMC Kepler 架构):

# 查看 CoolingConfig 存在性
ls /opt/bmc/configs/bmc.kepler.Systems.CoolingConfig.json
# 或检查 D-Bus 是否注册该对象(若有工具支持)
busctl list | grep CoolingConfig

:light_bulb: 提示:该文件若缺失、权限错误或格式非法,会导致加载失败。


Step 3:检查依赖服务 hica.service 是否存在

从日志可见:

Failed to schedule restart job: Unit hica.service not found.

hica.service 是 cooling.service 的依赖项。若其未安装或名字不匹配,也会导致失败。

执行:

systemctl status hica.service
ls /etc/systemd/system/hica.service

:cross_mark: 若服务不存在,则需重新部署 hica 组件(版本如 hica/1.70.14@openubmc/stable)。


Step 4:查看完整系统日志(补充 app.log 不足)

journalctl -u cooling.service --since "1 hour ago"
journalctl -b | grep -i "cooling\|config\|fail"

重点查找:

  • Failed to load CoolingConfig
  • CoolingConfig: parse error
  • hica.service not found

:white_check_mark: 解决方案建议

:white_check_mark: 方案一:修复 CoolingConfig 配置文件

  1. 定位文件:

    /opt/bmc/configs/bmc.kepler.Systems.CoolingConfig.json
    
  2. 检查 JSON 格式是否合法:

    python -m json.tool /opt/bmc/configs/bmc.kepler.Systems.CoolingConfig.json
    
  3. 确保关键字段存在且有效,例如:

    {
      "SmartCoolingState": "Enabled",
      "InitLevelInStartup": 30,
      "FanBoardNum": 2,
      "ManualLevel": 0,
      "TimeOut": 30
    }
    
  4. 修改后重启服务:

    systemctl restart hica.service
    systemctl restart cooling.service
    

:white_check_mark: 方案二:重新部署 hica 组件(若缺失)

hica.service 不存在:

  1. 确认软件包是否存在:

    grep hica /etc/package_info
    

    示例输出:

    hica/1.70.14@openubmc/stable#...
    
  2. 若缺失,请重新安装该组件包(通常为 .ipk.rpm 包):

    opkg install hica_1.70.14_*.ipk
    # 或
    rpm -ivh hica-1.70.14-*.rpm
    
  3. 启用并启动服务:

    systemctl enable hica.service
    systemctl start hica.service
    

:white_check_mark: 方案三:验证 ipmcset 命令能否正常工作

尝试使用 ipmcset 查询当前模式,确认命令本身可用:

ipmget -d faninfo

如果此命令也失败,则说明整个 IPMI 子系统异常,需进一步检查 ipmi.serviceubmc_assistant 是否正常。


:pushpin: 补充建议

:red_question_mark: 为什么 SmartCoolingState 很重要?

  • SmartCoolingState 控制是否启用智能调速。
  • 若为 "Disabled",某些系统将禁止切换至手动模式或忽略设置。
  • 推荐设置为:
    "SmartCoolingState": "Enabled"
    
    即便使用手动模式,保持智能模式开启有助于系统兼容性。

:counterclockwise_arrows_button: 设置风扇手动模式的标准命令

# 设置为手动模式(mode=1),超时时间可选(单位:秒)
ipmcset -d fanmode -v 1 30

# 查看当前风扇信息
ipmget -d faninfo

参数说明:

  • -v 0: 自动模式
  • -v 1: 手动模式
  • -v 2: 混合模式
  • timeout: 可选,超时后自动恢复自动模式

:toolbox: 总结:故障处理清单

步骤 操作 目标
1 systemctl status cooling.service 检查服务是否失败
2 journalctl -u cooling 查看具体失败原因
3 检查 CoolingConfig.json 是否存在/格式正确 排除配置文件问题
4 systemctl status hica.service 确认依赖服务存在
5 修复或重装 hica 组件 解决资源缺失问题
6 重启 hicacooling 服务 恢复风扇管理功能
7 使用 ipmget -d faninfo 验证 确认模式设置成功

:books: 参考资料

  • [openUBMC 散热管理开发指南(非直接提供,建议查阅项目文档)]
  • CoolingConfig 是 v3 架构核心配置对象(知识图谱确认)
  • Wwhh 等开发者已在社区多次指出 CoolingConfig 加载失败是此类问题的常见根源。

:green_circle: 最终结论:该问题是 CoolingConfig 配置对象加载失败 → 导致 cooling.service 启动失败 → 引发所有风扇控制命令失效 的典型表现。请优先修复配置文件和 hica 依赖服务

  1. 若无法继续定位,请提供对应日志;
  2. 若CoolingConfig对象不存在,可能会下发失败;

20260512-0631.tar.gz (5.0 MB)
这台机器是有两个风扇板,coolingconfig对象加载失败,发现是psr没正常加载导致的,现在psr加载之后仍然无法正常进行手动模式调速。

日志无法下载。
两个风扇板的话,CoolingConfig中的FanBoardNum是否正确配置

确认了加载的psr的FanBoardNum是2
目前发现问题现象变了,web端以及通过ipmcset 命令不会发生操作失败等报错,日志上会显示Set all fan level successfully,但实际上期望速率比以及占空比等信息并未发生改变;

通过smc命令字单独配置风扇pwm可以改变风扇占空比,无法改变期望速率比。

G620KV2_20260512-0800.tar.gz (5.2 MB)

通过SMC命令字能下发成功,那么排查确认CSR文件中的SMC命令字配置是否正确

smc命令字配置应该没有问题
直接用配置的offset作为参数下发都可以使用
现在就是web和ipmcset手动模式都显示成功无报错,但风扇实际pwm不改变

请对应提供一下设置手动模式和手动模式对应转速的日志,以及对应时间已供定位。

SetPWMCmd这儿应该配置成0x18001100 对应的10进制402657536吧

这两天修复别的问题之后现象又改变了。
操作时间:2026/05/15 06:18 (UTC+00:00)

操作内容:web页面风扇设置手动模式、ipmcset -d fanmode -v 1 0、ipmcset -d fanlevel -v 20

现象:web显示操作失败;命令显示The request failed due to an internal service error. The service is still operational. Request failed.、Set fan(255) level(20) failed. Current Mode: Auto

之前这个问题的解决方式是重新加载了psr让coolingconfig加载出来,现在coolingconfig加载出来了仍然无法设置手动模式,smc仍可下发pwm。
日志已发需要审核。

0x18001100是查询所有风扇PWM吧
这里我的理解是设置所有风扇PWM,对应0x18001200

操作时间:2026/05/15 06:18 (UTC+00:00)

操作内容:web页面风扇设置手动模式、ipmcset -d fanmode -v 1 0、ipmcset -d fanlevel -v 20

现象:web显示操作失败;命令显示The request failed due to an internal service error. The service is still operational. Request failed.、Set fan(255) level(20) failed. Current Mode: Auto

G620KV2_20260515-0620.tar.gz (7.4 MB)

0x18001100 对应的10进制402657536用这个值试试

尝试了一下好像没有解决问题,现象和前面一致
另外单独用call Smc_FanBoard2SMC_010107 bmc.kepler.Chip.BlockIO Write 0 402657536 1 89命令
pwm也没有变化
在使用call Smc_FanBoard2SMC_010107 bmc.kepler.Chip.BlockIO Write 0 402657792 1 89后可以看到所有风扇的pwm都变成了89

我也观察到华为的风扇板csr配置这里就是402657792

那就得确认,下发使用的资源协作接口的插件是否使用的该对应SMC命令字

thermal_mgmt中对应风扇转速下发的接口加上对应日志确认,当前下发卡在哪一个步骤

问题应该源于psr,耳板自带psr不匹配,即使模拟加载正确的psr文件后,coolingconfig等对象被加载仍然不能正确设置手动模式;
解决了psr升级的问题后该问题也一同被解决

1 个赞

当前SR适配还是会存在一定的坑,比如风扇板个数,风扇id这些,可形成总结分享至社区

2 个赞